2012-07-23 15 views
6

Tengo una pregunta sobre la estructura del código fuente de un paquete cygport.Cómo construir src desde un CygPort?

Aquí es el contenido de un archivo de origen Cygports:

  • el paquete fuente real para el proyecto (tar.gz, tar.bz2, etc.)
  • el cualquier número de archivos * .patch .
  • un archivo .cygport

Estoy tratando de construir gedit-3.4.2 de cygports repositorio.

¿Cómo me ayuda el archivo .cygport a ejecutar las opciones adecuadas en ./configure?

Por ejemplo, en gedit si no especifico --disable-spell no continuará debido a un error. ¿Cómo obtengo la lista de opciones de configuración/configuración que se utilizaron para construir el proyecto cuando se construyó el cygport?

¿Hay alguna manera en que podamos usar el ejecutable cygport para construir el cygport y cambiar el prefijo también?

Aquí es el contenido de 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" 

EDITAR Alguien de Puertos de Cygwin lista de correo, dijo:

"Las opciones de configuración son

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

que es de CYGCONF_ARGS. "

Respuesta

16

Aquí es el contenido de un archivo de origen Cygports:

Harías mejor pensar en él como un archivo de origen del paquete de Cygwin .

cygport es simplemente una herramienta para automatizar la creación de paquetes fuente y binarios de Cygwin. Es la herramienta principal disponible, pero a diferencia de otros sistemas de empaque, realmente no hay nada que lo obligue a usarlo. Es muy posible construir un paquete Cygwin completamente a mano, ya que no es más que un tarball que Cygwin's setup.exe puede desempaquetar ciegamente en el directorio raíz de Cygwin (típicamente c:\cygwin) con la expectativa de que esto colocará los archivos del paquete en ubicaciones sensatas .

Antes de que existiera cygport, las personas construyeron sus propios ad hoc sistemas de embalaje. Muchos mantenedores de paquetes Cygwin aún usan estas herramientas que crearon. (El suyo verdaderamente incluido, dos de mis tres paquetes usan cygport, pero el tercero todavía usa un sistema de compilación personalizado.)

En última instancia, desea leer el manual cygport, en /usr/share/doc/cygport/manual.html.

(Sí, lo sé, las respuestas "RTFM" están mal vistas aquí.Pero, como el que actualmente mantiene dos cygport paquetes basados ​​en el repositorio oficial paquete de Cygwin, por favor, créanme cuando les digo que el manual sigue siendo la única mejor recurso disponible sobre este tema.)

¿Cómo funciona el. archivo cygport me ayuda a ejecutar las opciones adecuadas en ./configure?

Como descubriste a través de otros recursos, que primero había necesidad de modificar el valor CYGCONF_ARGS en el archivo .cygport.

El paso más simple posible después de eso es cygport gedit-3.4.2-1.cygport all. Que intenta reconstruir todos los paquetes binarios en un solo paso. También crea un nuevo paquete fuente que contiene .cygport actualizado y archivos de parche.

Si algo se rompe en el proceso de compilación all, generalmente es más rápido cambiar a utilizar los subcomandos que contiene all en lugar de reiniciar completamente el proceso. El paso all solo ejecuta prep, compile, install, package y finish para usted, en ese orden. Por ejemplo, si all falla durante el paso de compilación, probablemente no sea necesario repetir el paso prep.

(es excepcionalmente raro que cygport o un sistema de construcción cuerdo para destruir el árbol de construcción, lo que obligó a volver a ejecutar prep. Mucho más comúnmente, se termina necesidad de volver a hacer prep cuando manualmente naufragio del árbol de compilación mientras intenta obtener un nuevo paquete para compilar por primera vez y necesita comenzar de nuevo.)

Por ejemplo, en gedit si no especifico --deshair-hechizo no continuará debido al error

Probablemente se puede arreglar eso instalando el paquete libaspell-devel desde el repositorio oficial paquete de Cygwin con setup.exe.

Personalmente, no desactivo ninguna característica a menos que implique la instalación de paquetes no oficiales, como los del proyecto Cygwin Ports. [*] Es bueno tener el repositorio de Cygwin Ports, pero como contiene tantos paquetes, instalar uno puede terminar creando una situación de "instalar el mundo": el paquete A depende de los paquetes B, C y D, y C depende de E, F, G, H y G depende de I, J, K y ... Dependencia las jerarquías dentro del repositorio del paquete Cygwin tienden a ser más planas y más estrechas que las del repositorio de Cygports.

¿Hay alguna manera en que podamos usar el ejecutable cygport para construir el cygport y cambiar el prefijo también?

Has adivinado que acaba de añadir a --prefix=/my/private/program/treeCYGCONF_ARGS, confío.


[*] Si se siente confundido acerca de Cygwin "Puertos" y cygport, la similitud de nombres es ninguna coincidencia. cygport es una herramienta creada por Yaakov Selkowitz para sí mismo al crear el repositorio de paquetes de Cygwin Ports. Más tarde, se hizo lo suficientemente popular entre otros mantenedores de paquetes Cygwin que expulsó a la mayoría de los sistemas de compilación de la competencia.

+1

Muy buena respuesta.Lo usé como 5 veces ya. –

Cuestiones relacionadas