Hi Jeremy,

I have prepared a new version of my script for you. The version of SLES was 
detected incorrect, so I fixed this (SLES 10 should be built like the OSS 10.1 
packages).

BUILD_RPMS can now be set to with a command line argument if not set correctly. 
Use --help to see how. It also gives you an hint when it is set incorrectly.
You set your CD's base directory as installation source. But: I think many 
packages for building will not come from the first CD, so I recomment to create 
a directory and copy all four CD's content to that directory.

To your output: /SuSE-10/RPMS is the output-directory where the built packages 
should be saved to. You can change this now with --targetdir (as explained in 
help). Default is ~/qmailrpm. The warning, that those directories can not be 
found appear only before building the first package.

Today I have downloaded SLES 10 and tried to install it, but it fails on my 
x86_64 system, so I could not test the build process on a real SLES system.

I hope, you can finally build the packages. I am on business vacation the next 
days, but I will watch the list and support you as good as possible.

Please use the latest attached version of the script. I recommend to use Erik's 
latest vpopmail-rpm from http://devel.qmailtoaster.com/ because that fixes a 
problem for your system.



Best regards,
Johannes



jeremy schrieb:
Okay Ive done this... mounted the dvd to /mnt/cd1

then i go : export BUILD_RPMS=/mnt/cd1/suse/ (tried /mnt/cd1/ ,
and /mnt/cd1/suse/i586) and its a no go... i get this error:
sh current-opensuse-build.sh

Package     : daemontools-toaster
Building for: SuSE 10
Architecture: i586

117 blocks
logging output to /var/tmp/build-root/.build.log...
oes started "build " at Sat Jul 15 15:49:31 PDT 2006.

Using BUILD_ROOT=/var/tmp/build-root
Using BUILD_RPMS=/mnt/cd1/suse//:/SuSE-10/RPMS/i586:/SuSE-10/RPMS/noarch
Using BUILD_ARCH=i586:i486:i386

processing
specfile 
/root/qmailrpm/daemontools-toaster-0.76-1.3.1/daemontools-toaster.spec...
init_buildsystem daemontools-toaster.spec ...
initializing /var/tmp/build-root/.srcfiles.cache with find command...
find: /SuSE-10/RPMS: No such file or directory
find: /SuSE-10/RPMS: No such file or directory
expanding package dependencies...
expansion error
  nothing provides libselinux


showing the list of the /mnt/cd1 here it what that is:



oes:~/qmailrpm # cd /mnt/cd1/
oes:/mnt/cd1 # ls
ARCHIVES.gz   directory.yast
COPYING       docu
COPYING.de    dosutils
COPYRIGHT     gpg-pubkey-0dfb3188-41ed929b.asc
COPYRIGHT.de  gpg-pubkey-307e3d54-44201d5d.asc
ChangeLog     gpg-pubkey-3d25d3d9-36e12d04.asc
INDEX.gz      gpg-pubkey-7e2e3b05-44748aba.asc
NEWS          gpg-pubkey-9c800aca-40d8063e.asc
README        gpg-pubkey-C0F2899B.asc
boot          gpg-pubkey-a1912208-446a0899.asc
content       ls-lR.gz
content.asc   media.1
content.key   pubring.gpg
control.xml   suse

in the suse directory i have oes:/mnt/cd1 # cd suse
oes:/mnt/cd1/suse # ls
i586  i686  noarch  setup
oes:/mnt/cd1/suse #
whats my next step????? And where is this /SUSE 10/RPMS being found.
Remember this is SLES 10 RC3

Jer






On Sat, 2006-07-15 at 20:25 +0200, Johannes Weberhofer, Weberhofer GmbH
wrote:
Hi!

This must be your Opensuse repository - for example your SuSE DVD or - much 
better - a directory on your hard disk containing the repository. The build 
environment creates an complete fresh SuSE installation in /var/tmp/build-root 
before building each package of qmail toaster, therefore it needs access to the 
installation sources.

It makes much difference if you have a fast installation repository on disk or 
if you set BUILD_RPMS to /media/dvd, mount the dvd and use all SuSE RPMs from 
there.

/SuSE/suse/i386/10.0 is not there by default. That's where I have copied the 
file on my build server. Create and use any directory where you have enough 
space for holding the DVD's content.

Best regards,
Johannes


jeremy schrieb:
When I execute ./current-opensuse-build.sh --help

Current default is set to:  (and its blank)

