Aprender a portar Suavemente. 1

Una breve introducción a Haikuporter # 1

Traduccion.

Artículo aportado por arfonzo el Dom, 10/27/2013 13:39  haikuporter , haikuports , receta , recetas
¿Así que quieres aprender a utilizar Haikuporter y escribir recetas, eh?

Acerca de esta serie.

Se trata de una serie de artículos sobre el uso de tutoriales Haikuporter. Estoy con el objetivo de publicar artículos de forma quincenal o mensual.

Espero que esta serie sirva de ayuda a otros que no se consideran a sí mismos programadores incondicionales, pero les gustaría entrar en Haikuporter. Es una gran manera de contribuir, experimentar con el software, y no requiere de un profundo conocimiento de la codificación en muchos casos.

haikuporter es una herramienta que le permite construir proyectos comunes envasados ​​para Haiku. Se utiliza el repositorio haikuports como base para todos los paquetes.

Las recetas se utilizan en haikuporter para construir paquetes. Paquetes tienen sus archivos de recetas correspondientes, y dónde buscar las fuentes,  los parches a aplicar, cómo configurar, compilar e instalar el proyecto. El archivo de la receta puede ser distribuida y utilizada por otras personas para construir el mismo paquete.

En resumen, haikuporter construirá y preparará un enpaquetado Haiku. Hpkg para su distribución.

Introducción.

En primer lugar, gracias por empezar la lectura de estos tutoriales. Espero que yo pueda contestar algunas de sus preguntas, y algunos de los problemas y soluciones comunes que puede correr, mientras que haikuportas  toda la noche!

Mi objetivo es agrandar mi red lo más amplia posible para llegar a la audiencia más grande que pueda. Dicho esto, hay algunas pequeñas suposiciones que hago, en toda esta serie.

Se necesita algo de conocimiento básico de desarrollo y git.
Usted necesita sentirse cómodo trabajando con Haiku.
Es necesario tener paciencia.

Algunos antecedentes sobre el autor: Yo soy de ninguna manera un desarrollador, ni soy alguien muy familiarizado con git, C / C + +, y nada de esto otra magia negro. Soy sólo un promedio llamado  Joe Schmoe, que utiliza todos los días Haiku.

Créditos.

Esta serie no podría haber sido escrito sin la ayuda de PulkoMandy, que siempre ha sido paciente y minucioso al contestar mis cientos - si no miles - de preguntas ... Así que gracias muchly PulkoMandy! :)

También gracias a buzo que ha igualmente, ha sido una fuente de mucha información a través de los años, y me ha animado a escribir esta serie.

... Waffle Enough --- vamos a entrar en el maravilloso mundo de Haikuporter!

Requisitos.

Usted tendrá que configurar haikuporter y haikuports.
Si usted está usando imágenes Haiku nocturnas, se sugiere que se actualice a una revisión reciente en el que  ya la rama de gestión de paquetes se haya fusionado en la rama principal.
Debe haber leído en su totalidad la página wiki para construir recetas , aquí:

Nota: esta serie debe leerse en conjunción a la página wiki arriba y no sirve como reemplazo.

Referencias.

Nos referiremos a su ubicación haikuports árbol de fuentes como $ TREE_PATH. Normalmente, esto se define en el archivo haikuports.conf. $ TREE_PATH se explica en la página wiki BuildRecipes.

Nos referiremos a la página Haikuporter PM Build Recetas referencia wiki como BuildRecipes. El enlace a esta página es:


... un marcador - se convertirá en su mejor amigo a medida que aprende las cositas de haikuporter.

Git él!

Para comenzar, debe instalar haikuporter y haikuports. Esto se hace por el acaparamiento de sus fuentes en git. El proceso está bien documentada, por favor siga las instrucciones * Manual * en la página siguiente.


Los conceptos básicos.

Dentro $ TREE_PATH, usted encontrará paquetes, organizados siguiendo el sistema de paquetes de Gentoo. Esto permite una manera ordenada mostrar proyectos en su categoría correspondiente.

Por ejemplo, el servidor web cherokee se puede encontrar en:

$ TREE_PATH
www - servidores / 
cherokee /

Al agregar un nuevo puerto, siga la jerarquía de aquí: http://packages.gentoo.org. Si el paquete no existe para gentoo, decida una presentación lógica razonable.

Acerca de los archivos de recetas.

Inspeccionar el fichero de receta, se puede ver las definiciones y los bloques de código de la terminal shell.

Las secciones del archivo de recetas corresponden a las diferentes etapas de la construcción, patch() tales como aplicacion de parches, build () para compilar, e install () para la instalación.

En la siguiente sección, mostraremos una muestra de recetas al descubierto, que pueden ser usadas para construir su propio archivo de receta.

