Debian Buildpackages

From Linux PARISC Wiki
(Difference between revisions)
Jump to: navigation, search
m (How to build debian packages)
m
(39 intermediate revisions by one user not shown)
Line 1: Line 1:
==How to build debian packages==
+
=== Debian Buildservers ===
  
; DebianWannaBuildInfrastructureOnOneServer
+
; Since December 2013 we have debian unstable buildservers.
: https://wiki.debian.org/DebianWannaBuildInfrastructureOnOneServer
+
: Current build status is here: https://buildd.debian.org/status/architecture.php?a=hppa&suite=sid
  
; Another description on how to set up a buildd
+
; Contacts for the debian HPPA buildds
: https://www.wzdftpd.net/redmine/projects/general/wiki/DebianBuildd
+
: Helge Deller <deller@gmx.de>, PA-RISC Kernel maintainer, buildd maintainer
 +
: John David Anglin <dave.anglin@bell.net>, HPPA GCC, and binutils maintainer
  
; debian-ports policy and description:
+
; James Clarke provides easy-to-use scripts to set up a buildd server:
: http://www.debian-ports.org/archive
+
: https://wiki.debian.org/PortsDocs/BuilddSetup
 +
: https://salsa.debian.org/debian-ports-team/dsa-puppet
 +
: old repo: https://anonscm.debian.org/git/users/jrtc27/dsa-puppet.git/
 +
 
 +
Some other info:
 +
 
 +
