This proposal describes the infrastructure for emdebian packages and modified packaging tools for use with them. Demo infrastructure has been set up on buildd.emdebian.org
Emdebian packages should be split into two aptable repositories:
- Emdebian Tools - emdebian packaging tools like dpkg, debhelper,etc. It is intended to get these modified tools into Debian as soon as possible.
- Target packages - emdebian packages for target devices. These packages should contain emdebian patches for the emdebian-related changes.
Source code repository structure
- Repository layout is according to svn-buildpackage recomendations (see /usr/share/doc/svn-buildpackage/HOWTO.html/index.html)
trunk: In most cases, actual code resides in a trunk/ directory beneath the package name. This provides support for dedicated build-area directories, branches and SVN tags on a per-package basis. The links to the browser are to the trunk subdirectory, where trunk/ exists. When checking out a particular module, use the module name without the final trunk/.
If you have direct access to the emdebian.org server you will find the files are stored here:
- Currently emdebian-tools sources are here: buildd.emdebian.org/var/emdebian/svn/current/host/trunk/emdebian-tools
- Target sources are at buildd.emdebian.org/var/emdebian/svn/current/target/trunk/
Equivalent external access URLs are:
- Tools sources are at svn://buildd.emdebian.org/repos/current/host/trunk/emdebian-tools
- Target sources are at svn://buildd.emdebian.org/repos/current/target/trunk
current - all the latest code
emdebian - code to support the emdebian server
bin - cronjobs and other automation scripts.
buildcross - toolchain builder for the Emdebian repository.
repo - sqlite and PHP handlers for the Emdebian repository to update toolchains and compare versions against Debian.
host - code intended to run on the cross-building host and other packages to support emdebian cross-building.
apt-cross - upstream SVN for the apt-cross Debian package.
emdebian-tools - upstream SVN for the emdebian-tools Debian package.
empath - Generate a path to cross-build a target package. (Prototype code, not released yet.)
langupdate - upstream SVN for a native Emdebian package that will be cross-built for each Emdebian distribution to handle the translation packages generated by emdebian-tools.
target - emdebian patch files generated by emdebian-tools when building emdebianised packages for installation on embedded devices. Organised similarly to a Debian mirror pool: initial letter of the Debian source package in alphabetical order, then by source package name. e.g. current/target/trunk/b/busybox/trunk/.
website - SVN support for changes to www.emdebian.org website in english and spanish.
superceded Older work has been migrated to 'superceded', including:
- cross-get - the precursor to apt-cross written in bash.
- stag-addons - tools (dpkg, debhelper, dpkg-cross) modifed for use with stag
Package repositories were prepared using reprepro tool(mirrorer)
- tools repository:
deb http://buildd.emdebian.org/debian/ unstable main deb-src http://buildd.emdebian.org/debian/ unstable main deb http://buildd.emdebian.org/debian/ testing main deb-src http://buildd.emdebian.org/debian/ testing main
- target repository
deb http://buildd.emdebian.org/emdebian/ unstable main deb-src http://buildd.emdebian.org/emdebian/ unstable main
sid is also supported as an alternative to unstable.
- for tools : scp://buildd.emdebian.org/var/emdebian/emdebian-tools/incoming-unstable
- for target packages: scp://buildd.emdebian.org/var/emdebian/emdebian-tools/incoming-emdebian/
Examples of dput.cf for emdebian uploads
[emdebian-tools] fqdn = buildd.emdebian.org login = <your login> method = scp incoming = /var/emdebian/debian/incoming-unstable/ [emdebian-target] fqdn = buildd.emdebian.org method = scp login = <your login> incoming = /var/emdebian/emdebian/incoming-unstable/
Example of how to handle uploads
Emdebian does not currently use a timed queue - uploaders need to run a script via dput. e.g. for the target repository:
post_upload_command = ~/scripts/dput-emdebian
The dput-emdebian script file - on your local system - should contain:
ssh firstname.lastname@example.org "/var/emdebian/sqlite/dput-incoming emdebian"
This is the /var/emdebian/sqlite/dput-incoming script (debian or emdebian should be passed as parameter).
#!/bin/sh [ -z "$1" ] && exit 1 DIST=$1 INCOMING=/var/emdebian/$DIST/incoming-unstable/ SCRIPTS=/var/emdebian/sqlite/repo/trunk/ cd $INCOMING/../ # # Now import each new package that we *did* find # for f in $INCOMING/*.changes; do [ -e "$f" ] || continue; # Import package to the selected distribution. reprepro -Vb . include $DIST $f # Update the live sqlite data with data from this upload. $SCRIPTS/changes.pl $f $DIST # Delete the referenced files sed '1,/Files:/d' $f | sed '/BEGIN PGP SIGNATURE/,$d' \ | while read MD SIZE SECTION PRIORITY NAME; do [ -z "$NAME" ] && continue rm -f "$INCOMING/$NAME" done # Finally delete the .changes file itself. rm $f done
- SVN commit hook which should build packages and put them into repository
- (should not be hard for tools, for target it's much harder)
- dput infrastructure (incoming directories accessible for dput-supported transports) is in progress.