if i try to look for it, i cant find it. I tried /Suse/suse/ i did a
search for SuSe and i cant find a directory that looks like that. I know
I have build installed because I get: build-2006.4.28-3 when i do a rpm
-qa build

On Sat, 2006-07-15 at 09:07 +0200, Weberhofer GmbH wrote:
When you execute ./current-opensuse-build.sh --help

---------------------------------------------------------------------
     QmailToaster hosted by: VR Hosted <http://www.vr.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
     QmailToaster hosted by: VR Hosted <http://www.vr.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--


|---------------------------------
|  weberhofer GmbH               | Johannes Weberhofer
|  information technologies, Austria
|
|  phone : +43 (0)1 5454421 0    | email: [EMAIL PROTECTED]
|  fax   : +43 (0)1 5454421 19   | web  : http://weberhofer.at
|  mobile: +43 (0)699 11998315
|----------------------------------------------------------->>

#!/bin/sh
#
# build the system for SuSE 9.3 - OpenSuSE 10.1 systems
#
# author: Johannes Weberhofer, May - July 2006
# licensed under the GPL
#

function ShowHelp() {
        echo "usage: `basename $0` [--dry-run] [--clean] [--all] [--help] 
[--i586|--x86_64]"
        echo "                         [--buildrpm directory] [--targetdir 
directory]"
        echo "        --dry-run             don't build"
        echo "        --clean               delete all build directories"
        echo "        --all                 build all rpms even those which 
already have been built"
        echo "        --help                this help screen"
        echo "        --i586|--x86_64       the architecture to build for 
(currently set: $ARCH)"
        echo "        --buildrpm  directory defines the root directory of the 
OpenSuSE installation repository"
        echo "                    (currently set: $DEFAULTRPM)"
        echo "        --targetdir directory defines the directory where the 
generated RPMs should be copied to"
        echo "                    (currently set: $QMAILRPM)"
        echo ""
        echo "Before starting the build process, download the SRPMs to the 
current directory"
        echo ""
        echo "The resulting (S)RPMs will be copied to $QMAILRPM"
        echo "If you like to set another directory, please edit `basename $0`"
        echo "------------"
        echo "(c) Johannes Weberhofer <[EMAIL PROTECTED]>, May - July 2006, 
Version 1.2"
        echo "    licensed under the GPL"
        echo "------------"
}

DRYRUN=0
CLEAN=0
ALL=0
SHOWHELP=0
QMAILRPM=`dirname ~/qmailrpm`/`basename ~/qmailrpm`


while [ $# -ge 1 ] ; do
        case "$1" in
        --dry-run)
                DRYRUN=1
                ;;
        --clean)
                CLEAN=1
                ;;
        --all)
                ALL=1
                ;;
        --i586)
                ARCH=i586
                ;;
        --x86_64)
                ARCH=x86_64
                ;;
        --buildrpm)
                shift
                DEFAULTRPM=$1
                ;;
        --targetdir)
                shift
                QMAILRPM=$1
                ;;
        *)
                SHOWHELP=1
                ;;
        esac
        shift
done

# ### test, if build - packages are installed
rpm -qa | grep -q '^build-'
if test $? -ne 0 ; then
        echo
        echo "ERROR: To use this package, please install the <build> package"
        echo
        exit 1
fi

# ### check source repositories
if test -n "$BUILD_RPMS" -a -z "$DEFAULTRPM" ; then
        DEFAULTRPM="$BUILD_RPMS"
fi

if test ! -d "$DEFAULTRPM/media.1" ; then
        echo
        echo "ERROR: Invalid inastallation source: $DEFAULTRPM"
        echo
        exit 1
fi

# ### check architecture
if test -z "$ARCH" ; then
        ARCH=`grep '(' /etc/SuSE-release | sed -e 's/[^(]*(// ; s/)// ; s/\-/_/ 
; s/X/x/ '`
fi
if test "$ARCH" == "i586" ; then
        TOASTERTYPE=''
        TOASTERARCH=''
else
        TOASTERTYPE='64'
        TOASTERARCH=' x86_64'
fi

# ### Process SuSE release
SUSERELEASE=`grep VERSION /etc/SuSE-release | sed 's/VERSION = //'`

# ### check if SLES; SLES 10.0 uses same packages as SL-OSS 10.1
grep -q 'Enterprise' /etc/SuSE-release
if test $? -eq 0 ; then
        SLES=1
        if test "$SUSERELEASE" == "10" ; then
                SUSERELEASE="10.1"
        fi
else
        SLES=0
fi