* [https://lists.debian.org/debian-68k/2013/10/msg00006.html Setting up buildd server with btrfs]
 +
* [https://wiki.debian.org/DebianWannaBuildInfrastructureOnOneServer DebianWannaBuildInfrastructureOnOneServer]
 +
* [https://www.wzdftpd.net/redmine/projects/general/wiki/DebianBuildd Another description on how to set up a buildd]
 +
* [http://blog.cihar.com/archives/2010/09/29/using-pgp-subkeys-signing/ How to use subkeys for signing on buildds]
 +
 
 +
== Build chroot requirements ==
 +
 
 +
* openfoam requires up to 40GB disc space
 +
* I'm running the buildd chroot in a ramdisc. In /etc/fstab I have:
 +
  tmpfs /srv/buildd/unpack tmpfs size=40G 0 2
 +
 
 +
== Tips to manually build debian Linux kernel ==
 +
 
 +
* by adding "debug-info: false" to the [build] section in debian/config/hppa/defines avoids building the debug info
 +
 
 +
== How to manually build debian packages ==
 +
 
 +
; How to get a specific version of a source package
 +
: apt-get source packagename=version
  
 
; How to build a package (without modifying source):
 
; How to build a package (without modifying source):
 
: dpkg-buildpackage --force-sign -B -sa -m<email>
 
: dpkg-buildpackage --force-sign -B -sa -m<email>
 
: e.g.: dpkg-buildpackage --force-sign -sa -mHelge\ Deller\ \<deller@gmx.de\> -kB51E3864 -j5
 
: e.g.: dpkg-buildpackage --force-sign -sa -mHelge\ Deller\ \<deller@gmx.de\> -kB51E3864 -j5
 +
: DEB_BUILD_OPTIONS=nocheck
 +
: or in a chroot environment:
 +
: DEB_BUILD_OPTIONS=nocheck sbuild  -s -mHelge\ Deller\ \<deller@gmx.de\> --dist=unstable --no-arch-all --no-source -j5
  
 
; How to build a package (*with* modified source):
 
; How to build a package (*with* modified source):
Line 18: Line 46:
 
: dpkg-buildpackage --force-sign -B -sa -m<email>
 
: dpkg-buildpackage --force-sign -B -sa -m<email>
  
; How to use subkeys for signing on buildds
+
; How to modify debian changelog:
: http://blog.cihar.com/archives/2010/09/29/using-pgp-subkeys-signing/
+
: dch --distribution unstable --bin-nmu Rebuild b1
 +
: dch-git --since <commit_nr>
 +
 
 +
; How to sign packages (with debsign)
 +
: debsign -k <key> packagename.changes
  
 
; How to sign packages (without debsign)
 
; How to sign packages (without debsign)
Line 25: Line 57:
  
 
; Create Debian chroot
 
; Create Debian chroot
 +
: https://www.wzdftpd.net/redmine/projects/general/wiki/DebianBuildd
 
: apt-get install debian-ports-archive-keyring
 
: apt-get install debian-ports-archive-keyring
: /usr/sbin/sbuild-createchroot --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg unstable build/chroot-unstable http://ftp.debian-ports.org/debian/
+
: /usr/sbin/sbuild-createchroot --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring,eatmydata unstable build/chroot-unstable http://ftp.ports.debian.org/debian-ports/
 +
: https://wiki.debian.org/sbuild
 +
: https://www.ca-zephyr.org/mediawiki/index.php/Some_Notes
 +
 
 +
; On the physical server (outside of chroot) for building experimental:
 +
: adduser --force-badname --system -home /var/empty  --no-create-home --quiet _apt
 +
; chmod 666 /dev/ptmx  # if permissions aren't that yet
 +
 
 +
; In each chroot to be fixed:
 +
: Remove the link in the /usr/hppa64-linux-gnu directory to /usr/include:
 +
: ls -lad /home/build*/build*/chroot-*/usr/hppa64*/include
 +
 
 +
; In each chroot, /etc/hosts has to look like this (e.g. needed for mod-gnutls package)
 +
127.0.0.1      localhost sibaris localhost.localdomain
 +
::1            localhost ip6-localhost ip6-loopback
 +
ff02::1        ip6-allnodes
 +
ff02::2        ip6-allrouters
 +
 
 +
; In each chroot modify (for unstable) /etc/apt/sources.list
 +
deb [arch=all] http://incoming.debian.org/debian-buildd buildd-unstable main
 +
deb [arch=all] http://ftp.debian.org/debian unstable main
 +
deb http://ftp.ports.debian.org/debian-ports unstable main
 +
deb http://incoming.ports.debian.org/buildd unstable main
 +
# deb http://ftp.ports.debian.org/debian-ports experimental main
 +
# main/debian-installer
 +
deb-src http://ftp.debian.org/debian unstable main
 +
deb-src http://incoming.debian.org/debian-buildd buildd-unstable main
 +
 
 +
; For building debian packages in the chroots, store the following script as /usr/bin/fix-buildd into the chroots,
 +
; and modify the chroot definitions in /etc/schroot/chroot.d/ to include this line: command-prefix=fix-buildd
 +
 
 +
#!/bin/sh
 +
#-
 +
# Various fixes for the debian builds
 +
# everything in a function to avoid environment pollution
 +
runprog() {
 +
  local cmd
 +
  # 1. vtk6 builds fail if DOT_NUM_THREADS is not set to 1 (machine gets unresponsive)
 +
  DOT_NUM_THREADS=1
 +
  export DOT_NUM_THREADS
 +
  # 2. enable parallel building of packages
 +
  NUMCPU=$(getconf _NPROCESSORS_ONLN)
 +
  DEB_BUILD_OPTIONS="parallel=$NUMCPU"
 +
  export DEB_BUILD_OPTIONS
 +
  # execute the command
 +
  cmd=$1
 +
  shift
 +
  exec "$cmd" "$@"
 +
}
 +
runprog "$@"
 +
 
 +
; wanna-build interface:
 +
: https://wiki.debian.org/M68k/Porting#binNMU_notes
 +
: http://lists.debian.org/debian-68k/2012/12/msg00124.html
 +
: http://lists.debian.org/debian-68k/2013/10/msg00021.html
 +
: http://kmuto.jp/open.cgi?buildd
 +
 
 +
; How to create multiple buildds on one server
 +
: Create new user "buildd2", use new UID, but keep GID "buildd" (without "2"). Use new homedir, e.g. /home/buildd2
 +
: Add user buildd2 to groups sbuild and buildd in /etc/group 
 +
: Copy original homedir from buildd to /home/buildd2 (you won't need existing Logs and upload-debs)
 +
: Change ownership of /home/buildd2: "chmod -R buildd2.buildd /home/buildd2"
 +
: Create a new chroot with /usr/sbin/sbuild-createchroot (name e.g. "unstable2"). Update the generated /etc/schroot/chroot.d/XXX file. Usually I have my chroots then under /home/buildd2/build-trees/chroots/
 +
: In ~buildd2  create new .sbuildrc und .builddrc files, and change wanna_build_db_user => "buildd_hppa-phantom2" and sbuild_chroot => "unstable2-hppa-sbuild"
 +
: Log in as buildd2 and manually run "buildd" to check if everything works.
 +
: If everything worked add the buildd-cronjobs for buildd2 in /etc/cron.d/buildd (copy existing entries and change copied entries to use "buildd2" instead of "buildd"
 +
 
 +
; How to setup a dd porterbox.
 +
: See https://wiki.debian.org/NonDSAPorterBoxSetUp
  
==Debian Buildservers==
+
; How to create a palo iplboot image from official Debian install CD
 +
: palo --init-tape=lifimage -k vmlinux-3.13-1-parisc.gz -k vmlinux-3.13-1-parisc64-smp.gz -r initrd.gz --commandline='0/vmlinux initrd=0/ramdisk panic_timeout=60 panic=-1 debian-installer/allow_unauthenticated=true mirror/http/hostname=mkhppa3.esiee.fr mirror/http/directory=/debian'
  
; Where is (old) Peri ?
+
; How to build haskell/uuagc:
: http://db.debian.org/machines.cgi?host=peri
+
: http://foswiki.cs.uu.nl/foswiki/HUT/AttributeGrammarManual
 +
cd <uuagc source directory>
 +
ghc --make Setup.hs -o setup -package Cabal
 +
./setup configure
 +
./setup build
 +
./setup install

Revision as of 07:26, 21 January 2019

Contents

Debian Buildservers

Since December 2013 we have debian unstable buildservers.
Current build status is here: https://buildd.debian.org/status/architecture.php?a=hppa&suite=sid
Contacts for the debian HPPA buildds
Helge Deller <deller@gmx.de>, PA-RISC Kernel maintainer, buildd maintainer
John David Anglin <dave.anglin@bell.net>, HPPA GCC, and binutils maintainer
James Clarke provides easy-to-use scripts to set up a buildd server
https://wiki.debian.org/PortsDocs/BuilddSetup
https://salsa.debian.org/debian-ports-team/dsa-puppet
old repo: https://anonscm.debian.org/git/users/jrtc27/dsa-puppet.git/

Some other info:

Build chroot requirements

  • openfoam requires up to 40GB disc space
  • I'm running the buildd chroot in a ramdisc. In /etc/fstab I have:
 tmpfs /srv/buildd/unpack tmpfs size=40G 0 2

Tips to manually build debian Linux kernel

  • by adding "debug-info: false" to the [build] section in debian/config/hppa/defines avoids building the debug info

How to manually build debian packages

How to get a specific version of a source package
apt-get source packagename=version
How to build a package (without modifying source)
dpkg-buildpackage --force-sign -B -sa -m<email>
e.g.: dpkg-buildpackage --force-sign -sa -mHelge\ Deller\ \<deller@gmx.de\> -kB51E3864 -j5
DEB_BUILD_OPTIONS=nocheck
or in a chroot environment:
DEB_BUILD_OPTIONS=nocheck sbuild -s -mHelge\ Deller\ \<deller@gmx.de\> --dist=unstable --no-arch-all --no-source -j5
How to build a package (*with* modified source)
dch --distribution unstable --bin-nmu Rebuild b1
dpkg-buildpackage --force-sign -B -sa -m<email>
How to modify debian changelog
dch --distribution unstable --bin-nmu Rebuild b1
dch-git --since <commit_nr>
How to sign packages (with debsign)
debsign -k <key> packagename.changes
How to sign packages (without debsign)
http://purplefloyd.wordpress.com/2009/02/05/signing-deb-packages/
Create Debian chroot
https://www.wzdftpd.net/redmine/projects/general/wiki/DebianBuildd
apt-get install debian-ports-archive-keyring
/usr/sbin/sbuild-createchroot --keyring=/usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring,eatmydata unstable build/chroot-unstable http://ftp.ports.debian.org/debian-ports/
https://wiki.debian.org/sbuild
https://www.ca-zephyr.org/mediawiki/index.php/Some_Notes
On the physical server (outside of chroot) for building experimental
adduser --force-badname --system -home /var/empty --no-create-home --quiet _apt
chmod 666 /dev/ptmx # if permissions aren't that yet
In each chroot to be fixed
Remove the link in the /usr/hppa64-linux-gnu directory to /usr/include:
ls -lad /home/build*/build*/chroot-*/usr/hppa64*/include
In each chroot, /etc/hosts has to look like this (e.g. needed for mod-gnutls package)
127.0.0.1       localhost sibaris localhost.localdomain
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
In each chroot modify (for unstable) /etc/apt/sources.list
deb [arch=all] http://incoming.debian.org/debian-buildd buildd-unstable main
deb [arch=all] http://ftp.debian.org/debian unstable main
deb http://ftp.ports.debian.org/debian-ports unstable main
deb http://incoming.ports.debian.org/buildd unstable main
# deb http://ftp.ports.debian.org/debian-ports experimental main
# main/debian-installer
deb-src http://ftp.debian.org/debian unstable main
deb-src http://incoming.debian.org/debian-buildd buildd-unstable main
For building debian packages in the chroots, store the following script as /usr/bin/fix-buildd into the chroots,
and modify the chroot definitions in /etc/schroot/chroot.d/ to include this line
command-prefix=fix-buildd
#!/bin/sh
#-
# Various fixes for the debian builds
# everything in a function to avoid environment pollution
runprog() {
  local cmd
  # 1. vtk6 builds fail if DOT_NUM_THREADS is not set to 1 (machine gets unresponsive)
  DOT_NUM_THREADS=1
  export DOT_NUM_THREADS
  # 2. enable parallel building of packages
  NUMCPU=$(getconf _NPROCESSORS_ONLN)
  DEB_BUILD_OPTIONS="parallel=$NUMCPU"
  export DEB_BUILD_OPTIONS
  # execute the command
  cmd=$1
  shift
  exec "$cmd" "$@"
}
runprog "$@"
wanna-build interface
https://wiki.debian.org/M68k/Porting#binNMU_notes
http://lists.debian.org/debian-68k/2012/12/msg00124.html
http://lists.debian.org/debian-68k/2013/10/msg00021.html
http://kmuto.jp/open.cgi?buildd
How to create multiple buildds on one server
Create new user "buildd2", use new UID, but keep GID "buildd" (without "2"). Use new homedir, e.g. /home/buildd2
Add user buildd2 to groups sbuild and buildd in /etc/group
Copy original homedir from buildd to /home/buildd2 (you won't need existing Logs and upload-debs)
Change ownership of /home/buildd2: "chmod -R buildd2.buildd /home/buildd2"
Create a new chroot with /usr/sbin/sbuild-createchroot (name e.g. "unstable2"). Update the generated /etc/schroot/chroot.d/XXX file. Usually I have my chroots then under /home/buildd2/build-trees/chroots/
In ~buildd2 create new .sbuildrc und .builddrc files, and change wanna_build_db_user => "buildd_hppa-phantom2" and sbuild_chroot => "unstable2-hppa-sbuild"
Log in as buildd2 and manually run "buildd" to check if everything works.
If everything worked add the buildd-cronjobs for buildd2 in /etc/cron.d/buildd (copy existing entries and change copied entries to use "buildd2" instead of "buildd"
How to setup a dd porterbox.
See https://wiki.debian.org/NonDSAPorterBoxSetUp
How to create a palo iplboot image from official Debian install CD
palo --init-tape=lifimage -k vmlinux-3.13-1-parisc.gz -k vmlinux-3.13-1-parisc64-smp.gz -r initrd.gz --commandline='0/vmlinux initrd=0/ramdisk panic_timeout=60 panic=-1 debian-installer/allow_unauthenticated=true mirror/http/hostname=mkhppa3.esiee.fr mirror/http/directory=/debian'
How to build haskell/uuagc
http://foswiki.cs.uu.nl/foswiki/HUT/AttributeGrammarManual
cd <uuagc source directory>
ghc --make Setup.hs -o setup -package Cabal
./setup configure
./setup build
./setup install
Personal tools