source: trunk/server/fedora/Makefile @ 1391

Last change on this file since 1391 was 1380, checked in by mitchb, 14 years ago
Don't allow Canada to make our servers uninstallable Someone thought that when Fedora's main mirror stopped providing Fedora Core 6 packages, it would be a good idea to tie our install process to a particular foreign mirror that still had it. That doesn't work anymore. Let's pull that package from the actual buildsystem instead. (Getting rid of the FC6 package as a system dependency would be good, too...)
File size: 8.3 KB
Line 
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
21upstream_yum    = krb5 krb5.i586 httpd openssh
22upstream        = openafs $(upstream_yum)
23oursrc          = execsys tokensys accountadm httpdmods logview sql-signup nss_nonlocal nss_nonlocal.i586 whoisd mit-zephyr athrun php_scripts scripts-base
24allsrc          = $(upstream) $(oursrc)
25oursrcdir       = ${PWD}/../common/oursrc
26patches         = ${PWD}/../common/patches
27specs           = ${PWD}/specs
28
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
36
37dload           = ${PWD}/.dload
38server_url      = "http://web.mit.edu/scripts/src"
39server_arch     = "fedora.stable"
40openafs_url     = "http://dl.openafs.org/dl/openafs/1.4.11/openafs-1.4.11-1.1.1.src.rpm"
41
42PKG             = $(patsubst %.i586,%,$@)
43
44.PHONY: minimal-clean
45
46info:
47        @echo "The following packages are available:"; \
48        echo "$(allsrc)"; \
49        echo "Run 'make all' to build all packages."
50
51minimal-clean:
52        rm -rf $(topdir) $(dload)
53
54clean: minimal-clean
55        rm -rf $(out_rpms) $(out_srpms) $(out_sbin)
56
57mkdir-tree:
58        @rpmdev-setuptree
59        mkdir -p $(out_sbin)
60        ln -sTf $(topdir) rpmbuild
61
62download: download_stamp
63download_stamp: | SRPMS/mit-zephyr-2.1-6.src.rpm
64        @mkdir -p $(dload); \
65        #wget -qO- -nv $(server_url)/$(server_arch) | xargs make
66        cd $(dload) && yumdownloader --source $(upstream_yum)
67        wget -P $(dload) $(openafs_url)
68        touch download_stamp
69
70%.src.rpm:
71        wget -q -nv -N -B $(server_url) -nd -nH -P $(dload) $(server_url)/$*.src.rpm
72
73copy-patches: mkdir-tree
74        @cp $(patches)/*.patch $(tmp_src); \
75        cd $(tmp_src);
76
77install-srpms: mkdir-tree download
78        rpm $(rpm_args) -i $(dload)/*.src.rpm 2>/dev/null;
79
80copy-specs: mkdir-tree
81        cp ${specs}/*.spec $(tmp_specs)
82
83patch-specs: install-srpms
84        @cd ${tmp_specs}; \
85        list=`ls ${specs}/*.spec.patch`; \
86        for i in $$list; do \
87                patch < $$i; \
88        done; \
89        list2=`svn ls ${oursrcdir}`; \
90        for i in $$list2; do \
91                base=`basename $$i`; \
92                version=`svnversion ${oursrcdir}/$$i`; \
93                version=$${version//:/_}; \
94                echo "$$i version $$version"; \
95                sed --in-place \
96                        -e "s/SVNVERSION_TO_UPDATE/$${version}/" \
97                ${tmp_specs}/$$base.spec; \
98        done;
99
100# 1. use the package's Makefile to delete leftover files and run autoconf
101# 2. create a tarball (we want it to contain the autoconf output)
102tarballs: mkdir-tree
103        @cd ${oursrcdir}; \
104        list=`find -mindepth 1 -maxdepth 1 -type d | grep -v ".svn"`; \
105        for i in $$list; do \
106                pushd $$i; \
107                if [ -x ./mrproper ]; then \
108                        ./mrproper; \
109                        autoconf; \
110                fi; \
111                popd; \
112                tar -czf $(tmp_src)/$$i.tar.gz $$i; \
113        done;
114
115#setup: install-srpms copy-patches copy-specs patch-specs tarballs
116setup: copy-patches copy-specs patch-specs tarballs
117
118oursrc:
119        make $(oursrc)
120
121upstream: mkdir-tree download
122        make $(upstream)
123
124all:
125        make $(allsrc)
126
127$(oursrc): rpmbuild_args += --define 'scriptsversion $(shell svnversion ${oursrcdir}/$** | tr ':' '_')'
128
129$(filter %.i586,$(oursrc)): %.i586: setup
130        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
131        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
132        /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`
133
134$(filter-out %.i586,$(oursrc)): %: setup
135        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
136        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
137        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
138
139$(upstream) openafs-kernel: rpmbuild_args += --define 'scriptsversion $(shell svnversion ${patches} | tr ':' '_')'
140
141$(filter %.i586,$(upstream)): %.i586: setup patch-specs
142        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
143        /usr/bin/mock -r scripts-fc11-i386 --arch=i586 ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
144
145$(filter-out %.i586,$(upstream)): %: setup patch-specs
146        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
147        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
148
149openafs-kernel: setup
150        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
151        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/openafs*.spec
152        /usr/bin/mock -r scripts-fc11-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/openafs*.src.rpm | head -1`
153
154#sort -n sorts "2.6.25-1" later than "2.6.25.1-1", so it's Wrong
155#kernvers = $(shell rpm -q --qf "%{Version}-%{Release}\n" --whatprovides kernel | sort -n | tail -n1)
156kernvers = $(shell uname -r | sed "s/\(.*\)[.].*/\1/")
157kvariants = ''
158openafs_rpmbuild_args = --define "fedorakmod 1" --define "kvariants $(kvariants)" --define "kernvers $(kernvers)"
159openafs: rpmbuild_args += $(openafs_rpmbuild_args)
160openafs-kernel: rpmbuild_args += $(openafs_rpmbuild_args) --define "build_userspace 0" --define "build_modules 1"
161
162suexec: #install-srpms
163        @rm -rf ${tmp_src}/httpd-2*/; \
164        tar zxvf ${tmp_src}/httpd-2*.tar.gz; \
165        cd httpd-2*; \
166        patch -p1 < ${patches}/httpd-suexec-scripts.patch; \
167        autoreconf; \
168        ./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; \
169        pushd support; \
170        mkdir -p ${out_sbin}; make suexec && cp suexec ${out_sbin}; \
171        popd; \
172        rm -rf httpd-2*; \
173        echo; \
174        echo "suexec binary written to ${out_sbin}."; \
175        echo "Run 'make install-suexec' as root to install it.";
176
177install-suexec:
178        install -m 4510 -o 0 -g apache ${out_sbin}/suexec /usr/sbin/;
179
180frob-openafs:
181        @if [ ! -d "/etc/openafs/" ]; then \
182        echo "/etc/openafs does not exist"; \
183        exit 1; \
184        else \
185        ln -nfs /etc/openafs/* /usr/vice/etc/; \
186        fi
187
188# The following packages are needed for our packages
189basic-deps      = kernel-devel rpm-build rpmdevtools mock gcc autoconf patch krb5-workstation glibc-devel.i586 glibc-devel libtool libgcc.i586
190oursrc-deps     = hesinfo openldap-clients openldap-devel.i586 php-devel
191httpdmods-deps  = httpd-devel
192httpd-deps      = xmlto db4-devel expat-devel zlib-devel libselinux-devel apr-devel apr-util-devel pcre-devel openssl-devel distcache-devel
193krb5-deps       = bison ncurses-devel texinfo keyutils-libs-devel texinfo-tex texlive-latex
194openafs-deps    = pam-devel automake
195mit-zephyr-deps = readline-devel hesiod-devel hesiod-devel.i586 hesiod.i586 libXt.i586 #compat-readline43
196openssh-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
197php-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
198install-deps:
199        yum -y install $(basic-deps) $(oursrc-deps) $(httpdmods-deps) $(httpd-deps) $(krb5-deps) $(openafs-deps) $(mit-zephyr-deps) $(openssh-deps) $(php-deps)
200        rpm -ivh http://kojipkgs.fedoraproject.org/packages/compat-readline43/4.3/3/i386/compat-readline43-4.3-3.i386.rpm
201#       rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/compat-readline43-4.3-3.i386.rpm
202
203fedora:
204        make install-deps
205        make upstream
206        rpm -ivh $(out_rpms)/`uname -m`/openafs-devel*.rpm
207        make oursrc
Note: See TracBrowser for help on using the repository browser.