source: server/fedora/Makefile @ 1024

Last change on this file since 1024 was 1024, checked in by mitchb, 13 years ago
Clean up pysvn kludge for svn 1.5 on scripts. Patch the package version number the same way we do for the other packages we build, set up the build system to know how to build it from the upstream source, and make the base metapackage depend on our build of it.
File size: 7.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 httpd openssh pysvn
22upstream        = openafs $(upstream_yum)
23oursrc          = execsys tokensys accountadm httpdmods logview sql-signup nss_nonlocal nss_nonlocal.i386 whoisd mit-zephyr nss-ldapd 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.8/openafs-1.4.8-1.1.1.src.rpm"
41nss_ldapd_url   = "http://download.opensuse.org/repositories/network:/ldap/openSUSE_Factory/src/nss-ldapd-0.6.4-2.4.src.rpm"
42
43.PHONY: minimal-clean
44
45info:
46        @echo "The following packages are available:"; \
47        echo "$(allsrc)"; \
48        echo "Run 'make all' to build all packages."
49
50minimal-clean:
51        rm -rf $(topdir) $(dload)
52
53clean: minimal-clean
54        rm -rf $(out_rpms) $(out_srpms) $(out_sbin)
55
56mkdir-tree:
57        @rpmdev-setuptree
58        mkdir -p $(out_sbin)
59        ln -sTf $(topdir) rpmbuild
60
61download: download_stamp
62download_stamp: | SRPMS/mit-zephyr-2.1-6.src.rpm
63        @mkdir -p $(dload); \
64        #wget -qO- -nv $(server_url)/$(server_arch) | xargs make
65        cd $(dload) && yumdownloader --source $(upstream_yum)
66        wget -P $(dload) $(nss_ldapd_url)
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 %.i386,$(oursrc)): %.i386: setup
130        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
131        setarch i386 rpmbuild $(rpmbuild_args) --target=i386 --define="_lib lib" -bb ${tmp_specs}/$**.spec
132
133$(filter-out %.i386,$(oursrc)): %: setup
134        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
135        rpmbuild $(rpmbuild_args) -bb ${tmp_specs}/$**.spec
136
137$(upstream) openafs-kernel: rpmbuild_args += --define 'scriptsversion $(shell svnversion ${patches} | tr ':' '_')'
138
139$(upstream): setup patch-specs
140        rpmbuild $(rpmbuild_args) -ba ${tmp_specs}/$@.spec
141
142openafs-kernel: setup
143        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
144        rpmbuild $(rpmbuild_args) -bb ${tmp_specs}/openafs*.spec
145
146#sort -n sorts "2.6.25-1" later than "2.6.25.1-1", so it's Wrong
147#kernvers = $(shell rpm -q --qf "%{Version}-%{Release}\n" --whatprovides kernel | sort -n | tail -n1)
148kernvers = $(shell uname -r | sed "s/\(.*\)[.].*/\1/")
149kvariants = ''
150openafs_rpmbuild_args = --define "fedorakmod 1" --define "kvariants $(kvariants)" --define "kernvers $(kernvers)" --nodeps
151openafs: rpmbuild_args += $(openafs_rpmbuild_args)
152openafs-kernel: rpmbuild_args += $(openafs_rpmbuild_args) --define "build_userspace 0" --define "build_modules 1"
153
154suexec: #install-srpms
155        @rm -rf ${tmp_src}/httpd-2*/; \
156        tar zxvf ${tmp_src}/httpd-2*.tar.gz; \
157        cd httpd-2*; \
158        patch -p1 < ${patches}/httpd-suexec-scripts.patch; \
159        autoreconf; \
160        ./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; \
161        pushd support; \
162        mkdir -p ${out_sbin}; make suexec && cp suexec ${out_sbin}; \
163        popd; \
164        rm -rf httpd-2*; \
165        echo; \
166        echo "suexec binary written to ${out_sbin}."; \
167        echo "Run 'make install-suexec' as root to install it.";
168
169install-suexec:
170        install -m 4510 -o 0 -g apache ${out_sbin}/suexec /usr/sbin/;
171
172frob-openafs:
173        @if [ ! -d "/etc/openafs/" ]; then \
174        echo "/etc/openafs does not exist"; \
175        exit 1; \
176        else \
177        ln -nfs /etc/openafs/* /usr/vice/etc/; \
178        fi
179
180# The following packages are needed for our packages
181basic-deps      = kernel-devel rpm-build rpmdevtools gcc autoconf patch krb5-workstation glibc-devel.i386 glibc-devel libtool libgcc.i386
182oursrc-deps     = hesinfo openldap-clients
183httpdmods-deps  = httpd-devel
184httpd-deps      = xmlto db4-devel expat-devel zlib-devel libselinux-devel apr-devel apr-util-devel pcre-devel openssl-devel distcache-devel
185krb5-deps       = bison ncurses-devel texinfo keyutils-libs-devel texinfo-tex
186openafs-deps    = pam-devel automake
187mit-zephyr-deps = readline-devel hesiod-devel hesiod-devel.i386 hesiod.i386 libXt.i386 #compat-readline43
188openssh-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 gobject-devel pango-devel cairo-devel libedit-devel nss-devel
189install-deps:
190        yum -y install $(basic-deps) $(oursrc-deps) $(httpdmods-deps) $(httpd-deps) $(krb5-deps) $(openafs-deps) $(mit-zephyr-deps) $(openssh-deps)
191        rpm -ivh ftp://ftp.muug.mb.ca/mirror/fedora/linux/core/6/i386/os/Fedora/RPMS/compat-readline43-4.3-3.i386.rpm
192#       rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/compat-readline43-4.3-3.i386.rpm
193
194fedora:
195        make install-deps
196        make upstream
197        rpm -ivh $(out_rpms)/`uname -m`/openafs-devel*.rpm
198        make oursrc
Note: See TracBrowser for help on using the repository browser.