source: trunk/server/fedora/Makefile @ 1507

Last change on this file since 1507 was 1507, checked in by mitchb, 14 years ago
Temporarily scriptsify shadow-utils to fix max length of group names The upstream shadow-utils package used to hardcode the max length of a group name to 16 characters, and Fedora patched it to make that length match utmpx.ut_name's length (32) and documented it as being 32. The last upstream update that Fedora took changed the code to default to 16, but allow a nondefault value via a --with flag to configure. Fedora's patch thus no longer applied and they dropped the relevant hunk, but neglected to add the --with flag in the spec file, so the max group name length dropped back to 16, causing packages that install groups with names longer than 16 characters to begin failing to install properly mid-release. We'll be pursuing this issue with Fedora.
File size: 9.0 KB
RevLine 
[1]1# Makefile for building scripts.mit.edu Fedora packages
2# Copyright (C) 2006  Jeff Arnold <jbarnold@mit.edu>
3#                and  Joe Presbrey <presbrey@mit.edu>
4#
5# This program is free software; you can redistribute it and/or
6# modify it under the terms of the GNU General Public License
7# as published by the Free Software Foundation; either version 2
8# of the License, or (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
18#
19# See /COPYRIGHT in this repository for more information.
20
[1507]21upstream_yum    = krb5 krb5.i586 httpd openssh shadow-utils
[1459]22upstream        = openafs $(upstream_yum) moira cluster-glue heartbeat pacemaker
[1503]23oursrc          = execsys tokensys accountadm httpdmods logview sql-signup nss_nonlocal nss_nonlocal.i586 whoisd mit-zephyr athrun php_scripts scripts-wizard scripts-base
[1]24allsrc          = $(upstream) $(oursrc)
25oursrcdir       = ${PWD}/../common/oursrc
26patches         = ${PWD}/../common/patches
27specs           = ${PWD}/specs
28
[353]29topdir          = ${HOME}/rpmbuild
30tmp_build       = $(topdir)/BUILD
31tmp_specs       = $(topdir)/SPECS
32tmp_src         = $(topdir)/SOURCES
33out_rpms        = $(topdir)/RPMS
34out_srpms       = $(topdir)/SRPMS
35out_sbin        = $(topdir)/sbin
[1]36
37dload           = ${PWD}/.dload
[260]38server_url      = "http://web.mit.edu/scripts/src"
[1]39server_arch     = "fedora.stable"
[1274]40openafs_url     = "http://dl.openafs.org/dl/openafs/1.4.11/openafs-1.4.11-1.1.1.src.rpm"
[1459]41clusterglue_url = "http://kojipkgs.fedoraproject.org/packages/cluster-glue/1.0/0.11.b79635605337.hg.fc12/src/cluster-glue-1.0-0.11.b79635605337.hg.fc12.src.rpm"
42heartbeat_url   = "http://kojipkgs.fedoraproject.org/packages/heartbeat/3.0.0/0.5.0daab7da36a8.hg.fc12/src/heartbeat-3.0.0-0.5.0daab7da36a8.hg.fc12.src.rpm"
43pacemaker_url   = "http://kojipkgs.fedoraproject.org/packages/pacemaker/1.0.5/5.fc12/src/pacemaker-1.0.5-5.fc12.src.rpm"
[1]44
[1334]45PKG             = $(patsubst %.i586,%,$@)
46
[1]47.PHONY: minimal-clean
48
49info:
50        @echo "The following packages are available:"; \
51        echo "$(allsrc)"; \
52        echo "Run 'make all' to build all packages."
53
54minimal-clean:
55        rm -rf $(topdir) $(dload)
56
57clean: minimal-clean
58        rm -rf $(out_rpms) $(out_srpms) $(out_sbin)
59
60mkdir-tree:
[407]61        @rpmdev-setuptree
62        mkdir -p $(out_sbin)
63        ln -sTf $(topdir) rpmbuild
[1]64
[796]65download: download_stamp
[860]66download_stamp: | SRPMS/mit-zephyr-2.1-6.src.rpm
[760]67        @mkdir -p $(dload); \
[796]68        #wget -qO- -nv $(server_url)/$(server_arch) | xargs make
[1498]69        cd $(dload) && yumdownloader --disablerepo=scripts --source $(upstream_yum)
[796]70        wget -P $(dload) $(openafs_url)
[1459]71        wget -P $(dload) $(clusterglue_url)
72        wget -P $(dload) $(heartbeat_url)
73        wget -P $(dload) $(pacemaker_url)
[1396]74        cd $(tmp_src) && wget -nd -r -l1 -np -A.orig.tar.gz http://debathena.mit.edu/apt/pool/debathena/d/debathena-moira/
[796]75        touch download_stamp
[1]76
[760]77%.src.rpm:
78        wget -q -nv -N -B $(server_url) -nd -nH -P $(dload) $(server_url)/$*.src.rpm
79
[1]80copy-patches: mkdir-tree
[59]81        @cp $(patches)/*.patch $(tmp_src); \
[796]82        cd $(tmp_src);
[1]83
84install-srpms: mkdir-tree download
85        rpm $(rpm_args) -i $(dload)/*.src.rpm 2>/dev/null;
86
87copy-specs: mkdir-tree
88        cp ${specs}/*.spec $(tmp_specs)
89
90patch-specs: install-srpms
91        @cd ${tmp_specs}; \
92        list=`ls ${specs}/*.spec.patch`; \
93        for i in $$list; do \
94                patch < $$i; \
[917]95        done; \
96        list2=`svn ls ${oursrcdir}`; \
97        for i in $$list2; do \
98                base=`basename $$i`; \
99                version=`svnversion ${oursrcdir}/$$i`; \
100                version=$${version//:/_}; \
101                echo "$$i version $$version"; \
102                sed --in-place \
103                        -e "s/SVNVERSION_TO_UPDATE/$${version}/" \
104                ${tmp_specs}/$$base.spec; \
[1]105        done;
106
107# 1. use the package's Makefile to delete leftover files and run autoconf
108# 2. create a tarball (we want it to contain the autoconf output)
[763]109tarballs: mkdir-tree
[1]110        @cd ${oursrcdir}; \
[31]111        list=`find -mindepth 1 -maxdepth 1 -type d | grep -v ".svn"`; \
[1]112        for i in $$list; do \
113                pushd $$i; \
[119]114                if [ -x ./mrproper ]; then \
115                        ./mrproper; \
116                        autoconf; \
117                fi; \
[1]118                popd; \
119                tar -czf $(tmp_src)/$$i.tar.gz $$i; \
120        done;
121
[763]122#setup: install-srpms copy-patches copy-specs patch-specs tarballs
[839]123setup: copy-patches copy-specs patch-specs tarballs
[1]124
125oursrc:
126        make $(oursrc)
127
[763]128upstream: mkdir-tree download
[1]129        make $(upstream)
130
131all:
132        make $(allsrc)
133
[928]134$(oursrc): rpmbuild_args += --define 'scriptsversion $(shell svnversion ${oursrcdir}/$** | tr ':' '_')'
135
[1259]136$(filter %.i586,$(oursrc)): %.i586: setup
[11]137        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]138        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
139        /usr/bin/mock -r scripts-fc11-i386 --arch=i586 ${rpmbuild_args} --define="_lib lib" -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[1]140
[1259]141$(filter-out %.i586,$(oursrc)): %: setup
[750]142        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]143        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
144        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[750]145
[1340]146$(upstream) openafs-kernel: rpmbuild_args += --define 'scriptsversion $(shell svnversion ${patches} | tr ':' '_')'
[928]147
[1334]148$(filter %.i586,$(upstream)): %.i586: setup patch-specs
149        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
150        /usr/bin/mock -r scripts-fc11-i386 --arch=i586 ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[760]151
[1340]152$(filter-out %.i586,$(upstream)): %: setup patch-specs
[1334]153        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
154        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
155
[103]156openafs-kernel: setup
[79]157        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]158        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/openafs*.spec
159        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/openafs*.src.rpm | head -1`
[79]160
[796]161#sort -n sorts "2.6.25-1" later than "2.6.25.1-1", so it's Wrong
162#kernvers = $(shell rpm -q --qf "%{Version}-%{Release}\n" --whatprovides kernel | sort -n | tail -n1)
163kernvers = $(shell uname -r | sed "s/\(.*\)[.].*/\1/")
[516]164kvariants = ''
[1334]165openafs_rpmbuild_args = --define "fedorakmod 1" --define "kvariants $(kvariants)" --define "kernvers $(kernvers)"
[507]166openafs: rpmbuild_args += $(openafs_rpmbuild_args)
167openafs-kernel: rpmbuild_args += $(openafs_rpmbuild_args) --define "build_userspace 0" --define "build_modules 1"
168
[788]169suexec: #install-srpms
[1]170        @rm -rf ${tmp_src}/httpd-2*/; \
171        tar zxvf ${tmp_src}/httpd-2*.tar.gz; \
[8]172        cd httpd-2*; \
[1]173        patch -p1 < ${patches}/httpd-suexec-scripts.patch; \
[823]174        autoreconf; \
175        ./configure --prefix=/etc/httpd --with-suexec-userdir=web_scripts --with-suexec-caller=apache --with-suexec-uidmin=50 --with-suexec-gidmin=50 --with-suexec-docroot=/ --with-suexec-trusteddir=/usr/libexec/scripts-trusted; \
[8]176        pushd support; \
[299]177        mkdir -p ${out_sbin}; make suexec && cp suexec ${out_sbin}; \
[8]178        popd; \
179        rm -rf httpd-2*; \
[1]180        echo; \
181        echo "suexec binary written to ${out_sbin}."; \
182        echo "Run 'make install-suexec' as root to install it.";
183
184install-suexec:
[404]185        install -m 4510 -o 0 -g apache ${out_sbin}/suexec /usr/sbin/;
[36]186
[177]187frob-openafs:
188        @if [ ! -d "/etc/openafs/" ]; then \
189        echo "/etc/openafs does not exist"; \
190        exit 1; \
191        else \
192        ln -nfs /etc/openafs/* /usr/vice/etc/; \
193        fi
194
[68]195# The following packages are needed for our packages
[1334]196basic-deps      = kernel-devel rpm-build rpmdevtools mock gcc autoconf patch krb5-workstation glibc-devel.i586 glibc-devel libtool libgcc.i586
[1259]197oursrc-deps     = hesinfo openldap-clients openldap-devel.i586 php-devel
[437]198httpdmods-deps  = httpd-devel
199httpd-deps      = xmlto db4-devel expat-devel zlib-devel libselinux-devel apr-devel apr-util-devel pcre-devel openssl-devel distcache-devel
[1259]200krb5-deps       = bison ncurses-devel texinfo keyutils-libs-devel texinfo-tex texlive-latex
[437]201openafs-deps    = pam-devel automake
[1259]202mit-zephyr-deps = readline-devel hesiod-devel hesiod-devel.i586 hesiod.i586 libXt.i586 #compat-readline43
203openssh-deps    = gtk2-devel libX11-devel autoconf automake openssl-devel perl zlib-devel audit-libs-devel util-linux groff man pam-devel tcp_wrappers-devel krb5-devel libselinux-devel audit-libs xauth pango-devel cairo-devel libedit-devel nss-devel fipscheck-devel
204php-deps        = bzip2-devel curl-devel gmp-devel libstdc++-devel sqlite-devel gcc-c++ libc-client-devel mysql-devel postgresql-devel unixODBC-devel libxml2-devel net-snmp-devel libxslt-devel libxml2-devel libXpm-devel libjpeg-devel t1lib-devel libmcrypt-devel mhash-devel libtidy-devel freetds-devel aspell-devel recode-devel
[36]205install-deps:
[1259]206        yum -y install $(basic-deps) $(oursrc-deps) $(httpdmods-deps) $(httpd-deps) $(krb5-deps) $(openafs-deps) $(mit-zephyr-deps) $(openssh-deps) $(php-deps)
[1380]207        rpm -ivh http://kojipkgs.fedoraproject.org/packages/compat-readline43/4.3/3/i386/compat-readline43-4.3-3.i386.rpm
[858]208#       rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/compat-readline43-4.3-3.i386.rpm
[760]209
210fedora:
211        make install-deps
212        make upstream
213        rpm -ivh $(out_rpms)/`uname -m`/openafs-devel*.rpm
214        make oursrc
Note: See TracBrowser for help on using the repository browser.