Jesse Keating wrote:
On Mon, 2008-04-21 at 13:44 +0200, Jeroen van Meeuwen wrote:
Or were you thinking something else?

[...snip...]
That's the fairly rough overview.


Revisiting this topic;

I've got this implemented differently right now; I'm pointing buildinstall to one or more of the enabled repositories configured, as it's just using yum with a configuration file that can perfectly point at baseurls and mirrorlists. This does require some modifications to buildinstall though, and I'm not sure whether the anaconda guys would even consider it.

Attached is a the modified buildinstall script taking multiple --repo parameters (currently only taking baseurls though).

Kind regards,

Jeroen van Meeuwen
-kanarip
#!/bin/bash
#
# buildinstall
#
# Copyright (C) 2007  Red Hat, Inc.  All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

usage() {
    echo "Usage: buildinstall --version <version> --product <product> --release 
<comment> [--output outputdir] [--discs <discstring>] <root>" >&2
    exit 1
}

PRODUCTPATH="anaconda"

declare -a repositories

while [ $# -gt 0 ]; do
    case $1 in
    # general options affecting how we build things
    --nogr)
        NOGRSTR="--nogr"
        shift
        ;;
    --debug)
        DEBUGSTR="--debug"
        shift
        ;;

    # release information
    --version)
        VERSION=$2
        shift; shift
        ;;
    --release)
        RELEASESTR=$2
        shift; shift
        ;;
    --product)
        PRODUCTSTR=$2
        shift; shift
        ;;
    --variant)
        VARIANT=$2
        shift; shift
        ;;
    --bugurl)
        BUGURL=$2
        shift; shift
        ;;

    --output)
        OUTPUT=$2
        shift; shift
        ;;
    --updates)
        UPDATES=$2
        shift; shift
        ;;
    --repo)
        [EMAIL PROTECTED]
        shift; shift
        ;;
    *)
        REPO=$1
        shift
        ;;
    esac
done

if [ -z "$PRODUCTSTR" ]; then
    usage
fi

if [ -z "$VERSION" ]; then
    usage
fi

if [ -z "$REPO" ]; then
    usage
fi

if [ -z "$RELEASESTR" ]; then
    usage
fi

if [ -z "$BUGURL" ]; then
    BUGURL="your distribution provided bug reporting tool."
fi

if [[ "$REPO" =~ ^/ ]]; then
    [ -n "$OUTPUT" ] || OUTPUT=$REPO
    REPO="file://$REPO"
fi

if [ -z "$OUTPUT" ]; then
    usage
fi

if [ ! -d "$OUTPUT" ]; then
    mkdir -p $OUTPUT
fi

yumconf=$(mktemp /tmp/yum.conf.XXXXXX)
cat > $yumconf <<EOF
[main]
keepcache=0
gpgcheck=0
plugins=0
reposdir=
tsflags=nodocs
EOF

if [ [EMAIL PROTECTED] -lt 1 ]; then
    cat >> $yumconf <<EOF
[anacondarepo]
name=anaconda repo
baseurl=$REPO
enabled=1
EOF
else
    i=0
    while [ $i -lt [EMAIL PROTECTED] ]; do
        cat >> $yumconf <<EOF
[repo-$i]
name=anaconda repo $i
baseurl=${repositories[$i]}
enabled=1
EOF
        i=$[ $i + 1 ]
    done
fi

BUILDINSTDIR=`mktemp -d ${TMPDIR:-/tmp}/buildinstall.tree.XXXXXX`
TREEDIR=`mktemp -d ${TMPDIR:-/tmp}/treedir.XXXXXX`

echo "Running buildinstall..."

pushd $BUILDINSTDIR
BUILDARCH=`repoquery -c $yumconf --qf "%{ARCH}\n" anaconda-runtime`
yumdownloader -c $yumconf anaconda-runtime || exit 1
rpm2cpio anaconda-runtime*rpm | cpio --quiet -iumd './usr*'
rm -f anaconda-runtime*rpm
popd

UPD_INSTROOT=./upd-instroot
MK_IMAGES=./mk-images
MK_TREEINFO=./maketreeinfo.py
MK_STAMP=./makestamp.py
BUILDINSTALL=./buildinstall

for f in $UPD_INSTROOT $MK_IMAGES $MK_STAMP $MK_TREEINFO $BUILDINSTALL; do
    if [ -n "$UPDATES" -a -f $UPDATES/usr/lib/anaconda-runtime/$f ]; then
    cp -a $UPDATES/usr/lib/anaconda-runtime/$f* $BUILDINSTDIR/
    elif [ ! -f $f ]; then
    cp -a $BUILDINSTDIR/usr/lib/anaconda-runtime/$f* $BUILDINSTDIR/
    else
    cp -a $f* $BUILDINSTDIR/
    fi
done

UPD_INSTROOT=$BUILDINSTDIR/upd-instroot
MK_IMAGES=$BUILDINSTDIR/mk-images
MK_TREEINFO=$BUILDINSTDIR/maketreeinfo.py
MK_STAMP=$BUILDINSTDIR/makestamp.py
BUILDINSTALL=$BUILDINSTDIR/buildinstall

if [ -n "$UPDATES" ]; then UPDATES="--updates $UPDATES"; fi

echo "Building images..."
$UPD_INSTROOT $DEBUGSTR $NOGRSTR --arch $BUILDARCH $UPDATES --mindir 
$TREEDIR/minstg2 --stg2dir $TREEDIR/stage2 $yumconf

echo "Writing .treeinfo file..."
$MK_TREEINFO --family="$PRODUCTSTR" ${VARIANT:+--variant="$VARIANT"} 
--version=$VERSION --arch=$BUILDARCH --outfile=$OUTPUT/.treeinfo

# FIXME: need to update mk-images to take the yumconf
echo "Making images..."
$MK_IMAGES $DEBUGSTR $NOGRSTR --mindir $TREEDIR/minstg2 --stg2dir 
$TREEDIR/stage2 --arch $BUILDARCH --product "$PRODUCTSTR" --version $VERSION 
--bugurl "$BUGURL" --output $OUTPUT $yumconf

echo "Writing .discinfo file"
$MK_STAMP --releasestr="$RELEASESTR" --arch=$BUILDARCH --discNum="ALL"  
--outfile=$OUTPUT/.discinfo

rm -rf $TREEDIR $BUILDINSTDIR
rm -f $yumconf
--
Fedora-buildsys-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/fedora-buildsys-list

Reply via email to