]> git.pld-linux.org Git - projects/pld-builder.new.git/commitdiff
Merge changes from CVS
authorKacper Kornet <draenog@pld-linux.org>
Tue, 10 Jul 2012 04:35:38 +0000 (05:35 +0100)
committerKacper Kornet <draenog@pld-linux.org>
Tue, 10 Jul 2012 04:35:38 +0000 (05:35 +0100)
PLD_Builder/install.py
PLD_Builder/rpm_builder.py
client/make-request.sh
client/rebuild-th-kernel.sh
client/send-last-th-tag.sh
etc/pld-builder.init

index 6915133eaf58373e7e10891671bfb463d2f8c63e..91cc889bc83ab254108278e037edf4dd6ae92409 100644 (file)
@@ -102,7 +102,7 @@ def uninstall_self_conflict(b):
     b.log_line("checking BuildConflict-ing packages")
     packagename = b.spec[:-5]
     tmpdir = os.environ.get('HOME') + "/rpm/BUILD/%s/tmp" % packagename
-    f = chroot.popen("set -ex; TMPDIR=%(tmpdir)s rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %(rpmdefs)s rpm/packages/%(package)s/%(spec)s 2>&1" % {
+    f = chroot.popen("set -e; TMPDIR=%(tmpdir)s rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %(rpmdefs)s rpm/packages/%(package)s/%(spec)s 2>&1" % {
         'tmpdir': tmpdir,
         'rpmdefs' : b.rpmbuild_opts(),
         'package' : packagename,
@@ -131,7 +131,7 @@ def install_br(r, b):
         packagename = b.spec[:-5]
         tmpdir = os.environ.get('HOME') + "/rpm/BUILD/%s/tmp" % packagename
         chroot.run("install -m 700 -d %s" % tmpdir)
-        cmd = "set -ex; TMPDIR=%(tmpdir)s rpmbuild --nobuild %(rpmdefs)s rpm/packages/%(package)s/%(spec)s 2>&1" % {
+        cmd = "set -e; TMPDIR=%(tmpdir)s rpmbuild --nobuild %(rpmdefs)s rpm/packages/%(package)s/%(spec)s 2>&1" % {
             'tmpdir': tmpdir,
             'rpmdefs' : b.rpmbuild_opts(),
             'package' : packagename,
index 3072f4d7f35561130cb460e4672b3fadc50e12af..e42c085fee48f830bf81c25cee82d547a39753ba 100644 (file)
@@ -64,10 +64,16 @@ def check_skip_build(r, b):
             f = urllib2.urlopen(req)
             good = True
         except urllib2.HTTPError, error:
-                return False
+            return False
         except urllib2.URLError, error:
             # see errno.h
-            if error.errno in [-3, 60, 61, 110, 111]:
+            try:
+                errno = error.errno
+            except AttributeError:
+                # python 2.4
+                errno = error.reason[0]
+
+            if errno in [-3, 60, 61, 110, 111]:
                 b.log_line("unable to connect... trying again")
                 continue
             else:
@@ -101,7 +107,13 @@ def fetch_src(r, b):
                 return False
         except urllib2.URLError, error:
             # see errno.h
-            if error.errno in [-3, 60, 61, 110, 111]:
+            try:
+                errno = error.errno
+            except AttributeError:
+                # python 2.4
+                errno = error.reason[0]
+
+            if errno in [-3, 60, 61, 110, 111]:
                 b.log_line("unable to connect to %s... trying again" % (src_url))
                 continue
             else:
@@ -132,6 +144,9 @@ def prepare_env():
         test ! -c /dev/urandom && rm -f /dev/urandom && mknod -m 644 /dev/urandom c 1 9
         test ! -c /dev/zero && rm -f /dev/zero && mknod -m 666 /dev/zero c 1 5
 
+        # need entry for "/" in mtab, for diskspace() to work in rpm
+        [ -z $(awk '$2 == "/" {print $1}' /etc/mtab) ] && mount -f -t rootfs rootfs /
+
         # make neccessary files readable for builder user
         # TODO: see if they really aren't readable for builder
         for db in Packages Name Basenames Providename Pubkeys; do
index a213be8b6f8767c353ff0b86e4d1ed6755c50c51..35b94f9fe5fb374a19cc61a12cb0f51ffdfb3cc6 100755 (executable)
@@ -11,10 +11,11 @@ command=
 command_flags=
 gpg_opts=
 default_branch='HEAD'
-distro=
+dist=
 url=
 no_depend=no
 verbose=no
+autotag=no
 
 if [ -x /usr/bin/python ]; then
        send_mode="python"
@@ -39,7 +40,7 @@ send_mode="$send_mode"
 url="$url"
 mailer="/usr/sbin/sendmail -t"
 gpg_opts=""
-distro=th
+dist=th
 url="http://src.th.pld-linux.org:1234/"
 
 # defaults:
@@ -50,6 +51,10 @@ fi
 
 if [ -f "$USER_CFG" ]; then
        . $USER_CFG
+       # legacy fallback
+       if [ "${distro:+set}" = "set" ]; then
+               dist=$distro
+       fi
 fi
 
 # internal options, not to be overriden
@@ -146,6 +151,45 @@ df_fetch() {
        done
 }
 
+# autotag from rpm-build-macros
+# displays latest used tag for a specfile
+autotag() {
+       local out s
+       for s in "$@"; do
+               # strip branches
+               s=${s%:*}
+               # ensure package ends with .spec
+               s=${s%.spec}.spec
+               out=$(cvs status -v $s | awk "!/Sticky/&&/auto-$dist-/{if (!a++) print \$1}")
+               echo "$s:$out"
+       done
+}
+
+# get autotag for specs
+# WARNING: This may checkout some files from CVS
+get_autotag() {
+       local pkg spec rpmdir
+
+       rpmdir=$(rpm -E %_topdir)
+       cd $rpmdir
+       for pkg in "$@"; do
+               # strip branches
+               pkg=${pkg%:*}
+               # strip .spec extension
+               pkg=${pkg%.spec}
+               # checkout only if missing
+               if [ ! -e $pkg/$pkg.spec ]; then
+                       $rpmdir/builder -g $pkg -ns -r HEAD 1>&2
+               fi
+               if [ ! -e $pkg/$pkg.spec ]; then
+                       # just print it out, to fallback to base pkg name
+                       echo "$pkg"
+               else
+                       autotag $pkg/$pkg.spec
+               fi
+       done
+}
+
 usage() {
        cat <<EOF
 Usage: make-request.sh [OPTION] ... [SPECFILE] ....
@@ -155,8 +199,11 @@ Mandatory arguments to long options are mandatory for short options too.
       --config-file /path/to/config/file
             Source additional config file (after $USER_CFG), useful when
             when sending build requests to Ac/Th from the same account
+      -a
+            Try to use latest auto-tag for the spec when building
+            WARNING: This will checkout new files to your packages dir
       -b 'BUILDER BUILDER ...',  --builder='BUILDER BUILDER ...'
-           Sends request to given builders (in 'version-arch' format)
+            Sends request to given builders (in 'version-arch' format)
       --with VALUE, --without VALUE
             Build package with(out) a given bcond
       --kernel VALUE
@@ -184,8 +231,8 @@ Mandatory arguments to long options are mandatory for short options too.
       -j, --jobs
             Number of parallel jobs for single build
       -f, --flag
-      -d, --distro DISTRO
-            Specify value for \$distro
+      -d, --dist DISTRIBUTION_ID
+            Specify value for \$dist
       -df,  --distfiles-fetch[-request] PACKAGE
             Send distfiles request to fetch sources for PACKAGE
       -cf, --command-flag
@@ -216,8 +263,8 @@ EOF
        exit 0
 }
 
-# validate distro, set $distro
-set_distro() {
+# validate distro, set $dist
+set_dist() {
        case "$1" in
        ac)
                ;;
@@ -234,17 +281,17 @@ set_distro() {
        aidath)
                ;;
        *)
-               die "distro \`$1' not known"
+               die "dist \`$1' not known"
                ;;
        esac
 
-       distro=$1
+       dist=$1
 }
 
 while [ $# -gt 0 ] ; do
        case "$1" in
-               --distro | -d)
-                       set_distro $2
+               -d | --dist | --distro)
+                       set_dist $2
                        shift
                        ;;
 
@@ -260,6 +307,10 @@ while [ $# -gt 0 ] ; do
                        shift
                        ;;
 
+               -a)
+                       autotag=yes
+                       ;;
+
                --with)
                        with="$with $(echo "$2" | tr ',' ' ')"
                        shift
@@ -418,7 +469,7 @@ while [ $# -gt 0 ] ; do
        shift
 done
 
-case "$distro" in
+case "$dist" in
 ac)
        builder_email="builder-ac@pld-linux.org"
        default_builders="ac-*"
@@ -426,13 +477,13 @@ ac)
        url="http://ep09.pld-linux.org:1289/"
        control_url="http://ep09.pld-linux.org/~buildsrc"
        ;;
-ac-java) # fake "distro" for java available ac architectures
+ac-java) # fake "dist" for java available ac architectures
        builder_email="builder-ac@pld-linux.org"
        default_builders="ac-i586 ac-i686 ac-athlon ac-amd64"
        default_branch="AC-branch"
        url="http://ep09.pld-linux.org:1289/"
        ;;
