277 lines
8.1 KiB
Bash
Executable file
277 lines
8.1 KiB
Bash
Executable file
#!/bin/sh -e
|
|
|
|
# apt-get install qemubuilder cowbuilder git-core dpkg-dev curl bzip2 gzip tar coreutils
|
|
#
|
|
# since a lot of debs will repeatedly be downloaded, run a local apt cache.
|
|
# it will speed things up and go easy on the debian mirrors.
|
|
# apt-get install apt-cacher
|
|
# if you are not using it, adjust the DEBMIRROR line below
|
|
#
|
|
# use 2.5G tmpfs
|
|
# mount -t tmpfs -o size=2500M tmpfs /tmp/ramdisk
|
|
#
|
|
# you can also run the script inside a chroot to avoid having to run it as
|
|
# root on your host.
|
|
# sudo cdebootstrap --flavour=minimal sid debian-sid-chrootenv
|
|
# sudo cp pyneo-daily.sh debian-sid-chrootenv/
|
|
# sudo chroot debian-sid-chrootenv/ apt-get install [see above]
|
|
# sudo chroot debian-sid-chrootenv/ /pyneo-daily.sh
|
|
|
|
PWD="`pwd`"
|
|
SRC_DIR="$PWD/src"
|
|
DEB_DIR="$PWD/debian"
|
|
REPO_DIR="$PWD/repo"
|
|
POOL_DIR="$REPO_DIR/pool"
|
|
QEMUCONF="$PWD/qemuconfig"
|
|
BASE="$PWD/base"
|
|
BUILD="$PWD/build"
|
|
DATENOW="`date -u +%Y%m%d`"
|
|
DEBMIRROR="http://localhost:3142/ftp.de.debian.org/debian"
|
|
DIST=sid
|
|
HOSTARCH="`dpkg --print-architecture`"
|
|
MAINTAINER=1
|
|
|
|
mkdir -p "$SRC_DIR"
|
|
mkdir -p "$REPO_DIR"
|
|
mkdir -p "$BUILD"
|
|
mkdir -p "$BASE"
|
|
rm -rf "$SRC_DIR/"*
|
|
rm -rf "$REPO_DIR/"*
|
|
rm -rf "$BUILD/"*
|
|
|
|
#############################################################################
|
|
# common functions #
|
|
#############################################################################
|
|
|
|
create_cow()
|
|
{
|
|
if [ ! -d "$BASE/$1.cow" ]; then
|
|
cowbuilder --create --distribution $DIST --basepath "$BASE/$1.cow" \
|
|
--architecture $1 --buildplace $BUILD \
|
|
--buildresult $POOL_DIR --mirror $DEBMIRROR \
|
|
--aptcache ""
|
|
fi
|
|
}
|
|
|
|
build_cow()
|
|
{
|
|
cowbuilder --build "$2" --basepath "$BASE/$1.cow" --buildplace $BUILD \
|
|
--buildresult $POOL_DIR --mirror $DEBMIRROR --aptcache ""
|
|
}
|
|
|
|
# qemubuilder config has to be created dynamically because BASEPATH needs to
|
|
# be absolute
|
|
create_qemu()
|
|
{
|
|
if [ ! -f "$BASE/$1.qemu" ]; then
|
|
cat > "$BASE/$1.conf" << __EOF__
|
|
ARCH=$1
|
|
MEMORY_MEGS=256
|
|
BASEPATH=$BASE/$1.qemu
|
|
MIRRORSITE=$DEBMIRROR
|
|
BUILDPLACE=$BUILD
|
|
BUILDRESULT=$POOL_DIR
|
|
ARCH_DISKDEVICE=sd
|
|
DISTRIBUTION=$DIST
|
|
__EOF__
|
|
case "$1" in
|
|
"i386")
|
|
echo "KERNEL_IMAGE=$QEMUCONF/i386/vmlinuz-2.6.32-5-686" >> "$BASE/$1.conf"
|
|
echo "INITRD=$QEMUCONF/i386/initrd.img-2.6.32-5-686" >> "$BASE/$1.conf"
|
|
;;
|
|
"amd64")
|
|
echo "KERNEL_IMAGE=$QEMUCONF/amd64/vmlinuz-2.6.32-5-amd64" >> "$BASE/$1.conf"
|
|
echo "INITRD=$QEMUCONF/amd64/initrd.img-2.6.32-5-amd64" >> "$BASE/$1.conf"
|
|
;;
|
|
"armel")
|
|
echo "KERNEL_IMAGE=$QEMUCONF/armel/zImage-2.6.29.4" >> "$BASE/$1.conf"
|
|
;;
|
|
"mipsel")
|
|
echo "KERNEL_IMAGE=$QEMUCONF/mipsel/vmlinux-2.6.32-5-4kc-malta" >> "$BASE/$1.conf"
|
|
;;
|
|
esac
|
|
qemubuilder --configfile "$BASE/$1.conf" --create
|
|
fi
|
|
}
|
|
|
|
build_qemu()
|
|
{
|
|
qemubuilder --build "$2" --configfile "$BASE/$1.conf"
|
|
}
|
|
|
|
#############################################################################
|
|
# create qemubuilder base #
|
|
#############################################################################
|
|
|
|
case "$HOSTARCH" in
|
|
"i386")
|
|
create_cow i386
|
|
create_qemu amd64
|
|
create_qemu armel
|
|
create_qemu mipsel
|
|
;;
|
|
"amd64")
|
|
create_cow i386
|
|
create_cow amd64
|
|
create_qemu armel
|
|
create_qemu mipsel
|
|
;;
|
|
"armel")
|
|
create_qemu i386
|
|
create_qemu amd64
|
|
create_cow armel
|
|
create_qemu mipsel
|
|
;;
|
|
"mipsel")
|
|
create_qemu i386
|
|
create_qemu amd64
|
|
create_qemu armel
|
|
create_cow mipsel
|
|
;;
|
|
*)
|
|
echo "unknown host architecture: $HOSTARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
#############################################################################
|
|
# build source packages #
|
|
#############################################################################
|
|
|
|
# epydial
|
|
git clone git://gitorious.org/epydial/epydial-new.git "$SRC_DIR/epydial"
|
|
|
|
# gsm0710muxd pyneo-pybankd pyneo-pyneod pyneo-resolvconf python-pyneo zad
|
|
curl http://git.pyneo.org/browse/cgit/pyneo/snapshot/pyneo-HEAD.tar.gz | tar xz
|
|
for src in gsm0710muxd pyneo-pybankd pyneo-pyneod pyneo-resolvconf python-pyneo zad; do # add pyneo-pygsmd?
|
|
cp -r "pyneo-HEAD/$src" "$SRC_DIR/$src"
|
|
done
|
|
rm -rf pyneo-HEAD
|
|
|
|
# pyneo-zadthemes pyneo-zadosk pyneo-zadwm python-ijon
|
|
for repo in pyneo-zadthemes pyneo-zadosk pyneo-zadwm python-ijon; do
|
|
curl http://git.pyneo.org/browse/cgit/$repo/snapshot/$repo-HEAD.tar.gz | tar xz
|
|
mv "$repo-HEAD" "$SRC_DIR/$repo"
|
|
done
|
|
|
|
for pkg in "$SRC_DIR/"*; do
|
|
PKG="${pkg##*/}" # emulate basename(1)
|
|
mv "$SRC_DIR/$PKG" "$SRC_DIR/$PKG-$DATENOW"
|
|
tar --exclude-vcs --directory "$SRC_DIR" --create --gzip --file "$SRC_DIR/${PKG}_$DATENOW.orig.tar.gz" "$PKG-$DATENOW"
|
|
cp -r "$DEB_DIR/$PKG" "$SRC_DIR/$PKG-$DATENOW/debian"
|
|
DEBEMAIL="josch@pyneo.org" DEBFULLNAME="Johannes Schauer" dch --package "$PKG" --newversion "$DATENOW-$MAINTAINER" \
|
|
--distribution unstable --empty --changelog "$SRC_DIR/$PKG-$DATENOW/debian/changelog" --create "new nightly build"
|
|
cd "$SRC_DIR/$PKG-$DATENOW"
|
|
dpkg-buildpackage -S -us -uc
|
|
cd "../../"
|
|
done
|
|
|
|
mkdir -p "$POOL_DIR"
|
|
mv "$SRC_DIR/"*_* "$POOL_DIR"
|
|
|
|
#############################################################################
|
|
# build binary packages #
|
|
#############################################################################
|
|
|
|
for dsc in "$POOL_DIR/"*.dsc; do
|
|
if grep "^Architecture: all$" "$dsc" > /dev/null; then
|
|
# build native
|
|
build_cow $HOSTARCH "$dsc"
|
|
else
|
|
# build for each arch
|
|
case "$HOSTARCH" in
|
|
"i386")
|
|
build_cow i386 "$dsc"
|
|
build_qemu amd64 "$dsc"
|
|
build_qemu armel "$dsc"
|
|
build_qemu mipsel "$dsc"
|
|
;;
|
|
"amd64")
|
|
build_cow i386 "$dsc"
|
|
build_cow amd64 "$dsc"
|
|
build_qemu armel "$dsc"
|
|
build_qemu mipsel "$dsc"
|
|
;;
|
|
"armel")
|
|
build_qemu i386 "$dsc"
|
|
build_qemu amd64 "$dsc"
|
|
build_cow armel "$dsc"
|
|
build_qemu mipsel "$dsc"
|
|
;;
|
|
"mipsel")
|
|
build_qemu i386 "$dsc"
|
|
build_qemu amd64 "$dsc"
|
|
build_qemu armel "$dsc"
|
|
build_cow mipsel "$dsc"
|
|
;;
|
|
*)
|
|
echo "unknown host architecture: $HOSTARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
#############################################################################
|
|
# create repository #
|
|
#############################################################################
|
|
|
|
for arch in i386 amd64 armel mipsel; do
|
|
mkdir -p "$REPO_DIR/dists/unstable/main/binary-$arch"
|
|
cat > "$REPO_DIR/dists/unstable/main/binary-$arch/Release" << __EOF__
|
|
Archive: unstable
|
|
Component: main
|
|
Origin: Debian
|
|
Label: Debian
|
|
Architecture: $arch
|
|
__EOF__
|
|
done
|
|
|
|
mkdir -p "$REPO_DIR/dists/unstable/main/source"
|
|
cat > "$REPO_DIR/dists/unstable/main/source/Release" << __EOF__
|
|
Archive: unstable
|
|
Component: main
|
|
Origin: Debian
|
|
Label: Debian
|
|
Architecture: source
|
|
__EOF__
|
|
|
|
ln -s unstable "$REPO_DIR/dists/sid"
|
|
|
|
cd "$REPO_DIR"
|
|
dpkg-scanpackages --arch i386 pool/ > dists/unstable/main/binary-i386/Packages
|
|
bzip2 -9fk dists/unstable/main/binary-i386/Packages
|
|
gzip -9f dists/unstable/main/binary-i386/Packages
|
|
dpkg-scanpackages --arch amd64 pool/ > dists/unstable/main/binary-amd64/Packages
|
|
bzip2 -9fk dists/unstable/main/binary-amd64/Packages
|
|
gzip -9f dists/unstable/main/binary-amd64/Packages
|
|
dpkg-scanpackages --arch armel pool/ > dists/unstable/main/binary-armel/Packages
|
|
bzip2 -9fk dists/unstable/main/binary-armel/Packages
|
|
gzip -9f dists/unstable/main/binary-armel/Packages
|
|
dpkg-scanpackages --arch mipsel pool/ > dists/unstable/main/binary-mipsel/Packages
|
|
bzip2 -9fk dists/unstable/main/binary-mipsel/Packages
|
|
gzip -9f dists/unstable/main/binary-mipsel/Packages
|
|
dpkg-scansources pool/ > dists/unstable/main/source/Sources
|
|
bzip2 -9fk dists/unstable/main/source/Sources
|
|
gzip -9f dists/unstable/main/source/Sources
|
|
cd ../
|
|
|
|
cd "$REPO_DIR/dists"
|
|
cat > unstable/Release << __EOF__
|
|
Origin: pyneo
|
|
Label: pyneo
|
|
Suite: unstable
|
|
Codename: sid
|
|
Date: `date -R`
|
|
Architectures: amd64 armel i386 mipsel
|
|
Components: main
|
|
Description: pyneo dailies
|
|
MD5Sum:
|
|
__EOF__
|
|
for f in `find . -regex "./unstable/main/[^/]+/\(Packages\|Sources\|\Release\).*"`; do
|
|
md5sum $f | awk '{printf " %s ", $1}' >> unstable/Release
|
|
stat --printf="%s\t%n\n" $f >> unstable/Release
|
|
done
|
|
cd ../..
|
|
|
|
#gpg --detach-sign --armor --sign -o $REPO_DIR/Release.gpg $REPO_DIR/Release
|