Changes between Initial Version and Version 1 of SynPackaging/example


Ignore:
Timestamp:
05/27/09 12:35:24 (15 years ago)
Author:
rick
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SynPackaging/example

    v1 v1  
     1= Voorbeeld van een handmatig gebouwd pakketje =
     2
     3Meestal gaan alle stappen gaan automatisch goed als je het ./npl/newpackage commando gebruikt. Mocht het toch niet goed gaan dan kun je deze pagina van een compleet handmatige build als lijdraad gebruiken:
     4
     5== Zoek het juiste sources en patches bijelkaar ==
     6
     7Het is belangrijk dat je altijd de orginele source-tarball download en de daarbij behorende patches. Wil je een CVS of SVN versie bouwen? Maak dan van de CVS of SVN versie die je gebruikt een tarball met een juiste naam.
     8
     9 * Source tarball: pakket_naam-1.2.3.tar.gz
     10 * CVS tarball: pakketje_naam-12.04.2007.tar.gz
     11 * SVN tarball: pakketje_naam-3452.tar.gz
     12
     13Zorg dat je de patches er los bij zet. Dus geen pre-patched tarball, want dit is lastig met latere updates!
     14
     15Gebruik indien mogelijk altijd de laatste stable versie.
     16
     17Een goede plek voor patches zijn de debian en gentoo repository's.
     18
     19== De SlackBuild file ==
     20
     21De slackbuild is het 'recept' om een pakketje te bouwen. Er zijn een aantal example slackbuilds die je als basis kunt gebruiken. Deze detecteren alles automatisch waardoor je meestal niks hoeft aan te passen bij de standaard opensource GNU-automake pakketjes.
     22
     23
     24Kopieer het voorbeeld bestand source:trunk/npl/packagename.SlackBuild.example naar ''packagename''.SlackBuild. Het pakketje zal automatisch deze naam krijgen.
     25{{{
     26root@builder:/p/npl/fileserver/foomatic_db# cp ../../packagename.SlackBuild.example foomatic_db.SlackBuild
     27root@builder:/p/npl/fileserver/foomatic_db# ls -l
     28total 15720
     29-rw-r--r--  1 root root 16091293 2007-06-30 09:22 foomatic-db-3.0-20070630.tar.gz
     30-rwxr-xr-x  1 root root     1943 2007-08-23 16:33 foomatic_db.SlackBuild*
     31}}}
     32
     33Nu ben je al klaar om een eerste testbuild te doen. We starten het ''rebuildcheck'' commando vanuit de npl directory:
     34{{{
     35
     36root@builder:/p/npl/fileserver/foomatic_db# cd ../..
     37root@builder:/p/npl# ./rebuildcheck foomatic_db
     38REBUILD REQUIRED: ./foomatic-db-3.0-20070630.tar.gz has changed!
     39REBUILDING /p/npl/fileserver/foomatic_db/foomatic_db.SlackBuild:
     40Buildroot up-to-date check: ............................................................................................................DONE
     41Buildroot /p/builder/buildroot0 repareren/syncen...OK
     42/p/npl/fileserver/foomatic_db word gekopieerd naar werkdirectory /p/builder/buildroot0/tmp/build
     43*** Chroot naar /p/builder/buildroot0 en starten van foomatic_db.SlackBuild in /tmp/build:
     44/home/vservers/builder/dev/pts/0: No such file or directory
     451 /tmp/build > basename ./foomatic_db.SlackBuild
     46...
     473 /tmp/build > DST=/tmp/pkg
     485 /tmp/build > '[' /tmp/pkg ']'
     4917 /tmp/build > cd foomatic-db-3.0-20070630
     50/bin/syn3_build_automake: line 17: cd: foomatic-db-3.0-20070630: No such file or directory
     5117 /tmp/build > exit 1
     5257 /tmp/build > exit 1
     53*** Er ging iets mis tijdens het bakken in de buildroot!
     54Error while rebuilding /p/npl/fileserver/foomatic_db/foomatic_db.SlackBuild!
     55
     56
     57
     58}}}
     59
     60We zien in kleur stap-voor-stap wat er er gebeurd. Blijkbaar kan een directory niet gevonden worden. Laten we even in de buildroot duiken om te kijken watsgebeurd:
     61
     62{{{
     63root@builder:/p/npl# chroot ../builder/buildroot0/
     64stderr is not a tty - where are you?
     65[Syn-3] root@darkstar.example.net /# cd /tmp/build/
     66[Syn-3] root@darkstar.example.net /tmp/build# ls
     67foomatic-db-20070630/  foomatic-db-3.0-20070630.tar.gz  foomatic_db.SlackBuild*
     68}}}
     69
     70De directory in de tarball is anders dan de tarball naam zelf, vandaar dat het mis gaat. Dit lossen we op door SRC_DIR=... in het buildscript aan te passen naar foomatic-db-20070630.
     71
     72'''Als je wijzigingen maakt in het slackbuild script, vergeet dan niet om achter alle belangrijke regels een exit 1 toe te voegen:'''
     73{{{
     74commando bla bla bla || exit 1
     75}}}
     76
     77Hierna proberen we het nog eens te builden:
     78
     79{{{
     80root@builder:/p/npl# ./rebuildcheck foomatic_db
     81...
     8237 /tmp/build/foomatic-db-20070630 > exit 0
     8360 /tmp/build > syn3_strip /tmp/pkg
     8463 /tmp/build > syn3_move_dev /tmp/pkg /tmp/pkgdev
     8564 /tmp/build > syn3_makepkg /tmp/pkgdev foomatic_db_dev 20070630 i586
     86Not creating empty pacakge
     8767 /tmp/build > syn3_makepkg /tmp/pkg foomatic_db 20070630 i586
     88tar-1.13: foomatic_db.pkg.tar is the archive; not dumped
     89*** Build gelukt.
     90* Packages terugmoven naar originele directory..
     91/p/builder/buildroot0/tmp/build/foomatic_db.arch ...
     92/p/builder/buildroot0/tmp/build/foomatic_db.version ...
     93/p/builder/buildroot0/tmp/build/foomatic_db.pkg ...
     94
     95* Klaar ja!
     96Updating md5 for /p/npl/fileserver/foomatic_db/foomatic_db.SlackBuild...
     97Updating dependency information for /p/npl/fileserver/foomatic_db/foomatic_db.SlackBuild...
     98All rebuilds completed.
     99}}}
     100
     101
     102
     103Woohooooooo het is gelukt! Je ziet nu de volgende files:
     104{{{
     105root@builder:/p/npl# ls fileserver/foomatic_db -l
     106total 30740
     107-rw-r--r--  1 root root 16091293 2007-06-30 09:22 foomatic-db-3.0-20070630.tar.gz
     108-rwxr-xr-x  1 root root     1925 2007-08-23 17:14 foomatic_db.SlackBuild*
     109-rw-r--r--  1 root root        5 2007-08-23 17:15 foomatic_db.arch
     110-rw-r--r--  1 root root      179 2007-08-23 17:15 foomatic_db.md5
     111-rw-r--r--  1 root root 15364391 2007-08-23 17:14 foomatic_db.pkg
     112-rw-r--r--  1 root root        9 2007-08-23 17:15 foomatic_db.version
     113}}}
     114
     115 * De .pkg is de 'droge slackware tarball', maar dan met een .pkg extentie.
     116 * De .arch bevat de architectuur. (meestal i386)
     117 * De .version bevat de versie. In dit geval 20070630.
     118 * De .md5 bevat md5sums, zodat het systeem kan zien dat het pakketje gewijzigd is en dus opnieuw gebuild moet worden.
     119
     120Kijk in de .pkg om te kijken of de files en directorys op de goede plekken staan:
     121{{{
     122root@builder:/p/npl# tar -tzvf fileserver/foomatic_db/foomatic_db.pkg
     123drwxr-xr-x root/root         0 2007-08-23 17:14:58 ./
     124drwxr-xr-x root/root         0 2007-08-23 17:14:43 usr/
     125drwxr-xr-x root/root         0 2007-08-23 17:14:43 usr/share/
     126drwxr-xr-x root/root         0 2007-08-23 17:14:43 usr/share/foomatic/
     127drwxr-xr-x root/root         0 2007-08-23 17:14:43 usr/share/foomatic/db/
     128-rw-r--r-- root/root     16156 2007-08-23 17:14:43 usr/share/foomatic/db/oldprinterids
     129drwxr-xr-x root/root         0 2007-08-23 17:14:43 usr/share/foomatic/db/source/
     130drwxr-sr-x /                 0 2007-06-30 09:22:45 usr/share/foomatic/db/source/PPD/
     131drwxr-sr-x /                 0 2007-08-23 17:14:45 usr/share/foomatic/db/source/PPD/Brother/
     132-rw-r--r-- /              7166 2007-06-30 09:22:04 usr/share/foomatic/db/source/PPD/Brother/BRHL32_3_GPL.ppd.gz
     133... (heel veel files)
     134
     135}}}
     136
     137Als dit goed lijkt is het pakketje eigenlijk al klaar!
     138
     139Kijk bij SynBuild hoe je het pakketje toevoegd aan de svn tree.
     140
     141Lees meer op SynPackaging.