# ### finetune Release information
SUSETOASTERRELEASE=`echo "$SUSERELEASE" | tr -d '.'`

if test $SUSETOASTERRELEASE -lt 101 ; then
        SUSETOASTERRELEASE=100
fi

if test ! -d "$QMAILRPM/SuSE-$SUSERELEASE" ; then
        mkdir -p "$QMAILRPM/SuSE-$SUSERELEASE"
fi

if test $SHOWHELP -eq 1 ; then
        ShowHelp
        exit 1
fi

# ####################################################################
# and now build the packages

BUILDPKGS="daemontools-toaster ucspi-tcp-toaster vpopmail-toaster libdomainkeys 
qmail-toaster courier-authlib-toaster courier-imap-toaster autorespond-toaster 
control-panel-toaster ezmlm-toaster qmailadmin-toaster qmailmrtg-toaster 
maildrop-toaster isoqlog-toaster vqadmin-toaster squirrelmail-toaster 
spamassassin-toaster clamav-toaster ripmime-toaster simscan-toaster djbdns"

for PACKAGE in $BUILDPKGS ; do
        DIR=`ls $PACKAGE-*.src.rpm | tail -n1 | sed -e 's/.src.rpm//'`
        if test $ALL -eq 1 -o ! -e 
"$QMAILRPM/SuSE-$SUSERELEASE/RPMS/$ARCH/$DIR.$ARCH.rpm" -a ! -e 
"$QMAILRPM/SuSE-$SUSERELEASE/RPMS/noarch/$DIR.noarch.rpm" ; then
                echo
                echo -e "\033[40m\033[001;031mPackage     : 
\033[40m\033[001;033m$PACKAGE\033[0m"
                echo -e "\033[40m\033[001;031mBuilding for: 
\033[40m\033[001;033mSuSE $SUSERELEASE\033[0m"
                echo -e "\033[40m\033[001;031mArchitecture: 
\033[40m\033[001;033m$ARCH\033[0m"
                echo
                if test ! -d "$DIR" ; then
                        mkdir "$DIR"
                else
                        rm -rf "$DIR/*"
                fi
                pushd "$DIR" 2>&1 > /dev/null
                unrpm "../$DIR.src.rpm" 2>&1 > /dev/null

                # do some package-related things
                PKSUSE100=''
                PKSUSE101=$PKSUSE100
                case "$PACKAGE" in
                        libdomainkeys-toaster)
                                SEDS='s/ripMIME for qmail-toaster/DomainKey 
library/'
                                ;;
                        vpopmail-toaster)
                                SEDS='s/^\(%define[\t ]*rpmrelease\).*/\1 2/ ;
                                        s/^\(%define[\t ]*ostype SuSE 
*10\.[0-9].*Linux\)/\1\nRequires:\tpwdutils/ '
                                ;;
                        qmail-toaster)
                                SEDS='s/^\(%define.*ostype SuSE 
*10\.[0-9].*Linux\)/\1\nRequires:\tpwdutils/'
                                PKSUSE100='mysql-devel'
                                PKSUSE101=$PKSUSE100
                                ;;
                        courier-authlib-toaster)
                                PKSUSE100='vpopmail-toaster, gcc-c++, 
libstdc++-devel, expect, mysql-shared, mysql-devel'
                                PKSUSE101=$PKSUSE100
                                ;;
                        courier-imap-toaster)
                                PKSUSE100='gcc-c++, libstdc++-devel, 
mysql-devel'
                                SEDS='/^BuildRequires:/ s/fileutils// ; 
/^Requires:/ s/fileutils// ; /^BuildRequires:/ s/textutils// ; /^Requires:/ 
s/textutils//'
                                PKSUSE101=$PKSUSE100
                                ;;
                        control-panel-toaster)
                                PKSUSE100='apache, libapr0, expat'
                                PKSUSE101='apache2, libapr1, expat'
                                SEDS='s/^\(Requires:.*apache2 >= 2.0.52, php5 
>= [0-9\.]*\)/Requires:\tapache2 >= 2.0.52, php >= 
4.4.0\nBuildRequires:\tapache2, libapr-util1/ ; s/^\(Requires:.*apache2 >= 
2.0.52, php4 >= [0-9\.]*\)/Requires:\tapache2 >= 2.0.52, php >= 4.4.0/'
                                ;;
                        qmailmrtg-toaster)
                                PKSUSE100='mrtg'
                                PKSUSE101=$PKSUSE100
                                SEDS='s/^\(Requires:.*cron >= 4.1, apache2 >= 
