From b80e996959d9492e07ada4936e566f4b97dd5808 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 8 Jul 2010 09:32:14 +0000 Subject: [PATCH] checking in more of the rpm build system (is that it?) --- rpm/build/BOOTSTRAP | 116 ++++++++++++++++++++++++++ rpm/build/build-freeside | 26 +++++- rpm/build/buildsysrc | 14 ++++ rpm/build/cvs-check-and-build | 7 +- rpm/build/mock/centos-5-i386.cfg | 58 +++++++++++++ rpm/build/mock/centos-5-x86_64.cfg | 57 +++++++++++++ rpm/build/mock/defaults.cfg | 39 +++++++++ rpm/build/mock/logging.ini | 84 +++++++++++++++++++ rpm/build/mock/site-defaults.cfg | 98 ++++++++++++++++++++++ rpm/build/mock/sles-10-i386.cfg | 59 +++++++++++++ rpm/build/mock/sles-10-x86_64.cfg | 59 +++++++++++++ rpm/build/native/Ovid.diff | 30 +++++++ rpm/build/native/build-from-cvs | 75 +++++++++++++++++ rpm/build/native/freeside-cvs | 2 + rpm/build/native/makesrpm | 5 ++ rpm/build/native/ovid-0.12-1.x86_64.rpm | Bin 0 -> 16220 bytes rpm/build/native/ovid2flute | 141 ++++++++++++++++++++++++++++++++ 17 files changed, 864 insertions(+), 6 deletions(-) create mode 100644 rpm/build/BOOTSTRAP create mode 100755 rpm/build/buildsysrc create mode 100644 rpm/build/mock/centos-5-i386.cfg create mode 100644 rpm/build/mock/centos-5-x86_64.cfg create mode 100644 rpm/build/mock/defaults.cfg create mode 100644 rpm/build/mock/logging.ini create mode 100644 rpm/build/mock/site-defaults.cfg create mode 100644 rpm/build/mock/sles-10-i386.cfg create mode 100644 rpm/build/mock/sles-10-x86_64.cfg create mode 100644 rpm/build/native/Ovid.diff create mode 100755 rpm/build/native/build-from-cvs create mode 100755 rpm/build/native/freeside-cvs create mode 100755 rpm/build/native/makesrpm create mode 100644 rpm/build/native/ovid-0.12-1.x86_64.rpm create mode 100755 rpm/build/native/ovid2flute diff --git a/rpm/build/BOOTSTRAP b/rpm/build/BOOTSTRAP new file mode 100644 index 000000000..6fdc196ce --- /dev/null +++ b/rpm/build/BOOTSTRAP @@ -0,0 +1,116 @@ +# its more notes than a script, so no #!/bin/sh yet + +# s/ivan/username/ in buildsysrc and below + + +### +# host dirs +### + + +cd +mkdir public_html +mkdir mock +mkdir redhat +mkdir redhat/SRPMS +mkdir buildsys +mkdir buildsys/ref +mkdir buildsys/ref/SRPMS + +cd buildsys +for a in build-freeside buildsysrc cvs-check-and-build enrpm expect-addsign expect-signrepo ovid2flute refresh-repo; do +ln -s ~/freeside/rpm/build/$a . +done + + +### +# vserver setup +### + + +#ftp://ftp.pld-linux.org/people/hawk/vserver-templates/Centos +#sudo vserver centos5 build -m template --context 5 --hostname centos5.freeside.biz --interface dummy0:10.5.4.5/24 -- -d centos5 -t centos5-i686.tar.bz2 +sudo vserver centos5 build -m template --context 5 --hostname centos5.freeside.biz --interface dummy0:10.5.4.5/24 -- -d centos5 -t centos5-x86_64.tar.bz2 + +#something like this as /etc/init.d/vserver-nat: +!/bin/sh +iptables -t nat -F +iptables -t nat -A POSTROUTING -s 10.5.4.0/24 -d ! 10.5.4.0/24 -j SNAT --to-source 192.168.1.143 + +vserver centos5 start +vserver centos5 enter +#edit /etc/resolv.conf (easier from outside, no vi inside yet) + +yum update +yum install openssh-server vim-minimal zsh screen sudo perl patch cvs diffutils rpm-build rsync + +adduser ivan #username +cd ~ivan #username +mkdir .ssh +vi .ssh/authorized_keys + +mkdir redhat +mkdir redhat/BUILD +mkdir redhat/RPMS +mkdir redhat/SOURCES +mkdir redhat/SPECS +mkdir redhat/SRPMS +chown -R ivan:ivan redhat + +vi ~/.rpmmacros +%_topdir /home/ivan/redhat +%_signature gpg +%_gpg_path /home/ivan/.gnupg +%_gpg_name Freeside Internet Services, Inc. RPM Signing Key + +vi /etc/ssh/sshd_config #ListenAddress +#also need to edit on the host so the vserver can claim its address + +vi /etc/pam.d/sshd +#comment out: +#session required pam_loginuid.so + +/etc/init.d/sshd restart + +vi /etc/sudoers + +exit #and test ssh'ing in + +### +# more... +### + +#copy the stuff from rpm/build/native into /home/ivan (#username) in the vserver +cd rpm/build/native +for a in build-from-cvs freeside-cvs makesrpm ovid2flute ovid-0.12-1.x86_64.rpm Ovid.diff; do + cp $a /var/lib/vservers/centos5/home/ivan/ +done + +for a in build-from-cvs freeside-cvs makesrpm ovid2flute; do + chmod a+rx /var/lib/vservers/centos5/home/ivan/$a +done + +vserver centos5 enter #or ssh 10.5.4.5 and sudo + +rpm -i ovid-0.12-1.x86_64.rpm +cd /usr/lib/perl5/site_perl/5.*/Ovid +patch < ~ivan/Ovid.diff + +#also checkout the necessary freeside versions... +export CVSROOT=":pserver:anonymous:anonymous@cvs.freeside.biz:/home/cvs/cvsroot" + +cvs checkout -rFREESIDE_1_7_BRANCH -d freeside-1.7 freeside +#cvs checkout -rFREESIDE_1_9_BRANCH -d freeside-1.9 freeside + +### +# yet more +### + +cp expect-* /usr/local/bin/ +#edit them and set your real passphrase for the gpg key you're using + +### +# references +### + +http://www.freeside.biz/mediawiki/index.php/Freeside:Documentation:CreatingRPMRepo diff --git a/rpm/build/build-freeside b/rpm/build/build-freeside index 8ea0392a3..f4c6ca78f 100755 --- a/rpm/build/build-freeside +++ b/rpm/build/build-freeside @@ -17,14 +17,30 @@ CENTOSVERS='5' SLESVERS=10 WHICHVERS= ARCHS='i386 x86_64' -MOCKARGS='--autocache' BUILDSYSDIR=`dirname $0` +#MOCKARGS='--autocache' +MOCKARGS="--configdir=$BUILDSYSDIR/mock" + + +if [ -f $BUILDSYSDIR/buildsysrc ]; then + #chmod a+x $BUILDSYSDIR/buildsysrc + #echo $BUILDSYSDIR/buildsysrc + . $BUILDSYSDIR/buildsysrc +fi + if [ -f $HOME/buildsysrc ]; then + #chmod a+x $HOME/buildsysrc + #echo $HOME/buildsysrc . $HOME/buildsysrc fi +EXPECT_ADDSIGN=$BUILDSYSDIR/expect-addsign +if [ -f /usr/local/bin/expect-addsign ]; then + EXPECT_ADDSIGN=/usr/local/bin/expect-addsign +fi + usage() { echo "build-freeside: build RPMs for all target distros and architectures using mock" echo "where:" @@ -72,7 +88,8 @@ do done if [ "${SRCFOLDER}x" = "x" ]; then - echo "No source folder defined!" + PWD=`pwd` + echo "No source folder defined! (BUILDSYSDIR=$BUILDSYSDIR pwd=$PWD)" exit fi @@ -120,6 +137,7 @@ do for arch in $ARCHS do echo "$os - $arch: $srpm" + echo mock $MOCKARGS -r ${os}-${arch} $REFFOLDER/${srpm} time mock $MOCKARGS -r ${os}-${arch} $REFFOLDER/${srpm} if [ -f /var/lib/mock/${os}-${arch}/state/status ] && grep done /var/lib/mock/${os}-${arch}/state/status then @@ -137,7 +155,7 @@ do then for FILE in $FILES do - $BUILDSYSDIR/expect-addsign $FILE + $EXPECT_ADDSIGN $FILE done if [ "${REPOMACHINE}x" != "x" ] then @@ -153,7 +171,7 @@ do then for FILE in $FILES do - $BUILDSYSDIR/expect-addsign $FILE + $EXPECT_ADDSIGN $FILE done if [ "${REPOMACHINE}x" != "x" ] then diff --git a/rpm/build/buildsysrc b/rpm/build/buildsysrc new file mode 100755 index 000000000..0161f1d9b --- /dev/null +++ b/rpm/build/buildsysrc @@ -0,0 +1,14 @@ +# Define shell variables for the Freeside RPM build system +# + +SRCFOLDER=ivan@10.5.4.5:/home/ivan/redhat/SRPMS +REFFOLDER=$HOME/buildsys/ref/SRPMS +#ARCHS='i386 x86_64' +REPOFOLDER=/home/ivan/public_html +REPOBASEFOLDER=/home/ivan/public_html +KEYID=rpm + +VERSIONS='1.7' +DISTROS='centos' +CENTOSVERS='5' +ARCHS='x86_64' diff --git a/rpm/build/cvs-check-and-build b/rpm/build/cvs-check-and-build index b5e94b78b..dbd300a5f 100755 --- a/rpm/build/cvs-check-and-build +++ b/rpm/build/cvs-check-and-build @@ -36,6 +36,9 @@ do esac done -ssh 10.5.4.5 /home/rsiddall/build-from-cvs $FORCE_FLAG -cd /home/rsiddall/buildsys; ./build-freeside; ./refresh-repo $QUIET_FLAG +#ssh 10.5.4.5 /home/rsiddall/build-from-cvs $FORCE_FLAG +#cd /home/rsiddall/buildsys; ./build-freeside; ./refresh-repo $QUIET_FLAG + +ssh 10.5.4.5 ./build-from-cvs $FORCE_FLAG +cd ~/buildsys; ./build-freeside; ./refresh-repo $QUIET_FLAG diff --git a/rpm/build/mock/centos-5-i386.cfg b/rpm/build/mock/centos-5-i386.cfg new file mode 100644 index 000000000..c2deb1fa5 --- /dev/null +++ b/rpm/build/mock/centos-5-i386.cfg @@ -0,0 +1,58 @@ +#!/usr/bin/python -tt +import os +config_opts['root'] = 'centos-5-i386' +config_opts['target_arch'] = 'i386' + + +config_opts['yum.conf'] = """ +[main] +cachedir=/var/cache/yum +debuglevel=1 +logfile=/var/log/yum.log +reposdir=/dev/null +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 + +# repos + +[os] +name=os +#mirrorlist=http://mirrorlist.centos.org/?release=5&arch=i386&repo=os +#baseurl=http://mirror.centos.org/centos/5/os/i386/ +baseurl=file:///home/rsiddall/mock/repos/centos/5/os/i386/ + +[updates] +name=updates +#mirrorlist=http://mirrorlist.centos.org/?release=5&arch=i386&repo=updates +#baseurl=http://mirror.centos.org/centos/5/updates/i386/ +baseurl=file:///home/rsiddall/mock/repos/centos/5/updates/i386/ + +[groups] +name=groups +baseurl=http://dev.centos.org/centos/buildsys/5/ + +""" + +config_opts['macros'] = """ +%_topdir /builddir/build +%_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm + +# Change the next two lines to reflect yourself. + +%packager Freeside Internet Services, Inc. +#%vendor +#%distribution + +# please change this to reflect the Distro Tree and Repo hosting packages! +#%dist . +%centos_ver 5 + +#%_smp_mflags -j1 + +""" + + + + diff --git a/rpm/build/mock/centos-5-x86_64.cfg b/rpm/build/mock/centos-5-x86_64.cfg new file mode 100644 index 000000000..448edc682 --- /dev/null +++ b/rpm/build/mock/centos-5-x86_64.cfg @@ -0,0 +1,57 @@ +#!/usr/bin/python -tt +import os + +config_opts['root'] = 'centos-5-x86_64' +config_opts['target_arch'] = 'x86_64' + + +config_opts['yum.conf'] = """ +[main] +cachedir=/var/cache/yum +debuglevel=1 +reposdir=/dev/null +logfile=/var/log/yum.log +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 +exclude=[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefhijklmnopqrstuvwxyz]*.i*86 g[abcdefghijkmnopqrstuvwxyz]*.i?86 glib2.i?86 glib.i?86 *-devel.i?86 +# repos + +[os] +name=os +#mirrorlist=http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=os +#baseurl=http://mirror.centos.org/centos/5/os/x86_64/ +baseurl=file:///home/rsiddall/mock/repos/centos/5/os/x86_64/ + +[updates] +name=updates +#mirrorlist=http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=updates +#baseurl=http://mirror.centos.org/centos/5/updates/x86_64/ +baseurl=file:///home/rsiddall/mock/repos/centos/5/updates/x86_64/ + +[groups] +name=groups +baseurl=http://dev.centos.org/centos/buildsys/5/ +""" + + +config_opts['macros'] = """ +%_topdir /builddir/build +%_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm + +# Change the next two lines to reflect yourself. + +%packager Freeside Internet Services, Inc. +#%vendor +#%distribution + +# please change this to reflect the Distro Tree and Repo hosting packages! +#%dist . +%centos_ver 5 + +#%_smp_mflags -j1 + +""" + + diff --git a/rpm/build/mock/defaults.cfg b/rpm/build/mock/defaults.cfg new file mode 100644 index 000000000..3f9fcf6c2 --- /dev/null +++ b/rpm/build/mock/defaults.cfg @@ -0,0 +1,39 @@ +# mock defaults +# +# Define default values here. +# These values are overwritten in the /etc/mock/CHROOT.cfg files. +# +# Example: +# +# config_opts['foo'] = bar +config_opts['basedir'] = '/var/lib/mock/' +config_opts['chroot'] = '/usr/sbin/mock-helper chroot' +config_opts['mount'] = '/usr/sbin/mock-helper mount' +config_opts['umount'] = '/usr/sbin/mock-helper umount' +config_opts['rm'] = '/usr/sbin/mock-helper rm' +config_opts['mknod'] = '/usr/sbin/mock-helper mknod' +config_opts['yum'] = '/usr/sbin/mock-helper yum' +config_opts['runuser'] = '/sbin/runuser' +config_opts['chrootuser'] = 'mockbuild' +config_opts['chrootgroup'] = 'mockbuild' +config_opts['chrootuid'] = os.geteuid() +config_opts['chrootgid'] = os.getegid() +config_opts['chroothome'] = '/builddir' +config_opts['clean'] = True + +# caching related options +config_opts['rebuild_cache'] = False +config_opts['use_cache'] = False +config_opts['pack_cmd'] = "/usr/sbin/mock-helper pack" +config_opts['unpack_cmd'] = "/usr/sbin/mock-helper unpack" +config_opts['cache_ext'] = ".tar.gz" +config_opts['cache_topdir'] = "root-cache" +config_opts['max_cache_age_days'] = 15 + +# allow some network tests to run under the chroot +config_opts['files']['/etc/resolv.conf'] = open("/etc/resolv.conf","r").read() +config_opts['files']['/etc/hosts'] = open("/etc/hosts","r").read() + +config_opts['chroot_setup_cmd'] = 'install buildsys-build' +#config_opts['chroot_setup_cmd'] = 'groupinstall build' + diff --git a/rpm/build/mock/logging.ini b/rpm/build/mock/logging.ini new file mode 100644 index 000000000..fadc6a85b --- /dev/null +++ b/rpm/build/mock/logging.ini @@ -0,0 +1,84 @@ +[formatters] +keys: detailed,simple,unadorned,state + +[handlers] +keys: simple_console,detailed_console,unadorned_console,simple_console_warnings_only + +[loggers] +keys: root,build,state,mock + +[formatter_state] +format: %(asctime)s - %(message)s + +[formatter_unadorned] +format: %(message)s + +[formatter_simple] +format: %(levelname)s: %(message)s + +;useful for debugging: +[formatter_detailed] +format: %(levelname)s %(filename)s:%(lineno)d: %(message)s + +[handler_unadorned_console] +class: StreamHandler +args: [] +formatter: unadorned +level: INFO + +[handler_simple_console] +class: StreamHandler +args: [] +formatter: simple +level: INFO + +[handler_simple_console_warnings_only] +class: StreamHandler +args: [] +formatter: simple +level: WARNING + +[handler_detailed_console] +class: StreamHandler +args: [] +formatter: detailed +level: WARNING + +; usually dont want to set a level for loggers +; this way all handlers get all messages, and messages can be filtered +; at the handler level +; +; all these loggers default to a console output handler +; +[logger_root] +level: NOTSET +handlers: simple_console + +; mock logger normally has no output +; catches stuff like mock.trace_decorator and mock.util +; dont normally want to propagate to root logger, either +[logger_mock] +level: NOTSET +handlers: +qualname: mock +propagate: 1 + +[logger_state] +level: NOTSET +; unadorned_console only outputs INFO or above +handlers: unadorned_console +qualname: mock.Root.state +propagate: 0 + +[logger_build] +level: NOTSET +handlers: simple_console_warnings_only +qualname: mock.Root.build +propagate: 0 + +; the following is a list mock logger qualnames used within the code: +; +; qualname: mock.util +; qualname: mock.uid +; qualname: mock.trace_decorator + diff --git a/rpm/build/mock/site-defaults.cfg b/rpm/build/mock/site-defaults.cfg new file mode 100644 index 000000000..0ee2082eb --- /dev/null +++ b/rpm/build/mock/site-defaults.cfg @@ -0,0 +1,98 @@ +# mock defaults +# vim:tw=0:ts=4:sw=4:et: +# +# This config file is for site-specific default values that apply across all +# configurations. Options specified in this config file can be overridden in +# the individual mock config files. +# +# The defaults.cfg delivered by default has NO options set. Only set options +# here if you want to override the defaults. +# +# Entries in this file follow the same format as other mock config files. +# config_opts['foo'] = bar + +############################################################################# +# +# Things that we recommend you set in defaults.cfg: +# +# config_opts['basedir'] = '/var/lib/mock/' +# config_opts['cache_topdir'] = '/var/cache/mock' +# Note: the path pointed to by basedir and cache_topdir must be owned +# by group 'mock' and must have mode: g+rws +# config_opts['rpmbuild_timeout'] = 0 +# config_opts['use_host_resolv'] = True + +# You can configure log format to pull from logging.ini formats of these names: +# config_opts['build_log_fmt_name'] = "unadorned" +# config_opts['root_log_fmt_name'] = "detailed" +# config_opts['state_log_fmt_name'] = "state" +# +# mock will normally set up a minimal chroot /dev. +# If you want to use a pre-configured /dev, disable this and use the bind-mount +# plugin to mount your special /dev +# config_opts['internal_dev_setup'] = True +# +# internal_setarch defaults to 'True' if the python 'ctypes' package is +# available. It is in the python std lib on >= python 2.5. On older versions, +# it is available as an addon. On systems w/o ctypes, it will default to +# 'False' +# config_opts['internal_setarch'] = False +# +# the cleanup_on_* options allow you to automatically clean and remove the +# mock build directory, but only take effect if --resultdir is used. +# config_opts provides fine-grained control. cmdline only has big hammer +# +# config_opts['cleanup_on_success'] = 1 +# config_opts['cleanup_on_failure'] = 1 + +############################################################################# +# +# plugin related. Below are the defaults. Change to suit your site +# policy. defaults.cfg is a good place to do this. +# +# NOTE: Some of the caching options can theoretically affect build +# reproducability. Change with care. +# +# config_opts['plugin_conf']['ccache_enable'] = True +# config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '4G' +# config_opts['plugin_conf']['ccache_opts']['dir'] = "%(cache_topdir)s/%(root)s/ccache/" +# config_opts['plugin_conf']['yum_cache_enable'] = True +# config_opts['plugin_conf']['yum_cache_opts']['max_age_days'] = 30 +# config_opts['plugin_conf']['yum_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/yum_cache/" +# config_opts['plugin_conf']['root_cache_enable'] = True +# config_opts['plugin_conf']['root_cache_opts']['max_age_days'] = 15 +# config_opts['plugin_conf']['root_cache_opts']['dir'] = "%(cache_topdir)s/%(root)s/root_cache/" +# config_opts['plugin_conf']['root_cache_opts']['compress_program'] = "gzip" +# config_opts['plugin_conf']['root_cache_opts']['extension'] = ".gz" +# +# bind mount plugin is enabled by default but has no configured directories to mount +# config_opts['plugin_conf']['bind_mount_enable'] = True +# config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/host/path', '/bind/mount/path/in/chroot/' )) +# +# config_opts['plugin_conf']['tmpfs_enable'] = False +# config_opts['plugin_conf']['tmpfs_opts'] = {'required_ram_mb': 1024} + +############################################################################# +# +# Things that you can change, but we dont recommend it: +# config_opts['chroothome'] = '/builddir' +# config_opts['clean'] = True + +############################################################################# +# +# Things that are best suited for individual chroot config files: +# +# MUST SET (in individual chroot cfg file): +# config_opts['root'] = 'name-of-yum-build-dir' +# config_opts['target_arch'] = 'i386' +# config_opts['yum.conf'] = '' +# +# CAN SET, defaults usually work ok: +# config_opts['chroot_setup_cmd'] = 'install buildsys-build' +# config_opts['log_config_file'] = 'logging.ini' +# config_opts['more_buildreqs']['srpm_name-version-release'] = 'dependencies' +# config_opts['macros']['Add_your_macro_name_here'] = "add macro value here" +# config_opts['files']['path/name/no/leading/slash'] = "put file contents here." +# config_opts['chrootuid'] = os.getuid() +# config_opts['chrootgid'] = grp.getgrnam("mock")[2] +# config_opts['useradd'] = '/usr/sbin/useradd -m -u %(uid)s -g %(gid)s -d %(home)s -n %(user)s' # Fedora/RedHat diff --git a/rpm/build/mock/sles-10-i386.cfg b/rpm/build/mock/sles-10-i386.cfg new file mode 100644 index 000000000..ad1a62b40 --- /dev/null +++ b/rpm/build/mock/sles-10-i386.cfg @@ -0,0 +1,59 @@ +#!/usr/bin/python -tt + +import os + +config_opts['root'] = 'sles-10-i386' +config_opts['basedir'] = '/var/lib/mock/' +config_opts['chroot'] = '/usr/sbin/mock-helper chroot' +config_opts['mount'] = '/usr/sbin/mock-helper mount' +config_opts['umount'] = '/usr/sbin/mock-helper umount' +config_opts['rm'] = '/usr/sbin/mock-helper rm' +config_opts['mknod'] = '/usr/sbin/mock-helper mknod' +config_opts['yum'] = '/usr/sbin/mock-helper yum' +config_opts['runuser'] = '/bin/su' +config_opts['chroot_setup_cmd'] = 'groupinstall build build-minimal build-base' +config_opts['chrootuser'] = 'mockbuild' +config_opts['chrootgroup'] = 'users' +config_opts['chrootuid'] = os.geteuid() +config_opts['chrootgid'] = os.getegid() +config_opts['chroothome'] = '/builddir' +config_opts['clean'] = True +config_opts['target_arch'] = 'i386' +config_opts['use_cache'] = 1 + + +config_opts['yum.conf'] = """ +[main] +cachedir=/var/cache/yum +debuglevel=1 +logfile=/var/log/yum.log +reposdir=/dev/null +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 + +# repos + +[base] +name=base +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/sles10/base/i386/ +#baseurl=http://redshank.elirion.net/sles +baseurl=file:///home/rsiddall/mock/repos/sles10/i386 + +[build] +name=build +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/sles10/base/i386/ +#baseurl=http://grosbeak.elirion.net/repo/sles/10/build/i386/ +baseurl=file:///home/rsiddall/public_html/repo/sles/10/build/i386 + +[groups] +name=groups +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/mock/buildgroups/sles10/i386/ +#baseurl=http://redshank.elirion.net/slesgroup/sles10/i386/ +baseurl=file:///home/rsiddall/mock/buildgroups/sles10/i386 + +""" + + + diff --git a/rpm/build/mock/sles-10-x86_64.cfg b/rpm/build/mock/sles-10-x86_64.cfg new file mode 100644 index 000000000..d55b40ad6 --- /dev/null +++ b/rpm/build/mock/sles-10-x86_64.cfg @@ -0,0 +1,59 @@ +#!/usr/bin/python -tt + +import os + +config_opts['root'] = 'sles-10-x86_64' +config_opts['basedir'] = '/var/lib/mock/' +config_opts['chroot'] = '/usr/sbin/mock-helper chroot' +config_opts['mount'] = '/usr/sbin/mock-helper mount' +config_opts['umount'] = '/usr/sbin/mock-helper umount' +config_opts['rm'] = '/usr/sbin/mock-helper rm' +config_opts['mknod'] = '/usr/sbin/mock-helper mknod' +config_opts['yum'] = '/usr/sbin/mock-helper yum' +config_opts['runuser'] = '/bin/su' +config_opts['chroot_setup_cmd'] = 'groupinstall build build-minimal build-base' +config_opts['chrootuser'] = 'mockbuild' +config_opts['chrootgroup'] = 'users' +config_opts['chrootuid'] = os.geteuid() +config_opts['chrootgid'] = os.getegid() +config_opts['chroothome'] = '/builddir' +config_opts['clean'] = True +config_opts['target_arch'] = 'x86_64' +config_opts['use_cache'] = 1 + + +config_opts['yum.conf'] = """ +[main] +cachedir=/var/cache/yum +debuglevel=1 +logfile=/var/log/yum.log +reposdir=/dev/null +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 + +# repos + +[base] +name=base +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/sles10/base/x86_64/ +#baseurl=http://redshank.elirion.net/sles +baseurl=file:///home/rsiddall/mock/repos/sles10/x86_64 + +[build] +name=build +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/sles10/base/x86_64/ +#baseurl=http://grosbeak.elirion.net/repo/sles/10/build/x86_64/ +baseurl=file:///home/rsiddall/public_html/repo/sles/10/build/x86_64 + +[groups] +name=groups +#baseurl=http://hb.linuxdev.us.dell.com/pub/yum/mock/buildgroups/sles10/x86_64/ +#baseurl=http://redshank.elirion.net/slesgroup/sles10/x86_64/ +baseurl=file:///home/rsiddall/mock/buildgroups/sles10/x86_64 + +""" + + + diff --git a/rpm/build/native/Ovid.diff b/rpm/build/native/Ovid.diff new file mode 100644 index 000000000..81db7c5a8 --- /dev/null +++ b/rpm/build/native/Ovid.diff @@ -0,0 +1,30 @@ +--- Package.pm.orig 2007-05-25 09:54:14.000000000 -0400 ++++ Package.pm 2007-07-07 15:35:20.000000000 -0400 +@@ -165,6 +165,7 @@ + push @out, $self->provreq($n); + } + ++ return join("\n", map { "Provides: $_"; } @out) if scalar(@out) > 5; + return join('', 'Provides: ', join ' ', @out); + } + +@@ -376,10 +377,15 @@ + + %install + +-make PREFIX=%{_prefix} \ +- DESTDIR=%{buildroot} \ +- INSTALLDIRS=@installdirs@ \ +- install ++if [ -f Build.PL -a -f Build ] ; then ++ ./Build destdir=%{buildroot} \ ++ install ++else ++ make PREFIX=%{_prefix} \ ++ DESTDIR=%{buildroot} \ ++ INSTALLDIRS=@installdirs@ \ ++ install ++fi + + [ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress + diff --git a/rpm/build/native/build-from-cvs b/rpm/build/native/build-from-cvs new file mode 100755 index 000000000..aa1319b96 --- /dev/null +++ b/rpm/build/native/build-from-cvs @@ -0,0 +1,75 @@ +#!/bin/sh +# +# Copyright 2008, Elirion, Inc. All rights reserved. +# This software is licensed under the same terms as Freeside itself. +# +# This script builds SRPMs if the Freeside CVS contents have changed. +# It must have reference copies of the Freeside versions it builds. +# Each SRPM's "release" is set to the date & time the script is run. +# The version number is forced to the CVS version. The version and release +# hard-coded in the last .spec file committed to CVS are NOT used. +# +source $HOME/freeside-cvs +RELEASE=`date +%Y%m%d%H%M%S` +QUIET_FLAG= +#FORCE_FLAG=0 +FORCE_FLAG=1 +#VERSIONS='1.7 1.9' +VERSIONS='1.7' + +while getopts "fhqv:" flag +do + case $flag in + f) + echo "Force mode" + FORCE_FLAG=1;; + q) + echo "Quiet mode" + QUIET_FLAG=-q;; + v) + echo "Changing versions from $VERSIONS to $OPTARG" + VERSIONS=$OPTARG;; + *) + usage;; + esac +done + +usage() { + echo "build-from-cvs: build SRPMs if the Freeside CVS contents have changed" + echo "where:" + echo " -f: force building SRPMs even if CVS is unchanged" + echo " -h: print this usage information" + echo " -q: run quietly" + echo " -v : change versions (currently: $VERSIONS)" + exit 0 +} + +for VERSION in $VERSIONS; do + echo ${VERSION} + /bin/rm -rf ref-${VERSION} + cp -pr freeside-${VERSION} ref-${VERSION} + cd freeside-${VERSION} + cvs update -d -P + cd .. + diff -qr --exclude=CVS freeside-${VERSION} ref-${VERSION} + RETVAL=$? + if [ $FORCE_FLAG = 1 -o $RETVAL -gt 0 ]; then + # Build the tarball with the modified .spec file in it, hard-coding the release into the .spec file + cd freeside-${VERSION} + for SPECFILE in install/rpm/freeside.spec rpm/freeside.spec; do + if [ -f $SPECFILE ]; then + cp -pf $SPECFILE .. + perl -p -i -e "s/\d+[^\}]+/${VERSION}/ if /%define\s+version\s+(\d+[^\}]+)\}/;" ${SPECFILE} + perl -pi -e "s/\$1/${RELEASE}/ if /%define\s+release\s+(\d+)/;" $SPECFILE + tar zcvf $HOME/redhat/SOURCES/freeside-${VERSION}.tar.gz --exclude CVS ../freeside-${VERSION} + mv -f ../`basename $SPECFILE` `dirname $SPECFILE` + fi + done + cd .. + rpmbuild -ts $HOME/redhat/SOURCES/freeside-${VERSION}.tar.gz + # Could do a koji-build here + # Or move the SRPM to a staging directory for the build machine to check + # Should make the Bundles and check the dependencies for changes + fi + /bin/rm -rf ref-${VERSION} +done diff --git a/rpm/build/native/freeside-cvs b/rpm/build/native/freeside-cvs new file mode 100755 index 000000000..88d12b4dc --- /dev/null +++ b/rpm/build/native/freeside-cvs @@ -0,0 +1,2 @@ +export CVSROOT=":pserver:anonymous:anonymous@cvs.freeside.biz:/home/cvs/cvsroot" +export CVS_RSH="ssh" diff --git a/rpm/build/native/makesrpm b/rpm/build/native/makesrpm new file mode 100755 index 000000000..fc9703ebc --- /dev/null +++ b/rpm/build/native/makesrpm @@ -0,0 +1,5 @@ +#!/bin/sh + +cpanflute2 --just-spec --noperlreqs --email='Ivan Kohler ' --release=1 /home/rsiddall/Business-OnlinePayment-Jety-0.06.tar.gz > /home/rsiddall/redhat/SPECS/Business-OnlinePayment-Jety.spec; +perl -pi -e 's/perl(perl)/perl/g' /home/rsiddall/redhat/SPECS/Business-OnlinePayment-Jety.spec +rpmbuild -bs --nodeps --define '_sourcedir /home/rsiddall/' --define '_srcrpmdir /home/rsiddall/redhat/SRPMS' /home/rsiddall/redhat/SPECS/Business-OnlinePayment-Jety.spec diff --git a/rpm/build/native/ovid-0.12-1.x86_64.rpm b/rpm/build/native/ovid-0.12-1.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..363e08922fb2842609283a2938ba5e4022b31287 GIT binary patch literal 16220 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 YY7l0%^z_J@svnWcgw`ta{Q!Xf0ks+UbN~PV literal 0 HcmV?d00001 diff --git a/rpm/build/native/ovid2flute b/rpm/build/native/ovid2flute new file mode 100755 index 000000000..5e26711d5 --- /dev/null +++ b/rpm/build/native/ovid2flute @@ -0,0 +1,141 @@ +#!/usr/bin/perl -w +# +# Convert the output from ovid --deps into a list of modules to run through cpanflute2 to get +# better .spec files, and generate SRPMs from these. + +use strict; +use Getopt::Long; + +# Need to fix up modules where Ovid parses the name incorrectly +my %badparse=( + 'Crypt-PasswdMD-5' => 'Crypt-PasswdMD5', + 'IPC-Run-3' => 'IPC-Run3', + 'Digest-SHA-1' => 'Digest-SHA1', + 'Digest-MD-4' => 'Digest-MD4', +); + +my %extra_buildreqs=( + 'File-Rsync' => [ qw/rsync/ ], + 'MIMETools' => [ qw/perl(Mail::Header) perl(Mail::Internet) perl(Mail::Field) perl(IO::Stringy) perl(File::Temp)/ ], + 'HTML::Scrubber' => [ qw/perl(HTML::Parser) perl(HTML::Tagset)/ ], +# 'Time::Duration' => [ qw/perl(Test::Pod) perl(Test::Pod::Coverage)/ ], +); + +my %extra_reqs=( + 'File-Rsync' => [ qw/rsync/ ], +); + +my %opts; + +GetOptions(\%opts, 'packager=s', 'release=s'); + +$opts{packager} = 'Richard Siddall ' if !defined($opts{packager}); + +# Need to process modules that cause Ovid to crash +#my @extramods= qw/Text::CSV_XS Pod::Simple Crypt::SSLeay/; +#my @extramods= qw/Crypt::SSLeay/; +my @extramods= qw/IPC::ShareLite/; + +my $specfiledir="/home/rsiddall/work/redhat/SPECS"; +$specfiledir = "/home/rsiddall/redhat/SPECS" if ! -d $specfiledir; +my $srpmdir="/home/rsiddall/work/redhat/SRPMS"; +$srpmdir = "/home/rsiddall/redhat/SRPMS" if ! -d $srpmdir; + +foreach (reverse ) { + next if !defined($_); + #print $_; + last if $_ !~ /^([-\w:]+) perl-([-\w\.]+)(-\d+[\w\.]+?)$/; + #print "$1 = $2\n" + my ($name, $rpm, $ver) = ($1, $2, $3); + print "# $name ($rpm - $ver)\n"; + foreach my $cand (keys %badparse) { + if ($rpm =~ /^$cand/) { + $rpm =~ s/^$cand/$badparse{$cand}/; + print "# Fixed up $rpm\n"; + last; + } + } + printcmds($name, "$rpm$ver"); + #print "cpanspec -v --packager 'Unknown ' $name\n"; + #print "echo $rpm\n"; + #print "repoquery perl-$rpm\n"; + #touchsrpms($name, "$rpm$ver"); +} + +exit; + +foreach my $name (@extramods) { + my $rpm = $name; + $rpm =~ s/::/-/g; + my $tarball = `find ~/.cpan/sources -name '$rpm-*' -print | tail -1`; + #print "$name (Extra!)\n" + if ($tarball =~ /\/($rpm-.*?)(\.tar\.gz|\.tgz)\s*$/) { + $rpm = $1; + printcmds($name, $rpm); + } else { + die "Can't find full rpm name for $name in \"$tarball\"\n"; + } +} + +sub touchsrpms { + my ($name, $rpm) = @_; + my $repofolder ="/var/www/html/repo/sles/10/freeside-1.9/stable/x86_64"; + my $srpmfolder ="/home/rsiddall/work/redhat/SRPMS"; + my @files = glob "$repofolder/perl-$rpm-*.rpm"; + if (! scalar(@files)) { + print "Can't find $rpm in $repofolder\n"; + @files = glob "$srpmfolder/perl-$rpm-*.src.rpm\n"; + if (scalar(@files)) { + my $file = pop @files; + print "touch $file\n"; + } else { + print STDERR "No corresponding SRPM: $srpmfolder/perl-$rpm-*.src.rpm\n"; + printcmds($name, $rpm); + } + } +} + +sub printcmds { + my ($name, $rpm) = @_; + + my $tarball = `find ~/.cpan -name '$rpm.tar.gz' -print`; + $tarball = `find ~/.cpan -name '$rpm.tgz' -print` if ! $tarball; + chomp($tarball); +# my $specfile = "$specfiledir/$name.spec"; + my $rpmname = $rpm; + $rpmname = $1 if $rpm =~ /^(?:.*\/)?(.*)-(?:v\.?)?([^-]+)$/; + my $specfile = "$specfiledir/perl-$rpmname.spec"; + $specfile =~ s/::/-/g; + # Work out which version of the SRPM we're going to generate. + my $rel; + if (!defined($opts{release})) { + for ($rel = 1; ; $rel++) { + my $srpm = "$srpmdir/perl-$rpm-$rel.src.rpm"; + last if ! -e $srpm; + print "# File exists: $srpm\n"; + } + } else { + $rel = $opts{release}; + } + my $fluteopts = ""; + foreach my $cand (keys %extra_buildreqs) { + if ($rpm =~ /^$cand/) { + $fluteopts .= join "", map { "--buildrequires $_ " } @{$extra_buildreqs{$cand}}; + last; + } + } + foreach my $cand (keys %extra_reqs) { + if ($rpm =~ /^$cand/) { + $fluteopts .= join "", map { "--requires $_ " } @{$extra_reqs{$cand}}; + last; + } + } + print "cpanflute2 --just-spec --noperlreqs --email='$opts{packager}' --release=$rel $fluteopts $tarball > $specfile;\n"; + # Should fix up the .spec file + print "perl -pi -e 's/perl\\(perl\\)/perl/g' $specfile;\n"; + my $tarballdir = `dirname $tarball` or die "Can't find tarball for $name: $tarball\n"; + chomp($tarballdir); + print "rpmbuild -bs --nodeps --define '_sourcedir $tarballdir' --define '_srcrpmdir $srpmdir' $specfile\n"; + print "# Generates: $srpmdir/perl-$rpm-$rel.src.rpm\n"; +} + -- 2.11.0