Как собрать src из CygPort?

У меня есть вопрос о структуре исходного кода из пакета cygport.

Вот содержимое исходного файла Cygports:

  • актуальный исходный код для проекта (tar.gz, tar.bz2 и т. д.)
  • любое количество файлов *.patch.
  • файл .cygport

Я пытаюсь собрать gedit-3.4.2 из репозитория cygports.

Как файл .cygport помогает мне запускать правильные параметры в ./configure?

Например, в gedit, если я не укажу --disable-spell, он не будет продолжен из-за ошибки. Как получить список параметров ./configure, которые использовались для сборки проекта при создании cygport?

Есть ли способ использовать исполняемый файл 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"

EDIT Кто-то из списка рассылки Cygwin Ports сказал:

"Параметры настройки

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

Это из CYGCONF_ARGS».


person Nicholas DiPiazza    schedule 23.07.2012    source источник


Ответы (1)


Вот содержимое исходного файла Cygports:

Лучше думать об этом как об исходном файле пакета Cygwin.

cygport — это просто инструмент для автоматизации создания бинарных и исходных пакетов Cygwin. Это основной доступный инструмент, но, в отличие от некоторых других систем упаковки, на самом деле ничто не заставляет вас его использовать. Вполне возможно собрать пакет Cygwin полностью вручную, поскольку на самом деле это не более чем архив, который Cygwin setup.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 и finish в указанном порядке. Например, если 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/tree к CYGCONF_ARGS, я надеюсь.


[*] Если вас смущают «Порты Cygwin» и cygport, сходство названий не случайно. cygport — это инструмент, созданный Яаковом Селковицем для себя при создании репозитория пакетов Cygwin Ports. Позже он стал настолько популярен среди других сопровождающих пакетов Cygwin, что вытеснил большинство конкурирующих систем сборки.

person Warren Young    schedule 26.07.2012