2.0.54, php4 >= 4.4.0, mrtg\)/Requires:\tcron >= 4.1, apache2 >= 2.0.54, php >= 
4.4.0/'
                                ;;
                        maildrop-toaster)
                                PKSUSE100='gcc-c++, libstdc++-devel, pcre, 
pcre-devel, openldap2-client, mrtg, net-tools, openssl, cyrus-sasl, 
vpopmail-toaster, qmail-toaster'
                                PKSUSE101=$PKSUSE100
                                ;;
                        isoqlog-toaster)
                                #PKSUSE100='php5'
                                #PKSUSE101='php'
                                ;;
                        squirrelmail-toaster)
                                SEDS='s/^\(Requires:.*apache2 >= 2.0.54, php4 
>= 4.4.0\)/Requires:\tapache2 >= 2.0.54, php >= 4.4.0/'
                                ;;
                        spamassassin-toaster)
                                SEDS='s/^\(BuildRequires:.*perl >= 5.8.7, 
perl(Digest::SHA1), perl(HTML::Parser), openssl-devel\)/BuildRequires:\tperl >= 
5.8.7, perl-Digest-SHA1, perl-HTML-Parser, openssl-devel/ ; 
s/^\(Requires:.*perl(Digest::SHA1), perl(HTML::Parser), perl(Pod::Usage), 
procmail\)/Requires:\tperl-Digest-SHA1, perl-HTML-Parser, procmail/'
                                ;;
                        clamav-toaster)
                                PKSUSE100='qmail-toaster'
                                PKSUSE101=$PKSUSE100
                                SEDS='s/^\(%define.*ostype SuSE 
*10\.[0-9].*Linux\)/\1\nRequires:\tpwdutils/ ;
                                s/^\(\/sbin\/service freshclam start.*\)/if 
test %{build_sus_100} -eq 0 -a %{build_sus_10064} -eq 0; then\n  \1\nfi/'
                                ;;
                        simscan-toaster)
                                PKSUSE100='perl-Digest-SHA1, perl-HTML-Parser, 
clamav-toaster, spamassassin-toaster, ucspi-tcp-toaster'
                                PKSUSE101=$PKSUSE100
                                ;;
                        djbdns)
                                SEDS='
s/chkconfig, initscripts, sh-utils, daemontools-toaster, 
ucspi-tcp-toaster/daemontools-toaster, ucspi-tcp-toaster/ ;

s/\(Buildprereq:        shadow-utils\)/#\1/

s/^\(# create log symlinks\)$/# touch logs\npushd 
%{buildroot}\/var\/djbdns\nmkdir -p dnscachex\/log dnscache\/log tinydns\/log 
axfrdns\/log\ntouch dnscachex\/log\/main dnscache\/log\/main tinydns\/log\/main 
axfrdns\/log\/main\npopd\n\n\1/ ;
s/^\(\/var\/log\/djbdns\/axfrdns\)$/\1\n%config(noreplace)\/var\/djbdns\/tinydns\/log\/main\n%config(noreplace)\/var\/djbdns\/axfrdns\/log\/main/
 ;
s/^\(\/var\/log\/djbdns\/dnscachex\)$/\1\n%config(noreplace)\/var\/djbdns\/dnscachex\/log\/main/
 ;
s/^\(\/var\/log\/djbdns\/dnscache\)$/\1\n%config(noreplace)\/var\/djbdns\/dnscache\/log\/main/'
                                ;;
                esac
                SPECFILE=`ls *.spec | tail -n1`

                # SuSE seems to ignore the BuildPreReq lines.
                # Therefore all BuildPreReq lines are renamed to BuildRequires
                # The statements are identical, as said in
                # 
http://www.redhat.com/archives/rpm-list/2003-June/msg00088.html
                #
                sed -i.orig -e 's/^BuildPreReq:/BuildRequires:/' $SPECFILE

                # now do some changes for the suse distributions
                if test -n "$SEDS" ; then
                        sed -i -e "$SEDS" $SPECFILE
                fi
                if test -n "$PKSUSE100" ; then
                        sed -i -e "s/^\(%define.*ostype SuSE 
*10\.0.*Linux\)/\1\nBuildRequires:\t$PKSUSE100/" $SPECFILE
                fi
                if test -n "$PKSUSE101" ; then
                        sed -i -e "s/^\(%define.*ostype SuSE 
