source: server/fedora/Makefile @ 1032

Last change on this file since 1032 was 1024, checked in by mitchb, 16 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
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
[1024]21upstream_yum    = krb5 httpd openssh pysvn
[796]22upstream        = openafs $(upstream_yum)
[923]23oursrc          = execsys tokensys accountadm httpdmods logview sql-signup nss_nonlocal nss_nonlocal.i386 whoisd mit-zephyr nss-ldapd 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"
[901]40openafs_url     = "http://dl.openafs.org/dl/openafs/1.4.8/openafs-1.4.8-1.1.1.src.rpm"
[912]41nss_ldapd_url   = "http://download.opensuse.org/repositories/network:/ldap/openSUSE_Factory/src/nss-ldapd-0.6.4-2.4.src.rpm"
[1]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:
[407]57        @rpmdev-setuptree
58        mkdir -p $(out_sbin)
59        ln -sTf $(topdir) rpmbuild
[1]60
[796]61download: download_stamp
[860]62download_stamp: | SRPMS/mit-zephyr-2.1-6.src.rpm
[760]63        @mkdir -p $(dload); \
[796]64        #wget -qO- -nv $(server_url)/$(server_arch) | xargs make
65        cd $(dload) && yumdownloader --source $(upstream_yum)
[912]66        wget -P $(dload) $(nss_ldapd_url)
[796]67        wget -P $(dload) $(openafs_url)
68        touch download_stamp
[1]69
[760]70%.src.rpm:
71        wget -q -nv -N -B $(server_url) -nd -nH -P $(dload) $(server_url)/$*.src.rpm
72
[1]73copy-patches: mkdir-tree
[59]74        @cp $(patches)/*.patch $(tmp_src); \
[796]75        cd $(tmp_src);
[1]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; \
[917]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; \
[1]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)
[763]102tarballs: mkdir-tree
[1]103        @cd ${oursrcdir}; \
[31]104        list=`find -mindepth 1 -maxdepth 1 -type d | grep -v ".svn"`; \
[1]105        for i in $$list; do \
106                pushd $$i; \
[119]107                if [ -x ./mrproper ]; then \
108                        ./mrproper; \
109                        autoconf; \
110                fi; \
[1]111                popd; \
112                tar -czf $(tmp_src)/$$i.tar.gz $$i; \
113        done;
114
[763]115#setup: install-srpms copy-patches copy-specs patch-specs tarballs
[839]116setup: copy-patches copy-specs patch-specs tarballs
[1]117
118oursrc:
119        make $(oursrc)
120
[763]121upstream: mkdir-tree download
[1]122        make $(upstream)
123
124all:
125        make $(allsrc)
126
[928]127$(oursrc): rpmbuild_args += --define 'scriptsversion $(shell svnversion ${oursrcdir}/$** | tr ':' '_')'
128
[760]129$(filter %.i386,$(oursrc)): %.i386: setup
[11]130        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[750]131        setarch i386 rpmbuild $(rpmbuild_args) --target=i386 --define="_lib lib" -bb ${tmp_specs}/$**.spec
[1]132
[760]133$(filter-out %.i386,$(oursrc)): %: setup
[750]134        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[928]135        rpmbuild $(rpmbuild_args) -bb ${tmp_specs}/$**.spec
[750]136
[928]137$(upstream) openafs-kernel: rpmbuild_args += --define 'scriptsversion $(shell svnversion ${patches} | tr ':' '_')'
138
[815]139$(upstream): setup patch-specs
[928]140        rpmbuild $(rpmbuild_args) -ba ${tmp_specs}/$@.spec
[760]141
[103]142openafs-kernel: setup
[79]143        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[507]144        rpmbuild $(rpmbuild_args) -bb ${tmp_specs}/openafs*.spec
[79]145
[796]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/")
[516]149kvariants = ''
[760]150openafs_rpmbuild_args = --define "fedorakmod 1" --define "kvariants $(kvariants)" --define "kernvers $(kernvers)" --nodeps
[507]151openafs: rpmbuild_args += $(openafs_rpmbuild_args)
152openafs-kernel: rpmbuild_args += $(openafs_rpmbuild_args) --define "build_userspace 0" --define "build_modules 1"
153
[788]154suexec: #install-srpms
[1]155        @rm -rf ${tmp_src}/httpd-2*/; \
156        tar zxvf ${tmp_src}/httpd-2*.tar.gz; \
[8]157        cd httpd-2*; \
[1]158        patch -p1 < ${patches}/httpd-suexec-scripts.patch; \
[823]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; \
[8]161        pushd support; \
[299]162        mkdir -p ${out_sbin}; make suexec && cp suexec ${out_sbin}; \
[8]163        popd; \
164        rm -rf httpd-2*; \
[1]165        echo; \
166        echo "suexec binary written to ${out_sbin}."; \
167        echo "Run 'make install-suexec' as root to install it.";
168
169install-suexec:
[404]170        install -m 4510 -o 0 -g apache ${out_sbin}/suexec /usr/sbin/;
[36]171
[177]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
[68]180# The following packages are needed for our packages
[860]181basic-deps      = kernel-devel rpm-build rpmdevtools gcc autoconf patch krb5-workstation glibc-devel.i386 glibc-devel libtool libgcc.i386
[547]182oursrc-deps     = hesinfo openldap-clients
[437]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
[796]185krb5-deps       = bison ncurses-devel texinfo keyutils-libs-devel texinfo-tex
[437]186openafs-deps    = pam-devel automake
[788]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
[36]189install-deps:
[437]190        yum -y install $(basic-deps) $(oursrc-deps) $(httpdmods-deps) $(httpd-deps) $(krb5-deps) $(openafs-deps) $(mit-zephyr-deps) $(openssh-deps)
[858]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
[760]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.