Una receta al desnudo.(generalmente en ingles.)

RESUMEN = "ProjectX." 
DESCRIPCIÓN = "Descripción ProjectX." 
pagina = "http://projectX" 
SRC_URI = ":/ / ProjectX / projectX.git git" 
REVISION = "1" 
LICENCIA = "GNU GPL v2" 
COPYRIGHT = " "
ARQUITECTURAS = "x86 x86_gcc2"
PROPORCIONA = "
ProjectX = $ portVersion
"
REQUIRES = "
        haiku> = $ haikuVersion
        "
BUILD_REQUIRES = "
        haiku_devel
        "
# PARCHES = " 
# "
CONSTRUIR ( ) 
{
. / autogen. SH 
runConfigure. / configure
hacer $ jobArgs
}
INSTALAR ( ) 
{
make install
}
Examinar la receta.

La mayor parte de las variables / funciones se explican por sí mismas, por favor, consulte esta página para una explicación detallada y la sintaxis en la mayoría de las variables / funciones que se necesitan:


Vamos a examinar algunas de las definiciones y los bloques dentro de la receta:

Resumen, descripción, página de inicio:

Información genérica relacionada con el proyecto.
El resumen debe ser inferior a 70 caracteres.
La descripción puede fluir a través de múltiples líneas.
El viejo sistema no utilizó RESUMEN. Todas las recetas tienen un resumen de 70 caracteres o menos. Haikuporter le avisará si se excede 70 caracteres, pero se producirá un error de construcción si no tiene RESUMEN definido.
LICENCIA:

La licencia * debe * ser especificado en el formato adecuado. Cualesquiera otras cadenas se producirá un error.
Si ejecuta haikuporter con el argumento-S, mostrará una lista de licencias válidas al erroring.
SRC_URI:

Un enlace para descargar el archivo.
Esto puede ser URI comunes, como http, https, git, gits. Git URI debe apuntar a un hashtag compromiso específico en el repositorio git.
Aquí hay un ejemplo de cherokee, que utiliza un compromiso específico en lugar de lo último en el repositorio git:

SRC_URI = "git :/ / github.com / cherokee / webserver.git # 4119ec4e1b6ad29f0115c462d11ac20e36975f53" 
# 24 de octubre 2013 commit.
CHECKSUM_MD5:

Haikuporter lo utiliza para validar las fuentes descargadas.

Se utiliza generalmente para los archivos de origen, como en el SRC_URI es un. Tgz.
No se utiliza para los repositorios de control de origen, como en el SRC_URI es un repositorio git.
Arquitecturas(Architectures) y SECONDARY_ARCHITECTURES:

Se utiliza para definir qué plataformas estamos usando. Puede utilizarlos por ejemplo para establecer que sea:
gcc2h/gcc4h compatibles, pero no PPC:
ARQUITECTURAS = "x86_gcc2 x86! ppc"
gcc4 solamente.
ARQUITECTURAS = "x86"
gcc2 solamente.
ARQUITECTURAS = "x86_gcc2"
gcc2h o gcc4 o gcc4h, edificio con gcc4.
ARQUITECTURAS = "x86" x86_gcc2 
SECONDARY_ARCHITECTURES = "x86"
... o cualquier otra mezcla arquitectónica que te apetezca.
REQUIERE:

El sistema BEP dependen del tiempo utilizado , que ahora es similar a lo requerido.
Notas generales sobre el formato de archivo de receta:

# Denota un comentario, que se puede utilizar en la mayoría de lugares. Nótese cómo el bloque PARCHES está comentada en la receta al descubierto.
Nombres Receta: deben seguir el formato:
ProjectX - . 1.2.3 receta
Actualmente hay errores que deben ser reportados y aplastado. Si algo no está funcionando como usted piensa que debería hacerlo, por favor envía un ticket:
http://bb.haikuports.org/haikuporter/issues?status=new&status=open

Hacer el trabajo de recetas para el Proyecto X.

Muchos proyectos se desvían de la norma de configurar; hacen; make install, rutina, y como tal, tendrá que dar cuenta de las opciones de configuración específicos, caminos y otras alegrías, al portar en Haiku.

Las secciones de la receta al descubierto que por lo general requieren. Faltan algunos de ellos, tales causará la acumulación de fracasar, a veces horriblemente sin error significativo.

Modificar la receta para su proyecto: ir a través de cada sección, sustituya los valores y el código según sea necesario.

Para obtener una referencia de las variables, las funciones y la sintaxis, consulte: http://bb.haikuports.org/haikuports/wiki/HaikuPorterForPM/BuildRecipes

Mientras que usted está aprendiendo los entresijos de Haikuporter, se sugiere que se quede con el software fácil de transportar. Averiguar lo que está mal en una fuente de receta o proyecto, lo que falta, y cómo resolver, a veces son tareas difíciles que es mejor evitar hasta que se familiarice con el sistema.