*10\.1.*Linux\)/\1\nBuildRequires:\t$PKSUSE101/" $SPECFILE
                fi

                # SuSE before 10.1 did not include all packages to build the 
toaster
                # packaged properly. Therefore they should be included for SuSE 
10.0
                # distributions.
                sed -i -e 's/^\(%define.*ostype SuSE 
*10\.0.*Linux\)/\1\nBuildRequires:\taaa_base, acl, attr, bash, bind-utils, 
bison, bzip2, coreutils, cpio, cpp, cracklib, cvs, cyrus-sasl, db, devs, 
diffutils, e2fsprogs, file, filesystem, fillup, findutils, flex, gawk, 
gdbm-devel, glibc, glibc-devel, glibc-locale, gpm, grep, groff, gzip, info, 
insserv, klogd, less, libacl, libattr, libgcc, libnscd, libselinux, libstdc++, 
libxcrypt, libzio, m4, make, man, mktemp, module-init-tools, ncurses, 
ncurses-devel, net-tools, netcfg, openldap2-client, openssl, pam, pam-modules, 
patch, permissions, popt, procinfo, procps, psmisc, pwdutils, rcs, readline, 
sed, strace, syslogd, sysvinit, tar, tcpd, texinfo, timezone, unzip, 
util-linux, vim, zlib, zlib-devel, autoconf, automake, binutils, gcc, gdbm, 
gettext, libtool, perl, rpm, net-tools, openssl, cyrus-sasl, zlib-devel, 
pwdutils/' $SPECFILE

                diff -u $SPECFILE.orig $SPECFILE > ../$PACKAGE.diff

                sed -i -e 
's/\(^%define.*build_sus_'$SUSETOASTERRELEASE$TOASTERTYPE' [^0]*\)\(0$\)/\1 1/' 
$SPECFILE

                # for SuSE < 10.1 all occurences of "BuildRequires" are 
interpreted, even when excluded by
                # %if...%endif sections. "BuildRequires" does additionally NOT 
accept version information.
                # SuSE < 10.1 ignores the "BuildPreReq" sections, so all it's 
information must be copied to
                # "BuildRequires"

                # begin speciallity for Suse < 10.1
                if test $SUSETOASTERRELEASE -lt 101 ; then
                        # backup the full spec files
                        cp $SPECFILE complete-$SPECFILE
                        # read the required distibution statements
                        DISTSTATEMENT=`sed -n -e "/^%if 
%{build_sus_$SUSETOASTERRELEASE$TOASTERTYPE}$/,/^%endif/p " $SPECFILE`

                        # remove all distibution statements
                        sed -i -e '/^%if %{build_[a-z]*_[0-9]*}$/,/^%endif/d' 
$SPECFILE
                        sed -i -e '/^%if %{default}$/,/^%endif/d' $SPECFILE

                        # split up and insert the current distributions 
statement on the proper position
                        csplit --quiet $SPECFILE "/# Distro Statements/+1"

                        cat xx00 > $SPECFILE
                        echo -e "$DISTSTATEMENT" >> $SPECFILE
                        cat xx01 | sed -e '/./,$!d ; /^BuildRequires/ 
s/\(BuildRequires:\)\([a-z]\)/\1\t\2/' >> $SPECFILE
                        rm xx00 xx01

                        # re-format BuildRequires statements for the whole 
package (not for the distibution)
                        sed -i -e '/^BuildRequires/ s/[<>=]\+ [0-9\.\-]\+//g ; 
/^BuildRequires/ s/,/ /g ; /^BuildRequires/ s/[ ]+/ /g ; /^BuildRequires/ s/ [ 
]*/ /g' $SPECFILE

                fi
                # end speciallity for Suse < 10.1

                if test $DRYRUN -ne 1 ; then
                        build $SPECFILE --clean --arch=$ARCH \
                                --rpms 
$DEFAULTRPM/:$QMAILRPM/SuSE-$SUSERELEASE/RPMS/$ARCH:$QMAILRPM/SuSE-$SUSERELEASE/RPMS/noarch
                        if test $? -ne 0 ; then
                                exit 1
                        fi

                        cp -a /var/tmp/build-root/usr/src/packages/* 
"$QMAILRPM/SuSE-$SUSERELEASE/"
                fi

                popd 2>&1 > /dev/null

                if test $DRYRUN -eq 0 -o $CLEAN -eq 1 ; then
                        rm -rf "$DIR"
                fi
        fi
done


---------------------------------------------------------------------
     QmailToaster hosted by: VR Hosted <http://www.vr.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to