Cygwin 如何从CygPort构建src?

Cygwin 如何从CygPort构建src?,cygwin,gedit,ports,Cygwin,Gedit,Ports,我对cygport包的源代码的结构有一个问题 以下是Cygports源文件的内容: 项目的实际源包(tar.gz、tar.bz2等) 该文件包含任意数量的*.patch文件 一个.cygport文件 我正在尝试从cygports存储库构建gedit-3.4.2 .cygport文件如何帮助我在./configure中运行正确的选项 例如,在gedit中,如果我没有指定--disable-spell,它将由于错误而无法继续。如何获取生成cygport时用于生成项目的./configure选项列

我对cygport包的源代码的结构有一个问题

以下是Cygports源文件的内容:

  • 项目的实际源包(tar.gz、tar.bz2等)
  • 该文件包含任意数量的*.patch文件
  • 一个.cygport文件
我正在尝试从cygports存储库构建gedit-3.4.2

.cygport文件如何帮助我在./configure中运行正确的选项

例如,在gedit中,如果我没有指定--disable-spell,它将由于错误而无法继续。如何获取生成cygport时用于生成项目的./configure选项列表

是否有某种方法可以使用cygport可执行文件来构建cygport并更改前缀

以下是
gedit-3.4.2-1.cygport
的内容:

inherit python gnome2

DESCRIPTION="GNOME text editor"

PATCH_URI="3.4.2-cygwin.patch"

DEPEND="gnome-common gtk-doc
    girepository(Gtk-3.0)
    pkgconfig(enchant)
    pkgconfig(gtksourceview-3.0)
    pkgconfig(libpeas-gtk-1.0)"

PKG_NAMES="${PN} ${PN}-devel"
PKG_HINTS="setup devel"
gedit_CONTENTS="--exclude=gtk-doc --exclude=libgedit* etc/ usr/bin/ usr/lib/gedit/ ${PYTHON_SITELIB#/} usr/share/"
gedit_devel_CONTENTS="usr/include/ usr/lib/gedit/libgedit* usr/lib/pkgconfig/ usr/share/gtk-doc/"

DIFF_EXCLUDES="*.desktop.in *.schemas.in *-marshal.h"

CYGCONF_ARGS="--libexecdir=/usr/lib --enable-python"

KEEP_LA_FILES="none"
编辑Cygwin Ports邮件列表中有人说:

“配置选项包括:

--libexecdir=/usr/lib --enable-python
来自CYGCONF_ARGS。“

以下是Cygports源文件的内容:

最好将其视为Cygwin包源文件

cygport
只是一个自动创建Cygwin二进制和源代码包的工具。它是可用的主要工具,但与其他一些打包系统不同,没有什么强迫您使用它。完全手工构建Cygwin包是很有可能的,因为Cygwin的
setup.exe
只不过是一个tarball,它可以盲目地解压到Cygwin根目录(通常是
c:\Cygwin
)中,并期望将包的文件放在合理的位置

cygport
存在之前,人们确实建立了自己的特殊包装系统。许多Cygwin软件包维护人员仍然使用他们创建的这些工具。(包括您的软件包;我的三个软件包中有两个使用
cygport
,但第三个仍然使用自定义构建系统。)

最后,您需要阅读
/usr/share/doc/cygport/manual.html
中的
cygport
手册

(是的,我知道,“RTFM”的答案在这里是不受欢迎的。但是,作为目前在官方Cygwin软件包存储库中维护两个基于
cygport
的软件包的人,请相信我,当我告诉你手册仍然是关于这个主题的最佳资源时。)

.cygport文件如何帮助我在./configure中运行正确的选项

通过其他资源发现,首先需要编辑
.cygport
文件中的
CYGCONF_ARGS

之后最简单的步骤是
cygport-gedit-3.4.2-1.cygport-all
。它试图在一个步骤中重建所有二进制软件包。它还构建了一个新的源代码包,其中包含更新的
.cygport
和补丁文件

如果在
all
构建过程中出现故障,通常切换到使用
all
中包含的子命令会更快,而不是完全重新启动该过程。
all
步骤只是按顺序为您运行
prep
compile
install
package
finish
。例如,如果编译步骤中
all
失败,则可能不需要重复
prep
步骤

(异常罕见的是,
cygport
或一个健全的构建系统破坏构建树,迫使您重新运行
prep
。更常见的是,当您在尝试首次构建新包时手动破坏构建树并需要重新开始时,您最终需要重新执行
prep
。)

例如,在gedit中,如果我没有指定--disable-spell,它将由于错误而无法继续

您可能可以通过从官方Cygwin软件包存储库安装
libaspell-devel
软件包来解决这个问题

就我个人而言,我不会禁用任何功能,除非它意味着安装非官方软件包,如项目中的软件包。[*]拥有Cygwin Ports repository很好,但因为它包含如此多的软件包,安装一个软件包可能会导致“安装世界”的情况:软件包A依赖于软件包B、C和D,而C依赖于E、F,G,H,G依赖于I,J,K,和。。。Cygwin包repo中的依赖关系层次结构比Cygports repo中的依赖关系层次结构更平坦、更窄

是否有某种方法可以使用cygport可执行文件来构建cygport并更改前缀

我相信,您已经猜到您刚刚将
--prefix=/my/private/program/tree
添加到
CYGCONF_ARGS


[*]如果您对“Cygwin端口”和
cygport
感到困惑,那么命名相似性并非巧合
cygport
是Yaakov Selkowitz在创建Cygwin Ports包存储库时为自己创建的工具。后来,它在其他Cygwin软件包维护者中变得足够流行,从而淘汰了大多数竞争性的构建系统