Requiere, proporciona, y todo lo que galimatías.

Centrémonos por un momento en PRESENTACION, requiere y BUILD_REQUIRES.

PROPORCIONA permite Haikuporter saber qué paquetes, los comandos, las bibliotecas, etc, su receta se proporcionan.

Por ejemplo, podría proporcionar package:

paquete: package
binarios: package-fluffer, package-defluffer.
bibliotecas: libpackageA.
Esto se traduce en un bloque de PROPORCIONA:

PROPORCIONA = "
package = $ portVersion
cmd: package-fluffer = $ portVersion
cmd: package-defluffer = $ portVersion
lib: libpackageA = $ portVersion
"
REQUIRES le Haikuporter saber cuáles son los requisitos del paquete son. Por ejemplo, podría requerir package:

paquete: ncurses, python.
binarios: python, fortuna.
bibliotecas: libncurses.
Esto se traduce en un bloque requiere de:

REQUIRES = "
haiku> = $ haikuVersion 
ncurses
pitón
cmd: python
cmd: fortuna
lib: libncurses
"
Tenga en cuenta que, normalmente, se le requiere el paquete 'haiku'.

BUILD_REQUIRES es similar a lo requiere, sino que define lo que la receta tiene que construirse a sí misma. Por ejemplo, package puede requerir la construcción:

paquete: gettext, python.
binarios: autoconf, gcc, g+ +, make, python, sed.
bibliotecas de desarrollo: libssl.
Esto se traduce en un bloque BUILD_REQUIRES de:

BUILD_REQUIRES = "
haiku_devel> = $ haikuVersion 
gettext
pitón
cmd: autoconf
cmd: gcc
cmd: g+ +
cmd: hacer
cmd: python
cmd: sed
devel: libssl
"
Tenga en cuenta que normalmente, usted necesita el paquete 'haiku_devel' para construir.

El build () bloque.

Esta parte de la receta es similar a la ". / Configure; hacen" partes de una norma de vainilla construir. Aquí es donde usted le dice la receta de cómo configurar el build y ejecute la construcción de sí mismo.

A los efectos de este artículo inicial, vamos a suponer el caso más simple. Digamos que ProjectX utiliza los siguientes comandos simples:

. / Configure - XFACTOR = DataDirectory
hacer
Es necesario un argumento de XFACTOR, junto con los argumentos de configure estándar. Normalmente, tendríamos que desmenuzar los argumentos de configure y el guión, para señalar los caminos Haiku correctos. Por lo general, usted puede encontrar opciones de configure tales como (ejemplo tomado del script de configuración de cherokee):

- Bindir = DIR
- Sbindir = DIR
- Libexecdir = DIR
- Sysconfdir = DIR
- Sharedstatedir = DIR
- Localstatedir = DIR
- Libdir = DIR    
- Includedir = DIR
- Oldincludedir = DIR
- Datarootdir = DIR
- Datadir = DIR
- Infodir = DIR
- Localedir = DIR
- Mandir = DIR
- Docdir = DIR
- Htmldir = DIR
- Dvidir = DIR
- Pdfdir = DIR
- Psdir = DIR
Introduzca, haikuporter! Esto hace que sea mucho más fácil para nosotros, haciendo un montón de trabajo en segundo plano y que pasa los caminos Haiku de usar automáticamente el script de configuración.

En lugar de ejecutar. / Configure - bindir = blah2 - sbindir = blah2 etc .., podemos simplemente utilizar la función de recetas runConfigure () para tapar un montón de esto por nosotros automáticamente.

Para ponerlo todo junto, entonces tendríamos un build () bloque parecido:

CONSTRUIR ( ) 
{
echo "Ejecución de configurar ..." 
runConfigure. / configure - XFACTOR = $ { DATADIR }
echo "Ejecución de hacer $ {} jobArgs ..."
hacer $ jobArgs
}
Tenga en cuenta que podemos utilizar variables para nosotros, por ejemplo, $ DATADIR ayudar. Consulte BuildRecipes para más información sobre cada variable. Siempre es preferible utilizar estas variables, en lugar de rutas codificadas. Esto asegurará que los cambios en las estructuras de directorio para Haiku no se rompa su paquete.

Pasamos XFACTOR través runConfigure () para el script. / Configure.

Con "hacer $ jobArgs" le permitirá pasar argumentos-J para haikuporter, como "-j4".

Tenga en cuenta que puede utilizar llaves para ayudar al intérprete. Esto puede ser necesario para distinguir cáscara a partir de variables de receta. Se pueden usar indistintamente: aquí hemos usado $ {jobArgs} y $ jobArgs. A veces se necesita * * llaves para asegurar la variable correcta obtiene analizando.

