source: MondoRescue/trunk/tools/build2pkg@ 900

Last change on this file since 900 was 900, checked in by Bruno Cornec, 17 years ago

Huge patch to introduce low level functions that will bw used everywhere (mr_free, mr_asprintf, ...)
Nearly linking now due to that.

  • Property svn:executable set to *
File size: 3.0 KB
RevLine 
[553]1#!/bin/bash
2#
3# Creates packages from build repository
4#
5# $Id$
6#
7# Syntax: build2pkg [version-tag [pkg list]]
8#
9
[764]10(
[553]11dname=`dirname $0`
12prem=`echo $dname |cut -c1`
13if [ ${prem} == "/" ]; then
14 export TOOLHOME=$dname
15else
16 export TOOLHOME=${PWD}/$dname
17fi
18
19. $TOOLHOME/common-env
20. $TOOLHOME/distro-env
21
22# We need to get $VER and $TAG
23if [ "$1" = "" ]; then
24 LAST=`cat ${TOPDIR}/LAST`
25else
26 LAST=$1
27 shift
28fi
29VER=`echo $LAST | cut -d- -f1`
30TAG=`echo $LAST | cut -d- -f2`
31echo "Working on ${VER}-$TAG"
32
33if [ "$1" = "" ]; then
[839]34 c="mondo-doc mindi mindi-busybox mondo"
[553]35else
36 if [ "$1" = "all" ]; then
[839]37 c="mindi-kernel mondo-doc mindi mindi-busybox mondo"
[553]38 else
39 c=$1
40 fi
41fi
42
43status=0
44
45#
46# Define on which distro we are to generate the right packages
47#
48
49export pkg=""
[588]50echo "Working under $TOPBUILDDIR"
[553]51cd $TOPBUILDDIR
52
53for p in $c; do
54 # s= stable; t = trunk; 1-9 = official version
55 src=${TOPDIR}/${VER}-$TAG/$p-[1-9st]*.tar.gz
56 pv=`basename $src .tar.gz`
[764]57 PVER=`echo $pv | sed "s|^$p-||" | cut -d- -f1`
[553]58
59 if [ _"$dtype" = _"rpm" ]; then
[556]60 if [ _"$p" = _"mondo-doc" ]; then
61 ar="noarch"
62 else
63 ar=$ARCH
64 fi
[553]65
[900]66 log=$MONDOTMP/$p-rpm.log
[553]67
[764]68 if [ "$dfam" = "mandriva" ] || [ "$dfam" = "suse" ]; then
69 echo "Using bzip2 files ($dfam)"
[782]70 ln -sf ${TOPDIR}/${VER}-$TAG/$pv.tar.bz2 SOURCES/
[553]71 else
[764]72 echo "Using gzip files ($dfam)"
[553]73 ln -sf $src SOURCES/
74 fi
[588]75 echo "Generating $p RPMS"
[553]76 cd SPECS
[764]77 tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p.spec
78 mv $p-${PVER}/distributions/${ddir}-$dver/$p.spec .
79 rm -rf $p-${PVER}
[553]80
[764]81 rpmbuild -ba $p.spec 2>&1 | tee $log
[553]82 if [ $? != 0 ]; then
83 status=-1
[729]84 else
[900]85 export pkg1="`egrep '^Wrote:' $log | grep -v debug | cut -d: -f2`"
[764]86 if [ -f /usr/bin/rpmlint ]; then
[900]87 /usr/bin/rpmlint $pkg1
[764]88 else
89 echo "No rpmlint found, please install it"
90 fi
[900]91 export pkg="$pkg `ls $pkg1 | grep -v src.rpm`"
[553]92 fi
[600]93 rm -rf ${TOPBUILDDIR}/BUILD/*
[553]94 cd ..
[588]95 elif [ _"$dtype" = _"ebuild" ]; then
[764]96 tar xfz $src $p-${PVER}/distributions/${ddir}-$dver/$p-${PVER}.ebuild
[588]97 if [ _"`grep $TOPBUILDDIR/portage /etc/make.conf`" = _"" ]; then
98 echo "Adding $TOPBUILDDIR/portage to /etc/make.conf"
99 echo "PORTDIR_OVERLAY=\"$TOPBUILDDIR/portage\"" >> /etc/make.conf
100 fi
[556]101
[588]102 mkdir -p ${TOPBUILDDIR}/portage/sys-apps/$p
[764]103 mv $p-${PVER}/distributions/${ddir}-$dver/$p-${PVER}.ebuild ${TOPBUILDDIR}/portage/sys-apps/$p/$p-${PVER}.ebuild
104 rm -rf $p-${PVER}
[588]105
106 cd ${TOPBUILDDIR}/portage/sys-apps/$p
[782]107 ebuild $p-${PVER}.ebuild digest
[556]108 if [ $? != 0 ]; then
109 status=-1
110 fi
[782]111 ebuild $p-${PVER}.ebuild package
[588]112 if [ $? != 0 ]; then
113 status=-1
114 fi
115 elif [ _"$dtype" = _"deb" ]; then
116 cd $TOPBUILDDIR
117 tar xfz $src
[764]118 cd ${p}-${PVER}
[672]119 # point to the right debian conf
120 ln -s distributions/${ddir}-$dver debian
121 dpkg-buildpackage -us -uc -rfakeroot
[588]122 # Et voila !
[556]123 else
124 echo "Unknown"
[553]125 fi
126done
[556]127echo "Packages handled : $pkg"
[553]128
[900]129rm -rf $MONDOTMP
[672]130
[553]131if [ $status = 0 ]; then
132 if [ _"$dtype" = _"rpm" ]; then
[556]133 echo "Installing RPMS as root"
[553]134 su - -c "$opt rpm -Uvh --force $pkg"
135 fi
136fi
[764]137) 2>&1 | tee /tmp/build2pkg.log
Note: See TracBrowser for help on using the repository browser.