# http://git.mdcc.cx/ad1810-doc.git # published at уто, 5. апр 2016. 19:28:43 CEST # <------------------------------------------------------------------> -- Debian packaging using git by Joost van Baal-Ilić http://ad1810.com/ 2014, 2015, 2016 -- "A classic Negro put-down in which satire becomes a deadly rapier-thrust. Faubus emerges in a glare of ridicule as a mock villain whom no-one really takes seriously. This kind of commentary, brimful of feeling, bitingly direct and harshly satiric, appears far too rarely in jazz." --Critic Don Heckman commenting in 1962 on the track "Original Faubus Fables" (from "Mingus Ah Um" , with "Goodbye Pork Pie Hat" and "Better Git It in Your Soul") by Charles Mingus (★ 1922 – † 1979) introduction ============ About the author ---------------- Joost van Baal-Ilić (★ 1970) werkt met Debian GNU/Linux sinds 1998, en is Debian Developer sinds 2000. Hij woont met zijn gezin in Tilburg, is wiskundige, werkt voor Tilburg University als Linux Systeembeheerder en is daarnaast zelfstandig ondernemer met ad 1810 (http://www.ad1810.com/). Sinds 2006 is hij actief als spreker op verscheidene internationale Open Source evenementen. In zijn vrije tijd doet hij aan hardlopen, fotografie en yoga en verzamelt hij ongewone muziek en literatuur. Joost van Baal-Ilić (★ 1970) is a Debian GNU/Linux user since 1998, and a Debian Developer since 2000. He is a mathematician, lives in Tilburg, The Netherlands, works for Tilburg University as a Linux System Administrator and runs the ad 1810 company (http://www.ad1810.com/). He is a public speaker at international Open Source conferences since 2006. Introduction ------------ For packaging Perl modules using git on Alioth for Debian, read these four webpages: http://pkg-perl.alioth.debian.org/policy.html http://wiki.debian.org/Teams/DebianPerlGroup http://wiki.debian.org/Teams/DebianPerlGroup/Welcome http://pet.debian.net/pkg-perl/pet.cgi Furthermore, specifically for the Debian Med project, there's http://debian-med.alioth.debian.org/docs/policy.html and for the related Debian Science project, there's http://debian-science.alioth.debian.org/debian-science-policy.html . Rest of this document is a very crude and terse (maybe even wrong!) summary on how to get a new CPAN Perl module, or any other software, in Debian unstable. Assumed is you are a Debian Developer. Voorkennis ---------- Er wordt vanuit gegaan dat je bekend met het werken met een Debian- of Ubuntu-systeem bent, en vertrouwd bent met de commandline en met het werken met een revisiecontrolesysteem zoals git. Het is handig als je ooit zelf software hebt gecompileerd en weet wat gcc en een Makefile is, en als je ooit "handmatig" een pakket hebt geïnstalleerd ("dpkg -i pakket.deb" hebt uitgevoerd). -- ┌───────────────────┤ tarballs ├─────────────────────┐ │ │ │ tar xf caspar-20120322.tar.gz │ │ │ │ caspar-20120322/INSTALL │ │ │ │ caspar-20120322/Makefile.in │ │ caspar-20120322/configure │ │ │ │ caspar-20120322/COPYING │ │ caspar-20120322/ChangeLog │ │ │ │ ./configure && make && sudo make install │ │ │ │ 2 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- Packages -------- Voordelen van het gebruiken van een package --vergeleken met een tarball-- zijn: - Het configureren van de software gebeurt automatisch: na installeren werkt de software out of the box (via zogeheten maintainerscripts die automatisch vóór en na installeren worden uitgevoerd). - Als je apt-get of een variant daarvan gebruikt, dan wordt je totale systeem helemaal automatisch up to date gehouden. - Er vindt automatische dependency-tracking plaats: als een gewenst pakket andere software nodig heeft om te kunnen functioneren, dan wordt die andere software automatisch ook geïnstalleerd. - Van iedere software-library wordt slechts één exemplaar geïnstalleerd (d.m.v. de dependency-tracking). - De software is cryptografisch ondertekend: er wordt dus alleen software uit vertrouwde bron geïnstalleerd (het Release-bestand is PGP-ondertekend.) - Van elk bestand op je systeem kun je terugvinden waar het bij hoort, en dus wie ervoor verantwoordelijk is. - Helemaal verwijderen van het software-pakket is mogelijk, zonder dat er sporen achterblijven. -- ┌───────────────────┤ packages vs tar.gz ├───────────┐ │ │ │ automatisch configureren │ │ automatische upgrade van totale systeem (apt-get) │ │ automatische dependency-tracking │ │ slechts één exemplaar van libraries │ │ binary: geen compiler nodig │ │ software uit gegarandeerd vertrouwde bron │ │ duidelijke bron voor ieder bestand │ │ de-installeren mogelijk │ │ │ │ │ │ 3 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ source en binary packages ├────┐ │ │ │ foo-5.3.tar.gz debian/{changelog,rules, │ │ control,copyright,..} │ │ ↓ ↓ │ │ Debian source package: foo_5.3-1.debian.tar.gz │ │ ↓ │ │ foo_5.3-1_amd64.deb │ │ ↓ │ │ sudo dpkg -i foo_5.3-1_amd64.deb │ │ sudo apt install foo │ │ │ │ │ │ 4 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ wat gaan we doen ├─────────────┐ │ │ │ "quick and dirty" │ │ ervaring met Debian of Ubuntu │ │ vertrouwd met commandline │ │ │ │ dh_make, debian/*, git │ │ git-buildpackage │ │ │ │ 5 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- initial ======= initial ------- Install tools # apt-get install git-buildpackage pkg-perl-tools -- ┌───────────────────┤ benodigde programmatuur ├──────┐ │ │ │ sudo apt-get install \ │ │ build-essential debhelper devscripts dh-make \ │ │ lintian git-buildpackage debian-policy \ │ │ developers-reference maint-guide gnu-standards \ │ │ cdbs │ │ │ │ 6 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ upstream tarball ├─────────────┐ │ │ │ cd ~/src/hello/ │ │ wget http://example.org/pad/naar/hello-5.3.tar.gz │ │ ln -s hello-5.3.tar.gz hello_5.3.orig.tar.gz │ │ tar xf hello-5.3.tar.gz │ │ cd hello-* │ │ dh_make (of dh_make --python, dh-make-perl, │ │ dh-make-php, ...) │ │ │ │ 7 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- Generate initial debian/ directory for your package % dh-make-perl --cpan Test::Command::Simple --pkg-perl On machine git.debian.org, run joostvb@vasks:/git/pkg-perl% ./setup-repository libtest-command-simple-perl 'Packaging of Test::Command::Simple in Debian' Set up your git repo % git remote add origin ssh://git.debian.org/git/pkg-perl/packages/libtest-command-simple-perl.git joostvb@dijkstra:~/tmp Test-Command-Simple-0.04% git push --all --set-upstream joostvb@dijkstra:~/tm Test-Command-Simple-0.04% git push --tags -- ┌───────────────────┤ debian/* ├─────────────────────┐ │ │ │ debian/rules │ │ debian/control │ │ debian/{changelog,copyright} │ │ │ │ debian/source/format │ │ debian/compat │ │ debian/{install,docs,watch} │ │ │ │ 8 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ debian/control ├───────────────┐ │ vi debian/control │ │ │ │ Source: ad1810-tachod │ │ Maintainer: J.E. van Baal-Ilić │ │ Build-Depends: debhelper (>= 9), │ │ autotools-dev │ │ │ │ Package: ad1810-tachod │ │ Architecture: all │ │ Depends: ${misc:Depends} │ │ Description: small X11 tachograph │ │ ad1810-tachod chases the user away from computer. │ │ │ │ 9 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ debian/{changelog,copyright} ├─┐ │ │ │ export DEBEMAIL="Jouw Naam " │ │ dch -a │ │ vi debian/copyright │ │ dch -a │ │ (debuild -uc -us) │ │ (sudo dpkg -i ../*.deb) │ │ │ │ 10 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ .deb en source package ├───────┐ │ │ │ hello_5.3-1_amd64.deb │ │ │ │ hello_5.3.orig.tar.gz │ │ hello_5.3-1.debian.tar.gz │ │ hello_5.3-1.dsc │ │ │ │ hello_5.3-1_amd64.changes │ │ hello_5.3-1_amd64.build │ │ │ │ 11 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ eerste build, zonder git ├─────┐ │ │ │ debuild -uc -us -S │ │ levert │ │ hello_5.3.orig.tar.gz │ │ hello_5.3-1.debian.tar.gz │ │ hello_5.3-1.dsc │ │ │ │ 12 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- -- ┌───────────────────┤ aanmaken en vullen git repo ├──┐ │ │ │ git init │ │ gbp import-dsc --pristine-tar .../hello_5.3-1.dsc │ │ │ │ ssh git.debian.org 'cd ... && \ │ │ ../setup-repository hello "packaging for hello"' │ │ git remote add origin \ │ │ ssh://git.debian.org/git/.../hello.git │ │ git push --all --set-upstream && git push --tags │ │ │ │ 13 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- for non-perl packages --------------------- Example for debian-science project: joostvb@moszumanska:/git/debian-science/packages% ../setup-repository r-cran-yaml 'GNU R package of methods to convert R data to YAML and back -- yaml' joostvb@dijkstra:~/git/r-cran-yaml% git init && gbp import-dsc --pristine-tar ~/local/src/yaml/r-cran-yaml_2.1.13-1.dsc joostvb@dijkstra:~/git/r-cran-yaml% git remote add origin ssh://git.debian.org/git/debian-science/packages/r-cran-yaml.git joostvb@dijkstra:~/git/r-cran-yaml% git push --all --set-upstream && git push --tags setting up build chroot ----------------------- root@nusku:~# lvcreate -n chroot -L 8g sys root@nusku:~# mkfs.xfs /dev/sys/chroot root@nusku:~# apt -V install debootstrap root@nusku:/srv/chroot# debootstrap sid sid http://http.debian.net/debian/ root@nusku:/srv/chroot# mkdir sid root@nusku:/srv/chroot# vi /etc/fstab root@nusku:/srv/chroot# mount /srv/chroot/sid/proc root@nusku:/srv/chroot# mount /srv/chroot/sid/sys root@nusku:~# chroot /srv/chroot/sid root@dijkstra:~# for i in proc sys dev dev/pts; do mount /opt/debian/sid-root/$i; done root@dijkstra:~# chroot /opt/debian/sid-root root@dijkstra:/# apt-get -V install zsh root@dijkstra:/# apt-get -V install locales-all debuild root@dijkstra:/# apt-get -V install locales-all devscripts 0 upgraded, 193 newly installed, 0 to remove and 0 not upgraded. Need to get 120 MB of archives. After this operation, 421 MB of additional disk space will be used. Do you want to continue? [Y/n] root@dijkstra:~# echo sid >/opt/debian/sid-root/etc/debian_chroot root@dijkstra:~# cp -a /etc/{passwd,group,shadow,gshadow} /opt/debian/sid-root/etc root@dijkstra:~# chown joostvb.joostvb /opt/debian/sid-root/home/joostvb (sid)root@nusku:/# apt -V install git-buildpackage (sid)root@nusku:/# cat < /etc/apt/apt.conf.d/80norecommends Aptitude::Recommends-Important "false"; APT::Install-Recommends false; EOT (sid)root@nusku:/# apt update && apt -V install git-buildpackage (sid)root@nusku:/# echo nameserver 10.128.128.128 >> /etc/resolv.conf 8.8.8.8 gbp setup --------- Run this (once) to make sure your git checkout won't get clobbered with build artefacts. echo <> ~/.gbp.conf [DEFAULT] cleaner = debclean [buildpackage] export-dir = ../build-area/ EOT FIXME: isn't the gbp default cleaner 'debuild clean' same as 'debclean'? hacking ------- vi debian/stuff dch debcommit -a --diff && debcommit -a --confirm git push (sid)joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% gbp buildpackage --git-verbose --git-ignore-new [...] Enter passphrase: debclean && debuild [-us -uc] debclean && gbp buildpackage --git-verbose --git-ignore-new -uc -us debclean && gbp buildpackage -sa -v1.2.1-1 tagging, uploading ------------------- % debcommit -a -r tags are e.g. : joostvb@arrr:~/git/libtest-command-simple-perl% git tag -l 0.04-2 0.04-3 debian/0.04-3 upstream/0.04 % git push --tags % git push % dupload ../libtest-command-simple-perl_0.04-1_amd64.changes branches -------- "Upstream sources are kept (in plain, uncompressed form) in the upstream branch. The data needed to regenerate original source tarballs from the upstream branch are kept with the help of the pristine-tar(1) tool in the pristine-tar branch. Upstream sources are merged with Debian-specific changes in the master branch, which is the usual place to work in." -- http://pkg-perl.alioth.debian.org/git.html#repository_layout joostvb@arrr:~/git/libtest-command-simple-perl% git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/pristine-tar remotes/origin/upstream -- ┌───────────────────┤ kringloop: vi, dch, debcommit ├┐ │ │ │ cd ~/git/packages/hello-pkg; git pull │ │ mkdir debian/source │ │ echo '3.0 (quilt)' >debian/source/format │ │ git add debian/source │ │ dch 'use 3.0 dpkg source format' │ │ debcommit -a --diff && debcommit -a --confirm │ │ git push │ │ │ │ │ │ 14 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- building -------- Fetch git repo % gbp clone --all --pristine-tar ssh://git.debian.org/git/pkg-perl/packages/libtest-command-simple-perl.git joostvb@nusku:~/git/ilk/libfolia% gbp clone --all --pristine-tar ssh+git://git.debian.org/git/debian-science/packages/libfolia.git (Or, if you already have one, do this. You could have a look first: joostvb@arrr:~/git/validns% git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/pristine-tar remotes/origin/upstream joostvb@arrr:~/git/validns% git checkout debian/0.7-1 master origin/pristine-tar upstream debian/0.7-2 ORIG_HEAD origin/upstream upstream/0.7 FETCH_HEAD origin/HEAD pristine-tar HEAD origin/master push joostvb@arrr:~/git/validns% git checkout pristine-tar La branche pristine-tar est paramétrée pour suivre la branche distante pristine-tar depuis origin. Basculement sur la nouvelle branche 'pristine-tar' joostvb@arrr:~/git/validns% ls validns_0.6r250.orig.tar.bz2.delta validns_0.7.orig.tar.gz.delta validns_0.6r250.orig.tar.bz2.id validns_0.7.orig.tar.gz.id validns_0.6r250.orig.tar.gz.delta validns_0.7r20130903.orig.tar.gz.delta validns_0.6r250.orig.tar.gz.id validns_0.7r20130903.orig.tar.gz.id Now, get your tarball by running: joostvb@arrr:~/git/validns% git checkout debian/0.7-2 Note: checking out 'debian/0.7-2'. You are in 'detached HEAD' state. [...] HEAD est maintenant sur de1c5a3... Change Format URL re-creating orig.tar.gz from git -------------------------------- % git checkout pristine-tar % ls (see which .tar.gz's are available) % git checkout master joostvb@arrr:~/git/validns% pristine-tar checkout validns_0.7.orig.tar.gz pristine-tar: successfully generated validns_0.7.orig.tar.gz % mv *tar.gz .. ( joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% pristine-tar checkout libfolia_0.12.orig.tar.gz pristine-tar: no pristine-tar branch found, use "pristine-tar commit" first joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git checkout debian/0.10-1 debian/0.5-1 debian/0.8-1 HEAD upstream/0.10 debian/0.10-2 debian/0.5-2 debian/0.9-1 master upstream/0.11 debian/0.10-3 debian/0.6-1 debian/0.9-2 ORIG_HEAD upstream/0.9 debian/0.10-4 debian/0.7-1 FETCH_HEAD upstream ) joostvb@arrr:~/git/validns% ls -lh validns_0.7.orig.tar.gz -rw-r--r-- 1 joostvb joostvb 182K мај 12 11:35 validns_0.7.orig.tar.gz ) Alternative, using pkg-perl-tools: joostvb@arrr:~/git/libtest-command-simple-perl% pristine-orig ../libtest-command-simple-perl_0.04.orig.tar.gz ready (pristine-orig is shipped with pkg-perl-tools) downloading .tar.gz from upstream and registering it in git ----------------------------------------------------------- joostvb@janacopoulos:~/git/ilk/timbl% gbp import-orig --uscan --pristine-tar of: gbp import-orig --pristine-tar ../*.orig.tar.gz of uscan --verbose --force-download --no-symlink --download-version version % dpkg-parsechangelog --since 0.2-1 --format rfc822 --show-field Version 0.12-1 0.11-1 0.10-4.2 [...] 0.2-3 0.2-2 joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% uscan --verbose --no-symlink --download-version 0.2 joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% for v in 12 10 9 8 7 6 5 3 2; do uscan --verbose --no-symlink --force-download --download-version 0.$v; done joostvb@nusku:~/gi...~/git/ilk/frog/frog% git checkout upstream Switched to branch 'upstream' joostvb@nusku:~/gi...~/git/ilk/frog/frog% pristine-tar commit ../frog-0.12.19.tar.gz pristine-tar: committed frog-0.12.19.tar.gz.delta to branch pristine-tar joostvb@nusku:~/gi...~/git/ilk/frog/frog% pristine-tar commit ../frog-0.12.20.tar.gz pristine-tar: committed frog-0.12.20.tar.gz.delta to branch pristine-tar joostvb@nusku:~/gi...~/git/ilk/frog/frog% git push origin pristine-tar суб 04 23:50 < KGB-2> Joost van Baal-Ilić pristine-tar 0c63aff frog frog-0.12.19.tar.gz.delta frog-0.12.19.tar.gz.id pristine-tar data for frog-0.12.19.tar.gz * http://deb.li/3gHwy суб 04 23:50 < KGB-2> Joost van Baal-Ilić pristine-tar 85afb35 frog frog-0.12.20.tar.gz.delta frog-0.12.20.tar.gz.id pristine-tar data for frog-0.12.20.tar.gz * http://deb.li/ix9e4 joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% gbp import-orig --pristine-tar ../libfolia-0.8.tar.gz What is the upstream version? [0.8] gbp:error: Repository has uncommitted changes, commit these first: gbp:error: On branch master Untracked files: (use "git add ..." to include in what will be committed) Makefile autom4te.cache/ config.guess.cdbs-orig config.h [...] src/foliautils.o src/libfolia.la stamp-h1 nothing added to commit but untracked files present (use "git add" to track) joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% pristine-tar commit ../libfolia-0.8.tar.gz joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% pristine-tar commit ../libfolia-0.9.tar.gz pristine-tar: committed libfolia-0.9.tar.gz.delta to branch pristine-tar ------------------------------ joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git checkout pristine-tar Switched to branch 'pristine-tar' joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% ls autom4te.cache/ config.log folia.pc libfolia-0.9.tar.gz.delta Makefile config.guess.cdbs-orig* config.status* include/ libfolia-0.9.tar.gz.id src/ config.h config.sub.cdbs-orig* libfolia-0.10.tar.gz.delta libtool* stamp-h1 config.h.in~ debian/ libfolia-0.10.tar.gz.id m4/ joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git branch -a * master upstream remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/upstream joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git checkout upstream Switched to branch 'upstream' joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git import-orig --pristine-tar ../libfolia_0.11.orig.tar.gz What is the upstream version? [0.11] joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git checkout pristine-tar Already on 'pristine-tar' joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% ls libfolia_0.9.orig.tar.gz.delta libfolia_0.9.orig.tar.gz.id joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git branch -a master new_branch_name * pristine-tar upstream remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/upstream joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git push origin pristine-tar Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 2.45 KiB | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: Sending notification emails to: debian-science-commits@lists.alioth.debian.org To ssh+git://git.debian.org/git/debian-science/packages/libfolia.git * [new branch] pristine-tar -> pristine-tar joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git branch -a master new_branch_name * pristine-tar upstream remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/pristine-tar remotes/origin/upstream git push --tags * [new tag] upstream/0.12.19 -> upstream/0.12.19 joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git checkout pristine-tar Switched to branch 'pristine-tar' Your branch is up-to-date with 'origin/pristine-tar'. joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git branch -a master * pristine-tar upstream remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/pristine-tar remotes/origin/upstream joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% ls libfolia_0.10.orig.tar.gz.delta libfolia_0.9.orig.tar.gz.delta libfolia_0.10.orig.tar.gz.id libfolia_0.9.orig.tar.gz.id joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git import-orig --pristine-tar ../libfolia-0.10.tar.gz joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git push origin pristine-tar чет 20 16:49 < KGB-1> Joost van Baal-Ilić pristine-tar 05dd668 libfolia libfolia_0.10.orig.tar.gz.delta libfolia_0.10.orig.tar.gz.id pristine-tar data for libfolia_0.10.orig.tar.gz * http://deb.li/37NIx joostvb@nusku:~/gi...it/ilk/libfolia/libfolia% git push Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 2.79 KiB | 0 bytes/s, done. Total 4 (delta 1), reused 0 (delta 0) remote: Sending notification emails to: debian-science-commits@lists.alioth.debian.org To ssh+git://git.debian.org/git/debian-science/packages/libfolia.git 05dd668..59cffb7 pristine-tar -> pristine-tar joostvb@arrr:~/git/libtest-command-simple-perl% debuild -us -uc Or joostvb@nusku:~/git/ilk/libticcutils% debclean joostvb@nusku:~/git/ilk/libticcutils% git checkout -- INSTALL aclocal.m4 configure ltmain.sh m4/libtool.m4· ( git diff | less ) joostvb@nusku:~/git/ilk/libticcutils% gbp buildpackage --git-ignore-new -us -uc debc | less joostvb@nusku:~/git/ilk/libticcutils% lintian --info -I --pedantic ../ticcutils_0.7-1_amd64.changes | less root@nusku:~# dpkg -i ~joostvb/git/ilk/libticcutils2*0.7*deb -- ┌───────────────────┤ maak & test je .deb ├──────────┐ │ │ │ maak een test-build: │ │ gbp buildpackage --git-verbose \ │ │ --git-ignore-new -uc -us │ │ │ │ test je build: │ │ lintian --pedantic -I -i ../*.changes │ │ debc │ │ tar -vOxf ../*.debian.tar.gz 2>&1 | less │ │ sudo dpkg -i ../*deb │ │ │ │ 15 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- # once it's tested & ready for release -- ┌───────────────────┤ release & upload je .deb ├─────┐ │ │ │ als je pakket getest is, en klaar is voor release: │ │ debclean && gbp buildpackage --git-tag │ │ git push && git push --tags │ │ dupload ../*.changes (of │ │ dupload --to mentors ../*.changes of │ │ dupload --to anonymous-ftp-master ../*.changes) │ │ │ │ 16 http://mdcc.cx/dpg.txt │ └────────────────────────────────────────────────────┘ -- unset UNRELEASED tag in debian/changelog commit -m 'tagged, ship it' push joostvb@nusku:~/git/ilk/libticcutils% gbp buildpackage --git-tag (sid)joostvb@nusku:~/gi.../timblserver/timblserver% gbp buildpackage --git-verbose joostvb@nusku:~/gi.../timblserver/timblserver% debclean joostvb@nusku:~/gi.../timblserver/timblserver% gbp buildpackage --git-verbose (sid)joostvb@janacopoulos:~/gi.../timblserver/timblserver% gbp buildpackage --git-verbose --git-ignore-new joostvb@nusku:~/gi.../timblserver/timblserver% gbp buildpackage --git-tag-only --git-ignore-new gbp:info: Tagging 1.8-1 as debian/1.8-1 % git log -v . | head -3 commit 0c8b2412f417282aa8d3c1baf5145548e932459d % git tag -a -m 'uploaded to unstable' debian/2.7.7+dfsg-1 039113658b81a4d7db28c6911dd93c448718a2a0 % git push --tags joostvb@nusku:~/gi.../timblserver/timblserver% git push --tags joostvb@nusku:~/gi.../timblserver/timblserver% dupload --to anonymous-ftp-master ../timblserver_1.8-1_amd64.changes joostvb@nusku:~/git/ilk/libticcutils% less ../ticcutils_0.7-1_amd64.changes joostvb@nusku:~/git/ilk/libticcutils% dupload --to anonymous-ftp-master ../ticcutils_0.7-1_amd64.changes· --to mentors git push && git push --tags if stuff fails, initially ------------------------- % dcut rm libtest-command-simple-perl_0.04-1_all.deb see also -------- http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libtest-command-simple-perl.git;a=summary ftp://ftp.upload.debian.org/pub/UploadQueue/ http://ftp-master.debian.org/new.html Perl CPAN modules: http://pkg-perl.alioth.debian.org/git.html Python Cheeseshop modules: https://wiki.debian.org/Python/LibraryStyleGuide nodejs e.a.: https://wiki.debian.org/Javascript/Policy PHP PECL: http://webapps-common.alioth.debian.org/draft-php/html/ voor nodejs there is npm2deb (like dh-make) https://wiki.debian.org/Javascript/Nodejs/Npm2Deb and: https://wiki.ubuntu.com/PbuilderHowto https://packages.debian.org/packaging-tutorial installs packaging-tutorial.pdf: a slideshow by Lucas Nussbaum and, for those who'd like to learn from examples, not from reading huge amounts of documentation: https://codesearch.debian.net/ by Michael Stapelberg (tnx Jaap Joris Vens for pointing that one out to me) Dank ---- slush NLLGG Jeroen Dekkers project073 Fred 'Stern' Hoog Copyright and License --------------------- Copyright © 2013, 2014, 2015, 2016 Joost van Baal-Ilić Dit document is vrij; verspreiding en gebruik, met of zonder wijzigingen, zijn toegestaan mits bovenstaande vermelding van auteursrecht, deze voorwaarde en de volgende vrijwaring van aansprakelijkheid behouden blijven. Dit werk wordt verspreid in de hoop dat het bruikbaar zal zijn, maar ZONDER ENIGE GARANTIE; zelfs zonder de garantie van GESCHIKTHEID VOOR EEN SPECIFIEK DOEL. Dit document is beschikbaar op http://mdcc.cx/dpg.txt en wordt tegen kostprijs door de auteur beschikbaar gesteld. Redistribution and use, with or without modification, are permitted provided that the above copyright notice, this condition and the following disclaimer are retained. This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. TODO/FIXME test with aephea / zoem / uruk / caspar / draai /