Bloque de la instalación ().

Esta parte de la receta es similar a la "make install" partes de una norma de vainilla construir. Aquí es donde usted le dice la receta de cómo instalar los archivos construidos: binarios, bibliotecas, archivos de configuración, datos, etc.

Es muy importante instalar en los lugares adecuados, y vamos a profundizar en este tema en un artículo posterior.

Digamos que ProjectX utiliza los siguientes comandos simples de instalar:

make install
El INSTALL () bloque serían entonces parecerse:

INSTALAR ( ) 
echo "Running make install ..."
make install
}
La construcción de la receta.

Ahora que hemos creado la receta, podemos tratar de construirlo.

Ejecutar:

haikuporter-S ProjectX-1.2.3
Ejecutar siempre en modo estricto, con la opción "-S". Si usted choca con errores, puede proporcionar información acerca de lo que salió mal y cómo arreglarlo.

Por errores, vaya a través de la salida de cuidado, y ver qué pasa. En próximos artículos voy a cubrir algunos errores comunes, lo que significan, y cómo podrían resolverse. Por ahora, por favor busque ayuda, ya sea en las listas de correo o en el IRC. Consulte la sección de solución de problemas simples abajo para algunos consejos básicos.

Con suerte, su paquete se va  a construir con éxito dejndole con dos archivos hpkg:. Uno para el paquete binario y el otro paquete de código fuente.

Great! Ahora estamos listos para instalar el paquete.

Instalación del paquete.

Una vez que el paquete se construye, Haikuporter pone en $ TREE_PATH / packages /.

Copie en el sistema (o usuario) Paquetes Directorio de desplegar, por ejemplo:

cp $ TREE_PATH/packages/projectX-1.2.3-1_gcc2.hpkg / boot / system / paquetes
Haiku desplegará automáticamente el paquete como se define en la receta. Si el instalador del paquete se encuentra con un error como dependencias faltantes, el usuario será notificado vía emergente en la pantalla.

Para extraer el paquete, asegúrese de que no está corriendo / cualquiera de sus archivos en uso, a continuación, elimine el paquete de / boot / system / paquetes.

Tenga en cuenta que también puede simplemente arrastrar y soltar el paquete de entrada y salida de / boot / system / paquetes para instalar y desinstalar.

Solución de problemas básicos.

Cuando haikuporter falla (y lo hará), mantener la calma y evitar la tentación de RageQuit ... confía en mí, que he estado allí. En primer lugar, tratar de entender el problema usted mismo y resolución. De no ser así, por favor busque ayuda en el IRC o en la lista de correo.

Haiku tiene muchos miembros de la comunidad que siempre son muy útiles, no importa cuál es la pregunta. Comunidad es uno de los puntos fuertes de Haiku, a fin de utilizar a su ventaja aquí, y llegar a ellos.

Algunas de las cosas básicas que usted puede intentar:

Trate de construir la fuente "vainilla", es decir, tomar las fuentes oficiales, y tratar de construir con ellas el camino normal fuera de haikuporter. Esto le permitirá entender si hay algún problema en las fuentes, lo que podría ser necesario modificar, y lo que podría ser roto.
Después de haber construido la fuente, trate de traducir estos pasos en el build () e INSTALL () bloques dentro de su receta.
Ejecutar siempre haikuporter con la opción-S. Esto proporciona la comprobación estricta política e incluye más errores detallados para ayudar a solucionar el problema.
Conclusión.

Bueno, eso es todo por este artículo. Esperemos que ahora, usted está más familiarizado con cómo funcionan las recetas, y cómo encaja todo desde haikuporter a haikuports para escribir recetas.

Si ha logrado construir su primera receta, felicidades y bien hecho! Y si no, no tengas miedo - los próximos artículos se centrarán en la solución de problemas con las cuestiones y sus soluciones.

Sin duda, usted tiene muchas preguntas. Paciencia, mi linda. Próximamente en esta serie:

Artículo siguiente: hacer una receta de ejemplo para que GNU. Vamos a realizar un ejemplo vivo de principio a fin: elaboración de recetas derecha a través de paquete de instalación.

Próximos artículos:

GCC2 y gcc4.
Después de un proceso en sano juicio: algunos pasos comunes que se pueden aplicar para ayudar a trabajar a través del proceso de escritura de recetas.
Escribir parches, gestión del repositorio git local para el paquete, la extracción y aplicación de parches. Usando git para organizar sus parches, es decir, con el rebase y amigos.
¿Dónde deben ir las cosas? Utilizando las variables de ayudarle a organizar paquetes, la forma Haiku.
Los errores más comunes y las soluciones que utilizan haikuporter.