9

我对 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。”

4

1 回答 1

18

这是 Cygports 源文件的内容:

您最好将其视为Cygwin包源文件。

cygport只是一个用于自动创建 Cygwin 二进制和源包的工具。它是可用的主要工具,但与其他一些打包系统不同,实际上没有任何东西强迫您使用它。完全手动构建 Cygwin 包是完全可能的,因为它实际上只不过是一个 tarball,Cygwinsetup.exe可以盲目地解压到 Cygwin 根目录(通常是c:\cygwin.

cygport存在之前,人们确实建立了自己的临时包装系统。许多 Cygwin 包维护者仍然使用他们创建的这些工具。(真正包括你的;我的三个包中的两个使用cygport,但第三个仍然使用自定义构建系统。)

最终,您想阅读cygport手册,在/usr/share/doc/cygport/manual.html.

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

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

正如您通过其他资源发现的那样,您首先需要编辑文件CYGCONF_ARGS中的值.cygport

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

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

cygport(对于一个健全的构建系统来说,破坏构建树,迫使您重新运行是非常罕见的。更常见的是,当您在尝试获取新包时手动破坏构建树时,prep最终需要重新执行第一次构建,需要重新开始。)prep

例如,在 gedit 中,如果我没有指定 --disable-spell,它不会因为错误而继续。

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

就个人而言,我不会禁用任何功能,除非它意味着安装非官方软件包,例如来自Cygwin Ports项目的软件包。[*] 拥有 Cygwin Ports 存储库很好,但是因为它包含这么多软件包,所以安装一个可能会结束创建一个“安装世界”的情况:包 A 依赖于包 B、C 和 D,而 C 依赖于 E、F、G、H,而 G 依赖于 I、J、K 和... Cygwin 包回购往往比 Cygports 回购中的更扁平和更窄。

有什么方法可以使用 cygport 可执行文件来构建 cygport 并更改前缀吗?

你已经猜到你只是添加--prefix=/my/private/program/treeCYGCONF_ARGS,我相信。


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

于 2012-07-26T22:18:58.260 回答