-ac-xen) # fake "distro" for xen-enabled architectures
+ac-xen) # fake "dist" for xen-enabled architectures
        builder_email="builder-ac@pld-linux.org"
        default_builders="ac-i686 ac-athlon ac-amd64"
        default_branch="AC-branch"
@@ -455,7 +506,7 @@ th)
        url="http://src.th.pld-linux.org:1234/"
        control_url="http://src.th.pld-linux.org"
        ;;
-th-java) # fake "distro" for java available th architectures
+th-java) # fake "dist" for java available th architectures
        builder_email="builderth@pld-linux.org"
        default_builders="th-x86_64 th-athlon th-i686"
        url="http://src.th.pld-linux.org:1234/"
@@ -465,11 +516,11 @@ aidath)
        default_builders="aidath-*"
        ;;
 *)
-       die "distro \`$distro' not known"
+       die "dist \`$dist' not known"
        ;;
 esac
 
-# need to do this after distro selection
+# need to do this after dist selection
 if [ "$skip" ]; then
        skip=$(skip="$skip" control_url="$control_url" python -c '
 import urllib2
@@ -525,7 +576,7 @@ print string.join(skip, ",")
        priority=-1
        command="skip:$skip"
        command_flags="no-chroot"
-       builders="$distro-src"
+       builders="$dist-src"
 fi
 
 branch=${branch:-$default_branch}
@@ -533,7 +584,7 @@ branch=${branch:-$default_branch}
 specs=`for s in $specs; do
        case "$s" in
        ^)
-               # skip marker
+               # skip marker - pass it along
                echo $s
                ;;
        *.spec:*) # spec with branch
@@ -551,6 +602,11 @@ specs=`for s in $specs; do
        esac
 done`
 
+if [ "$autotag" = "yes" ]; then
+       msg "Auto autotag build enabled"
+       specs=$(get_autotag $specs)
+fi
+
 if [ "$df_fetch" = "yes" ]; then
        df_fetch $specs
        exit 0
@@ -558,7 +614,7 @@ fi
 
 if [ "$upgrade_macros" = "yes" ]; then
        command="poldek --up; poldek -uv rpm-build-macros"
-       builders="$distro-src"
+       builders="$dist-src"
        f_upgrade=no
        build_mode=test
 fi
@@ -608,12 +664,18 @@ gen_req() {
                msg "Using jobs $jobs"
                echo "  <maxjobs>$jobs</maxjobs>"
        fi
-       msg "Build mode: $build_mode"
        if [ -z "$url" ]; then
                msg "Using email $builder_email"
        else
                msg "Using URL $url"
        fi
+
+       if [ "$build_mode" = "ready" ]; then
+               msg "Build mode: $(tput setaf 2)$build_mode$c_norm"
+       else
+               msg "Build mode: $(tput setaf 3)$build_mode$c_norm"
+       fi
+
        msg "Queue-ID: $id"
        echo
 
@@ -701,21 +763,26 @@ gen_req() {
 
 gen_email () {
        # make request first, so the STDERR/STDOUT streams won't be mixed
-       local req=$(gen_req)
+       local tmp req
+       tmp=$(mktemp)
+       gen_req > $tmp
 
        if [ "$verbose" = "yes" ]; then
-               echo >&2 -E "$req"
+               cat $tmp >&2
        fi
-cat <<EOF
-From: $requester
-To: $builder_email
-Subject: build request
-Message-Id: <$id@$(hostname)>
-X-New-PLD-Builder: request
-X-Requester-Version: \$Id$
-
-$(echo -E "$req" | gpg --clearsign --default-key $default_key $gpg_opts)
-EOF
+
+       cat <<-EOF
+       From: $requester
+       To: $builder_email
+       Subject: build request
+       Message-Id: <$id@$(hostname)>
+       X-New-PLD-Builder: request
+       X-Requester-Version: \$Id$
+
+       EOF
+
+       gpg --clearsign --default-key $default_key $gpg_opts --output=- $tmp
+       rm -f $tmp
 }
 
 gen_email | send_request
index 4d06c5bb60cc63e87c3fae5cd375756f3533a2f3..3688bae8b3ee43a3707aec90a981821c260142a2 100644 (file)
@@ -1,4 +1,5 @@
 #!/bin/sh
+set -e
 
 dir=$(cd "$(dirname "$0")"; pwd)
 rpmdir=$(rpm -E %_topdir)
@@ -6,39 +7,43 @@ dist=th
 
 pkgs_head="
        dahdi-linux
-       ipset
-       iscsitarget
-       lirc
-       madwifi-ng
-       open-vm-tools
-       r8168
-       VirtualBox
-       xorg-driver-video-nvidia
-       xorg-driver-video-nvidia-legacy3
-       xtables-addons
-       xorg-driver-video-fglrx
+       e1000e
+       igb
+       ipset
+       ixgbe
+       linuxrdac
+       lirc
+       madwifi-ng
+       open-vm-tools
+       r8168
+       VirtualBox
+       xorg-driver-video-fglrx
+       xorg-driver-video-fglrx-legacy-12.x
+       xorg-driver-video-nvidia
+       xtables-addons
 "
 
 pkgs_longterm="
-       $pkgs_head
+       iscsitarget
        openvswitch
-"
-pkgs_longterm_only="
-       e1000e
-       igb
+       xorg-driver-video-nvidia-legacy3
 "
 
 # autotag from rpm-build-macros
 # displays latest used tag for a specfile
 autotag() {
-       local out s
-       for s in "$@"; do
+       local out spec pkg
+       for spec in "$@"; do
                # strip branches
-               s=${s%:*}
+               pkg=${spec%:*}
                # ensure package ends with .spec
-               s=${s%.spec}.spec
-               out=$(cvs status -v $s | awk "!/Sticky/&&/auto-$dist-/{if (!a++) print \$1}")
-               echo "$s:$out"
+               spec=${pkg%.spec}.spec
+               # and pkg without subdir
+               pkg=${pkg#*/}
+               # or .ext
+               pkg=${pkg%%.spec}
+               out=$(cvs status -v $spec | awk "!/Sticky/&&/auto-$dist-$pkg-$alt_kernel/{if (!a++) print \$1}")
+               echo "$spec:$out"
        done
 }
 
@@ -56,6 +61,7 @@ get_last_tags() {
                        echo "$pkg"
                else
                        spec=$(autotag $pkg/$pkg.spec)
+                       spec=${spec#*/}
                        echo >&2 "... $spec"
                        echo $spec
                fi
@@ -65,18 +71,32 @@ get_last_tags() {
 cd $rpmdir
 case "$1" in
        head)
+               kernel=$(get_last_tags kernel)
+               kernel=$(echo ${kernel#*auto-??-} | tr _ .)
+               specs=""
                for pkg in $pkgs_head; do
+                       echo >&2 "Rebuilding $pkg..."
                        $rpmdir/builder -g $pkg -ns
-                       echo ./relup.sh -ui $a/$a.spec && make-request.sh -d th $a.spec
+                       $rpmdir/relup.sh -m "rebuild for $kernel" -ui $pkg/$pkg.spec
+                       specs="$specs $pkg.spec"
                done
+               $dir/make-request.sh -nd -r -d $dist $specs
                ;;
        longterm)
-               cd $rpmdir
-               specs=$(get_last_tags $pkgs_longterm)
-               $dir/make-request.sh -r -d $dist --kernel longterm --without userspace $specs
+               kernel=$(alt_kernel=longterm get_last_tags kernel)
+               kernel=$(echo ${kernel#*auto-??-} | tr _ .)
+               specs=""
+               for pkg in $pkgs_longterm; do
+                       echo >&2 "Rebuilding $pkg..."
+                       $rpmdir/builder -g $pkg -ns
+                       $rpmdir/relup.sh -m "rebuild for $kernel" -ui $pkg/$pkg.spec
+                       specs="$specs $pkg.spec"
+               done
+               # first build with main pkg (userspace), later build from tag
+               $dir/make-request.sh -nd -r -d $dist --without kernel $specs
 
-               specs=$pkgs_longterm_only
-               $dir/make-request.sh -r -d $dist --kernel longterm $specs
+               specs=$(get_last_tags $pkgs_head $pkgs_longterm)
+               $dir/make-request.sh -nd -r -d $dist --kernel longterm --without userspace $specs
                ;;
        *)
                # try to parse all args, filling them with last autotag
@@ -96,6 +116,6 @@ case "$1" in
                        shift
                done
                specs=$(get_last_tags $specs)
-               $dir/make-request.sh -r -d $dist $args $specs
+               $dir/make-request.sh -nd -r -d $dist $args $specs
                ;;
 esac
index 1d56bd5521940caed08d688b8d346bc1c0bdd74a..ad225015cedc2ac0affdc464bdfd2d15d0f1d555 100644 (file)
@@ -1,35 +1,8 @@
 #!/bin/sh
-arg="$@"
+set -e
 
-specs=""
-opt=""
+dist=th
 
-for i in $arg; do
-       case "$i" in
-               *.spec)
-               specs="$specs $1"
-               shift
-               ;;
-               *)
-               opt="$opt $i"
-               shift
-               ;;
-       esac
-done
-
-for i in $specs; do
-       dir=$(dirname $i)
-       pkg=$(basename $i)
-       cd $dir || exit 1
-       specfile="$pkg"
-       tag=$(cvs status -v $specfile |grep "th-" | head -n 1 | awk ' { print $1 } ')
-       if [ -z "$tag" ]; then
-               echo "Th tag not found for $specfile."
-               continue
-       fi
-       echo "Rebuilding $i from tag $tag..."
-       set -x
-       make-request.sh -d th $opt $pkg:$tag
-       set +x
-done
+dir=$(dirname $0)
 
+$dir/make-request.sh -d $dist -r -a "$@"
index 42b429dd7c2ad91c839e5c9e2a257310dd8cdfbe..8672b25ba704f16517bed8e77dcbf8b7462ad5cc 100644 (file)
@@ -22,8 +22,14 @@ mount_chroots() {
        local ret
        for CHROOT in $CHROOTS; do
                show "chroot: %s mount /proc" "$CHROOT"
-               ret=$(chroot $CHROOT mount /proc > /dev/null 2>&1; echo $?)
-               [ $ret -eq 0 ] && ok || fail
+               mount -t proc -o gid=17 none $CHROOT/proc
+               ret=$?
+               if [ $ret -eq 0 ]; then
+                       ok
+               else
+                       fail
+                       RETVAL=$ret
+               fi
        done
 }
 
@@ -31,8 +37,8 @@ umount_chroots() {
        local ret
        for CHROOT in $CHROOTS; do
                show "chroot: %s umount /proc" "$CHROOT"
-               ret=$(chroot $CHROOT umount /proc > /dev/null 2>&1; echo $?)
-               [ $ret -eq 0 ] && ok || fail
+               umount $CHROOT/proc
+               [ $? -eq 0 ] && ok || fail
        done
 }
 
@@ -40,8 +46,14 @@ chroots_status() {
        local ret
        for CHROOT in $CHROOTS; do
                show "chroot: %s is /proc mounted?" "$CHROOT"
-               ret=$(chroot $CHROOT mount 2> /dev/null | grep -q 'none.*/proc'; echo $?)
-               [ $ret -eq 0 ] && ok || fail
+               test -f $CHROOT/proc/mounts
+               ret=$?
+               if [ $ret -eq 0 ]; then
+                       ok
+               else
+                       fail
+                       RETVAL=$ret
+               fi
        done
 }
 
This page took 0.183192 seconds and 4 git commands to generate.