Differences between revisions 19 and 20
Revision 19 as of 2008-02-09 04:35:08
Size: 5882
Editor: TimAbbott
Comment:
Revision 20 as of 2008-02-25 22:58:47
Size: 6135
Editor: jason
Comment:
Deletions are marked like this. Additions are marked like this.
Line 118: Line 118:

== Possibly useful links ==

 * Debian alternatives system: see [http://www.debian-administration.org/articles/91], [http://manpages.debian.net/cgi-bin/man.cgi?query=update-alternatives&apropos=0&sektion=0&manpath=Debian+Sid&format=html&locale=en]

Debian release to support

sbuild: lenny x86-64: can create 32 & 64 bit arch specific packages, ~12 in total:

  • Ubuntu LTS
  • last two Ubuntu releases
  • >=etch

Make check

  • use schroot to run "make check"

Problematic Packages

  • ATLAS (atlas-sage-x.y or version bump)
  • Python (python-sage-x.y or version bump)
  • jmol - potential conflict with gcj in stable (testing and above fine)
  • Maxima: copies mgnuplot script to libexec (Maxima is already in Debian)

Changelog

  • needs to be kept in sync with SPKG.txt (automated mechanism)
  • dch (Debian changelog)

Initially

  • webserver for static only content
  • set up apt-get repo on $SAGE.MATH
  • To set up repo: reprpro + gpg key for signing
  • domain: http://debian.sagemath.org registered, still points at sagemath.org, needs vhost to be set up

Problem to be solved

  • Install location: /usr/share/sage/ - "sage" script in bin does cd and
    • then execute the appropriate sage scipt in /usr/share/sage/
  • location of tmp, i.e. TMP, /tmp or /var/tmp, not SAGE_ROOT/tmp

  • SAGE_ROOT/ipython - why is it there. What is the content (config files?)
  • databases in $SAGE_ROOT/data -> /use/share/sage/data

  • spkg directory: gone or moved to sage-dev.deb
  • make distclean: remove "*.c", "*.so", "*.os" in /devel/sage/
  • content of examples directory: What to do with the code?
  • LIB -> lib - Singular related, move to lib/Singular

  • text files from $SAGE_ROOT: /usr/share/doc/sage
  • create official Sage GPG key to sign packages

Package names

  • Comply with Debian policy when possible
  • libraries (for example NTL):
    • ntl_5.4.1-1.dsc (the source source package), tarball with debian directory
    • libntl0_5.4.1-1_i386.deb (initial NTL version, i.e. "0", contains shared library)
    • libntl-dev_5.4.1-1_i386.deb (headers & static libraries)

  • binary (eclib)
    • eclib_1.0_i386.deb (binaries)
    • libec0_1.0_i386.deb (shared libraries)
    • libec-dev_1.0_i386.deb (headers & static libraries)

  • Singular
    • To be determined

Setting up the build system (In Detail)

  • based on build system for [http://debathena.mit.edu Debian-Athena]

  • Start Debian installer
  • Partitioning method: "Guided - use entire disk and set up LVM" - accept defaults and write LVM init to disk
  • delete original main LVM volume, create new VG, say with 10GB
  • set up accounts for root and users as usual
  • update to lenny: edit /etc/apt/source and replace "etch" with "lenny"
  • "aptitude update"
  • "aptitude dist-upgrade" (wait a while :) )

  • download Tim's script collection from the main Deb packaging page [http://www.sagemath.org:9001/days7/DebianPackagingSprint?action=AttachFile (tarballs here for now)], untar ... [the code is being partially merged in the sage-scripts repo, some of the other might end up on a wiki page somewhere else once this is over]

  • file "packages" contains list of packages needed for the build system
  • aptitude install cat packages installs the packages listed in packages. Also install cdbs.

  • file "approx.conf.tail": append file to approx.conf - make sure to set a fast mirror, i.e. not the MIT repo
  • restart approx service via "/etc/init.d/approx restart"
  • edit make-chroot and set $VG to volume group name or export VG
  • Now create change roots for various targets using make-chroot: Parameters 1 is SUITE (i.e. lenny), 2 is ARCH (i.e. i386)

  • If things go wrong remove lvm group created :(

  • download Tim's other script collection from the main Deb packaging page [http://www.sagemath.org:9001/days7/DebianPackagingSprint?action=AttachFile (tarballs for now)], untar into /usr/local/bin ...

  • export DEBATHENA_APT=(path to SAGE apt repository)
  • adduser sage sbuild (where sage is a user you want to be able to do builds)

Using the chroot environments

  • Create GPG key: gpg --gen-key (follow instructions)
  • export key in ascii format: gpg --export -armor > sage-archive.asc

  • mount-defaults: uncomment /dev/pts, tmpfs mounts since there are currently problems with schroot 1.1.6-1. P potential solution: uncomment /dev/pts, /dev/shm mount points
  • starting schroot env: example gutsy:
    • schroot -c gutsy-i386-sbuild

To actually do builds

  • get SAGE .spkg and unpack into DIR
  • copy debian directory into $DIR/src
  • build source package using debuild -S from inside package directory ($DIR/src)
  • build binary packages using "da sbuildhack [resulting .dsc file]" from $DIR
  • upload into SAGE repository using "daupload-release [resulting .changes file]" from $DIR
  • use clean-schroots whenever you run out of disk space due to stale build chroots (often get leaked when you do ^C during a build)
  • autotools-dev, m4 (should be added to the dependencies - if they aren't)
  • using sbuildhack - setup: adduser $USER sbuild [make sure user is in right group]
  • /etc/sbuild/sbuild.conf:

    • set mailto, maintainer, etc...
    • uncomment '$sbuild_mode = "user";'

Example

  • apt-get source valgrind [downloads sources, patches, dsc file]
  • sbuildhack lenny-i386 valgrind-3.3.0-1.dsc
  • Building a Debian package via make from $SAGE_LOCAL:

    • set env variable DEBIAN_RELEASE to "lenny-i386" [building deb in schroot env]

    • set env variable USEDEB to "yes": first try to sudo apt-get install $SPKG.deb

    • sage-spkg: check if DEBIAN_RELEASE is set: if spkg-debian exists in $SPKG_ROOT execute it, otherwise do default sbuildhack - see http://trac.sagemath.org/sage_trac/ticket/2098 for patch

Structure for dist-specific build systems in general

  • Can expect upstream sources to be available at $SPKG_ROOT/src

  • Can store distribution-specific files in $SPKG_ROOT/dist/$NAME

days7/DebianPackagingSprint (last edited 2009-03-26 01:09:18 by MichaelAbshoff)