#!/bin/bash # # Creates packages from build repository # # $Id$ # # Syntax: build2pkg [version-tag [pkg list]] # ( dname=`dirname $0` prem=`echo $dname |cut -c1` if [ ${prem} == "/" ]; then export TOOLHOME=$dname else export TOOLHOME=${PWD}/$dname fi . $TOOLHOME/common-env . $TOOLHOME/distro-env # We need to get $VER and $TAG if [ "$1" = "" ]; then LAST=`cat ${TOPDIR}/LAST` else LAST=$1 shift fi VER=`echo $LAST | cut -d- -f1` TAG=`echo $LAST | cut -d- -f2` echo "Working on ${VER}-$TAG" if [ "$1" = "" ]; then c="mondo-doc mindi mindi-busybox mondo" else if [ "$1" = "all" ]; then c="mindi-kernel mondo-doc mindi mindi-busybox mondo" else c="$*" fi fi status=0 # # Define on which distro we are to generate the right packages # export pkg="" echo "Working under $TOPBUILDDIR" cd $TOPBUILDDIR for p in $c; do # s= stable; t = trunk; 1-9 = official version src=${TOPDIR}/${VER}-$TAG/$p-[1-9st]*.tar.gz pv=`basename $src .tar.gz` PVER=`echo $pv | sed "s|^$p-||" | cut -d- -f1` if [ _"$dtype" = _"rpm" ]; then if [ _"$p" = _"mondo-doc" ]; then ar="noarch" else ar=$ARCH fi log=$MONDOTMP/$p-rpm.log if [ "$dfam" = "mandriva" ] || [ "$dfam" = "suse" ]; then echo "Using bzip2 files ($dfam)" ln -sf ${TOPDIR}/${VER}-$TAG/$pv.tar.bz2 SOURCES/ else echo "Using gzip files ($dfam)" ln -sf $src SOURCES/ fi echo "Generating $p RPMS" cd SPECS tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p.spec mv $p-${PVER}/distributions/${ddir}-$dver/$p.spec . rm -rf $p-${PVER} # set LANGUAGE to check for correct log messages export LANGUAGE=C rpmbuild -ba $p.spec 2>&1 | tee $log if [ $? != 0 ]; then status=-1 else export pkg1="`egrep '^Wrote:' $log | grep -v debug | cut -d: -f2`" if [ -f /usr/bin/rpmlint ]; then /usr/bin/rpmlint $pkg1 else echo "No rpmlint found, please install it" fi export pkg="$pkg `ls $pkg1 | grep -v src.rpm`" fi rm -rf ${TOPBUILDDIR}/BUILD/* cd .. elif [ _"$dtype" = _"ebuild" ]; then tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p-${PVER}.ebuild if [ _"`grep $TOPBUILDDIR/portage /etc/make.conf`" = _"" ]; then echo "Adding $TOPBUILDDIR/portage to /etc/make.conf" echo "PORTDIR_OVERLAY=\"$TOPBUILDDIR/portage\"" >> /etc/make.conf fi mkdir -p ${TOPBUILDDIR}/portage/sys-apps/$p mv $p-${PVER}/distributions/${ddir}-$dver/$p-${PVER}.ebuild ${TOPBUILDDIR}/portage/sys-apps/$p/$p-${PVER}.ebuild rm -rf $p-${PVER} cd ${TOPBUILDDIR}/portage/sys-apps/$p ebuild $p-${PVER}.ebuild digest if [ $? != 0 ]; then status=-1 fi ebuild $p-${PVER}.ebuild package if [ $? != 0 ]; then status=-1 fi elif [ _"$dtype" = _"deb" ]; then cd $TOPBUILDDIR tar xfz $src cd ${p}-${PVER} # point to the right debian conf ln -s distributions/${ddir}-$dver debian dpkg-buildpackage -us -uc -rfakeroot # Et voila ! else echo "Unknown" fi done echo "Packages handled : $pkg" rm -rf $MONDOTMP if [ $status = 0 ]; then if [ _"$dtype" = _"rpm" ]; then echo "Installing RPMS as root" su - -c "$opt rpm -Uvh --force $pkg" fi fi ) 2>&1 | tee /tmp/build2pkg.log