# HG changeset patch # User Christophe Lincoln # Date 1336178019 -7200 # Node ID 0bc5984a5cb9c1f8fbefe5d55ab546be0960e416 # Parent d852a86d0701ad71147d4764f016d8992e673a06 tazdev: handle --arch= for chroot, fixes and clean up diff -r d852a86d0701 -r 0bc5984a5cb9 tazdev/tazdev --- a/tazdev/tazdev Thu May 03 09:54:12 2012 +0200 +++ b/tazdev/tazdev Sat May 05 02:33:39 2012 +0200 @@ -20,17 +20,16 @@ echo -e "\nNo config file found\n" && exit 1 fi -usage() -{ +usage() { echo -e "\nSliTaz developers and build host tool\n $(boldify "Usage:") $(basename $0) [command] [user|tool] [release|path] $(boldify "Commands:") usage Print this short usage and command list help Give help on a SliTaz tool or library. projects-stats|-ps Display statistics about your projects - chroot Mount virtual fs if needed and chroot into the build env - gen-chroot|-gs Generate a chroot using the last cooking base rootfs - umount-chroot|-uc Unmount chroot specified on cmdline (--forced to force) + chroot|-c Mount virtual fs if needed and chroot into the build env + gen-chroot|-gc Generate a chroot using packages from config file + umount-chroot|-uc Unmount chroot specified on cmdline clean-chroot Clean a chroot environment (skip root/ and home/) purge Remove obsolete packages and obsolete source tarballs dry-purge Show obsolete packages and obsolete source tarballs @@ -38,29 +37,26 @@ dry-push|-dp Show what will be uploaded to the mirror. Does nothing pull Download new packages from the main mirror dry-pull Show what will be downloaded from the mirror. Does nothing - pack-flavors Pack all SliTaz Live flavors at once - relpkg|-rp Archive and upload new package/project version - reliso|-ri Create all main flavors (not loram)\n" + relpkg|-rp Archive and upload new package/project version\n" } -get_version() -{ - if [ "$2" = "stable" ]; then - version=stable - slitaz=$STABLE - elif [ -n "$2" ]; then - # Undigest - custom ? +get_version() { + # Stable, undigest or custom. + if [ "$2" ] && [ ! $(echo $2 | grep "\--*") ]; then version=$2 slitaz=$SLITAZ_HOME/$2 else version=cooking slitaz=$COOKING fi - rootfs=$slitaz/chroot + if [ "$arch" ]; then + rootfs=$slitaz/$arch/chroot + else + rootfs=$slitaz/chroot + fi } -check_mirror() -{ +check_mirror() { # ping -c 1 $MIRROR if [ -n "$2" ]; then user=$2 @@ -84,15 +80,6 @@ { mkdir -p $1 $2 mount -o bind $1 $2 - - # Update aufs jail configuration - # BUGGY - #if [ "${2#*/home}" != "$2" ] && - #grep -s ^AUFS_MOUNTS= ${2%/home/*}/etc/slitaz/cook.conf && - #! grep -q /home${2#*/home} ${2%/home/*}/etc/slitaz/cook.conf; then - #sed -i "s|^AUFS_MOUNTS=\"|&/home${2#*/home}|" \ - #${2%/home/*}/etc/slitaz/cook.conf - #fi } # Mount virtual Kernel file systems and chroot but check that nobody @@ -119,43 +106,31 @@ fi } -# Unmount virtual Kernel file systems on exit and ensure we are the last -# user before unmounting ! -umount_chroot() -{ - [ "$1" ] && ROOTF=$1 +# Unmount virtual Kernel file systems. +umount_chroot() { + [ "$1" ] && rootfs=$1 fs=$rootfs/home/slitaz echo -ne "\nUnmounting virtual filesystems..." umount $rootfs/dev/shm umount $rootfs/dev/pts umount $rootfs/sys umount $rootfs/proc - umount $fs/src - umount $fs/packages + if mount | fgrep -q $fs/src; then + umount $fs/src + umount $fs/packages + fi status && echo "" - #echo -e "\nProcess: $ps\n" - #ps | grep `basename $0` | grep -v grep - #echo -e "\nLeaving virtual filesystems unmounted (`pidof tazdev`)...\n" } # Get the last cooking base rootfs, extract and configure. -gen_new_chroot() -{ - echo -e "\nGenerating new chroot in : $rootfs" +gen_chroot() { + echo -e "\nGenerating new chroot in: $rootfs" separator mkdir -p $rootfs - if [ "$ROOTFS_PKG" == "yes" ]; then - for pkg in $CHROOT_PKGS - do - tazpkg get-install $pkg --root=$rootfs - done - elif [ "$ROOTFS_PKG" == "no" ]; then - cd $rootfs - wget $DL_URL/boot/cooking/rootfs-base.gz - echo -n "Extracting the rootfs..." - lzma d rootfs-base.gz -so | cpio -id - rm rootfs-base.gz - fi + for pkg in $CHROOT_PKGS + do + tazpkg get-install $pkg --root=$rootfs + done echo -n "Creating resolv.conf..." cat /etc/resolv.conf > $rootfs/etc/resolv.conf status @@ -165,39 +140,38 @@ } # Remove obsolate slitaz packages -purge_packages() -{ +purge_packages() { arg=$1 tmp=/tmp/tazdev.$$ - ls $BUILD_WOK | while read pkg; do - [ -f $BUILD_WOK/$pkg/taz/*/receipt ] || continue - EXTRAversion="" - . $BUILD_WOK/$pkg/taz/*/receipt - echo $pkg-$version$EXTRAversion.tazpkg + ls $wok| while read pkg; do + [ -f $wok/$pkg/taz/*/receipt ] || continue + unset VERSION EXTRAVERSION + . $wok/$pkg/taz/*/receipt + echo $pkg-${VERSION}$EXTRAVERSION.tazpkg done > $tmp ls $slitaz/chroot/home/slitaz/packages | while read pkg; do case "$pkg" in - *.tazpkg) - grep -q ^$pkg$ $tmp && continue - echo Remove $pkg - [ "$arg" == "purge" ] && - rm -f $slitaz/chroot/home/slitaz/packages/$pkg ;; + *.tazpkg) + grep -q ^$pkg$ $tmp && continue + echo "Removing pkg: $pkg" + [ "$arg" == "purge" ] && + rm -f $slitaz/chroot/home/slitaz/packages/$pkg ;; esac done rm -f $tmp } # Remove obsolete source tarballs -purge_sources() -{ +purge_sources() { arg=$1 + wok=$slitaz/chroot/home/slitaz/wok tmp=/tmp/tazdev.$$ - ls $BUILD_WOK | while read pkg; do - [ -f $BUILD_WOK/$pkg/receipt ] || continue + ls $wok| while read pkg; do + [ -f $wok/$pkg/receipt ] || continue TARBALL="" - . $BUILD_WOK/$pkg/receipt + . $wok/$pkg/receipt [ -n "$TARBALL" ] && echo $TARBALL - grep SOURCES_REPOSITORY/ $BUILD_WOK/$pkg/receipt | sed \ + grep SOURCES_REPOSITORY/ $wok/$pkg/receipt | sed \ -e 's|.*SOURCES_REPOSITORY/\([^ ]*\)\( .*\)$|\1|' \ -e 's|.*SOURCES_REPOSITORY/\([^ ]*\)$|\1|' | sort | uniq | \ sed "s|['\"/]||g" | while read file ; do @@ -206,14 +180,21 @@ done > $tmp ls $slitaz/chroot/home/slitaz/src | while read pkg; do grep -q ^$pkg$ $tmp && continue - echo Remove $pkg + echo "Removing src: $pkg" [ "$arg" == "purge" ] && - rm -f $slitaz/chroot/home/slitaz/src/$pkg + rm -f $slitaz/chroot/home/slitaz/src/$pkg done rm -f $tmp } case "$1" in + info) + get_version $@ + echo "" + echo "Version: $version" + [ "$arch" ] && echo "Arch : $arch" + echo "Chroot : $rootfs" + echo "" ;; projects-stats|-ps) echo -e "\nStatistics for: $PROJECTS\n" echo -n "Project" && echo -ne "\033[24G Size" && echo -ne "\033[38G Revision" @@ -238,7 +219,7 @@ done separator echo "" ;; - chroot) + chroot|-c) # Chroot into a build env. Default to cooking configured in tazdev.conf check_root get_version $@ @@ -254,14 +235,18 @@ umount_chroot $rootfs ;; gen-chroot|-gc) check_root - get_version $@ - [ -d "$2" ] && rootfs=$2 + # We can use: --rootfs=/path/to/chroot + if [ "$rootfs" ]; then + continue + else + get_version $@ + fi # Dont break another env. if [ -d $rootfs/bin ]; then echo -e "\nA chroot environment already exists in : $rootfs\n" exit 1 fi - gen_new_chroot ;; + gen_chroot ;; clean-chroot) # Keep root/ and /home they may have a build wok, custom scripts, etc. check_root @@ -280,13 +265,13 @@ exit 1 fi cd $rootfs || exit 1 - echo -e "\nCleaning chroot in: $rootfs" + echo "" + boldify "Cleaning chroot: $rootfs" separator - for i in bin dev etc lib media mnt proc sbin sys tmp usr var + for i in bin dev etc lib media mnt proc sbin sys tmp usr var run do - echo -n "Removing: $i (`du -sh $i | awk '{ print $1 }'`)... " - rm -rf $i - status + echo -n "Removing: $i ($(du -sh $i | awk '{ print $1 }'))... " + rm -rf $i && status done separator && echo "" ;; push|-p) @@ -352,27 +337,6 @@ sed -i s"/VERSION=.*/VERSION=\"$version\"/" $pkg*/receipt status fi ;; - reliso|-ri) - # Generate all official images iso at once for a specific version. - get_version $@ - iso=$slitaz/iso - mkdir -p $iso - for flavor in base core gtkonly firefox - do - cd $slitaz - tazlito pack-flavor $flavor - tazlito get-flavor $flavor - tazlito gen-distro - if [ "$flavor" == "core" ]; then - cp distro/slitaz-$flavor.iso $ISO/slitaz-$version.iso - cd $ISO && md5sum slitaz-$version.iso > slitaz-$version.md5 - else - cp distro/slitaz-$flavor.iso $ISO/slitaz-$version-$flavor.iso - cd $ISO && md5sum slitaz-$version-$flavor.iso slitaz-$version-$flavor.md5 - fi - done - # Clean up slitaz working directory. - rm *.flavor tazlito.conf ;; help) [ ! "$2" ] && echo "Missing tool/library name" && exit 0 echo "" diff -r d852a86d0701 -r 0bc5984a5cb9 tazdev/tazdev.conf --- a/tazdev/tazdev.conf Thu May 03 09:54:12 2012 +0200 +++ b/tazdev/tazdev.conf Sat May 05 02:33:39 2012 +0200 @@ -11,14 +11,10 @@ # Path to all own and copy projects. PROJECTS="$HOME/Projects" -# Install chroot with packages. -ROOTFS_PKG="yes" - # Packages to generate a minimal chroot. -CHROOT_PKGS="busybox libtaz cookutils tazpkg slitaz-base-files lzma" +CHROOT_PKGS="slitaz-base-files busybox cookutils tazpkg lzma" # Main mirror to push and download (ISO, rootfs. etc). MIRROR="mirror.slitaz.org" -DL_URL="http://mirror.switch.ch/ftp/mirror/slitaz" MIRROR_PKGS="/var/www/slitaz/mirror/packages" MIRROR_SOURCES="/var/www/slitaz/mirror/sources"