source: branches/fc13-dev/server/fedora/Makefile @ 1625

Last change on this file since 1625 was 1625, checked in by ezyang, 14 years ago
Upgrade OpenAFS to 1.4.12 for newest Fedora 13 kernel (could not use old version because it did not support the new kernel; some header files were moved around.)
File size: 9.5 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
[1622]21upstream_yum    = krb5 krb5.i686 httpd openssh
[1590]22hackage         = MonadCatchIO-mtl-0.3.0.1 cgi-3001.1.8.1 unix-handle-0.0.0
23upstream_hackage = ghc-MonadCatchIO-mtl ghc-cgi ghc-unix-handle
24upstream        = openafs $(upstream_yum) $(upstream_hackage) moira cluster-glue heartbeat pacemaker
[1622]25oursrc          = execsys tokensys accountadm httpdmods logview sql-signup nss_nonlocal nss_nonlocal.i686 whoisd mit-zephyr athrun php_scripts scripts-wizard scripts-base scripts-static-cat
[1]26allsrc          = $(upstream) $(oursrc)
27oursrcdir       = ${PWD}/../common/oursrc
28patches         = ${PWD}/../common/patches
29specs           = ${PWD}/specs
30
[353]31topdir          = ${HOME}/rpmbuild
32tmp_build       = $(topdir)/BUILD
33tmp_specs       = $(topdir)/SPECS
34tmp_src         = $(topdir)/SOURCES
35out_rpms        = $(topdir)/RPMS
36out_srpms       = $(topdir)/SRPMS
37out_sbin        = $(topdir)/sbin
[1]38
39dload           = ${PWD}/.dload
[260]40server_url      = "http://web.mit.edu/scripts/src"
[1]41server_arch     = "fedora.stable"
[1625]42openafs_url     = "http://dl.openafs.org/dl/openafs/1.4.12/openafs-1.4.12-1.1.2.src.rpm"
[1459]43clusterglue_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"
44heartbeat_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"
45pacemaker_url   = "http://kojipkgs.fedoraproject.org/packages/pacemaker/1.0.5/5.fc12/src/pacemaker-1.0.5-5.fc12.src.rpm"
[1]46
[1622]47PKG             = $(patsubst %.i686,%,$@)
[1334]48
[1]49.PHONY: minimal-clean
50
51info:
52        @echo "The following packages are available:"; \
53        echo "$(allsrc)"; \
54        echo "Run 'make all' to build all packages."
55
56minimal-clean:
57        rm -rf $(topdir) $(dload)
58
59clean: minimal-clean
60        rm -rf $(out_rpms) $(out_srpms) $(out_sbin)
[1621]61        rm -f download_stamp
[1]62
63mkdir-tree:
[407]64        @rpmdev-setuptree
65        mkdir -p $(out_sbin)
66        ln -sTf $(topdir) rpmbuild
[1]67
[796]68download: download_stamp
[860]69download_stamp: | SRPMS/mit-zephyr-2.1-6.src.rpm
[760]70        @mkdir -p $(dload); \
[796]71        #wget -qO- -nv $(server_url)/$(server_arch) | xargs make
[1498]72        cd $(dload) && yumdownloader --disablerepo=scripts --source $(upstream_yum)
[796]73        wget -P $(dload) $(openafs_url)
[1459]74        wget -P $(dload) $(clusterglue_url)
75        wget -P $(dload) $(heartbeat_url)
76        wget -P $(dload) $(pacemaker_url)
[1396]77        cd $(tmp_src) && wget -nd -r -l1 -np -A.orig.tar.gz http://debathena.mit.edu/apt/pool/debathena/d/debathena-moira/
[1590]78        cabal update
79        cabal fetch $(hackage)
80        cp -a $(hackage:%=~/.cabal/packages/*/*/*/%.tar.gz) $(tmp_src)
[796]81        touch download_stamp
[1]82
[760]83%.src.rpm:
84        wget -q -nv -N -B $(server_url) -nd -nH -P $(dload) $(server_url)/$*.src.rpm
85
[1]86copy-patches: mkdir-tree
[59]87        @cp $(patches)/*.patch $(tmp_src); \
[796]88        cd $(tmp_src);
[1]89
90install-srpms: mkdir-tree download
91        rpm $(rpm_args) -i $(dload)/*.src.rpm 2>/dev/null;
92
93copy-specs: mkdir-tree
94        cp ${specs}/*.spec $(tmp_specs)
95
96patch-specs: install-srpms
97        @cd ${tmp_specs}; \
98        list=`ls ${specs}/*.spec.patch`; \
99        for i in $$list; do \
100                patch < $$i; \
[917]101        done; \
102        list2=`svn ls ${oursrcdir}`; \
103        for i in $$list2; do \
104                base=`basename $$i`; \
105                version=`svnversion ${oursrcdir}/$$i`; \
106                version=$${version//:/_}; \
107                echo "$$i version $$version"; \
108                sed --in-place \
109                        -e "s/SVNVERSION_TO_UPDATE/$${version}/" \
110                ${tmp_specs}/$$base.spec; \
[1]111        done;
112
113# 1. use the package's Makefile to delete leftover files and run autoconf
114# 2. create a tarball (we want it to contain the autoconf output)
[763]115tarballs: mkdir-tree
[1]116        @cd ${oursrcdir}; \
[31]117        list=`find -mindepth 1 -maxdepth 1 -type d | grep -v ".svn"`; \
[1]118        for i in $$list; do \
119                pushd $$i; \
[119]120                if [ -x ./mrproper ]; then \
121                        ./mrproper; \
122                        autoconf; \
123                fi; \
[1]124                popd; \
125                tar -czf $(tmp_src)/$$i.tar.gz $$i; \
126        done;
127
[763]128#setup: install-srpms copy-patches copy-specs patch-specs tarballs
[839]129setup: copy-patches copy-specs patch-specs tarballs
[1]130
131oursrc:
132        make $(oursrc)
133
[763]134upstream: mkdir-tree download
[1]135        make $(upstream)
136
137all:
138        make $(allsrc)
139
[1522]140$(oursrc): rpmbuild_args += --define 'scriptsversion $(shell svnversion ${oursrcdir}/$** | tr ':' '_' | sed -e 's/-.*/0.uncommitted/')'
[928]141
[1622]142$(filter %.i686,$(oursrc)): %.i686: setup
[11]143        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]144        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
[1622]145        /usr/bin/mock -r scripts-fc13-i386 --arch=i686 ${rpmbuild_args} --define="_lib lib" -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[1]146
[1622]147$(filter-out %.i686,$(oursrc)): %: setup
[750]148        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]149        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
[1622]150        /usr/bin/mock -r scripts-fc13-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[750]151
[1340]152$(upstream) openafs-kernel: rpmbuild_args += --define 'scriptsversion $(shell svnversion ${patches} | tr ':' '_')'
[928]153
[1622]154$(filter %.i686,$(upstream)): %.i686: setup patch-specs
[1334]155        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
[1622]156        /usr/bin/mock -r scripts-fc13-i386 --arch=i686 ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[760]157
[1622]158$(filter-out %.i686,$(upstream)): %: setup patch-specs
[1334]159        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/${PKG}.spec
[1622]160        /usr/bin/mock -r scripts-fc13-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/${PKG}-[0-9]*.src.rpm | head -1`
[1334]161
[103]162openafs-kernel: setup
[79]163        PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" \
[1334]164        rpmbuild ${rpmbuild_args} -bs ${tmp_specs}/openafs*.spec
[1622]165        /usr/bin/mock -r scripts-fc13-`uname -m` ${rpmbuild_args} -v --rebuild `ls -t ${out_srpms}/openafs*.src.rpm | head -1`
[79]166
[796]167#sort -n sorts "2.6.25-1" later than "2.6.25.1-1", so it's Wrong
168#kernvers = $(shell rpm -q --qf "%{Version}-%{Release}\n" --whatprovides kernel | sort -n | tail -n1)
169kernvers = $(shell uname -r | sed "s/\(.*\)[.].*/\1/")
[516]170kvariants = ''
[1334]171openafs_rpmbuild_args = --define "fedorakmod 1" --define "kvariants $(kvariants)" --define "kernvers $(kernvers)"
[507]172openafs: rpmbuild_args += $(openafs_rpmbuild_args)
173openafs-kernel: rpmbuild_args += $(openafs_rpmbuild_args) --define "build_userspace 0" --define "build_modules 1"
174
[788]175suexec: #install-srpms
[1]176        @rm -rf ${tmp_src}/httpd-2*/; \
177        tar zxvf ${tmp_src}/httpd-2*.tar.gz; \
[8]178        cd httpd-2*; \
[1]179        patch -p1 < ${patches}/httpd-suexec-scripts.patch; \
[823]180        autoreconf; \
181        ./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]182        pushd support; \
[299]183        mkdir -p ${out_sbin}; make suexec && cp suexec ${out_sbin}; \
[8]184        popd; \
185        rm -rf httpd-2*; \
[1]186        echo; \
187        echo "suexec binary written to ${out_sbin}."; \
188        echo "Run 'make install-suexec' as root to install it.";
189
190install-suexec:
[404]191        install -m 4510 -o 0 -g apache ${out_sbin}/suexec /usr/sbin/;
[36]192
[177]193frob-openafs:
194        @if [ ! -d "/etc/openafs/" ]; then \
195        echo "/etc/openafs does not exist"; \
196        exit 1; \
197        else \
198        ln -nfs /etc/openafs/* /usr/vice/etc/; \
199        fi
200
[68]201# The following packages are needed for our packages
[1622]202basic-deps      = kernel-devel rpm-build rpmdevtools mock gcc autoconf patch krb5-workstation glibc-devel.i686 glibc-devel libtool libgcc.i686
203oursrc-deps     = hesinfo openldap-clients openldap-devel.i686 php-devel
[437]204httpdmods-deps  = httpd-devel
205httpd-deps      = xmlto db4-devel expat-devel zlib-devel libselinux-devel apr-devel apr-util-devel pcre-devel openssl-devel distcache-devel
[1259]206krb5-deps       = bison ncurses-devel texinfo keyutils-libs-devel texinfo-tex texlive-latex
[437]207openafs-deps    = pam-devel automake
[1622]208mit-zephyr-deps = readline-devel hesiod-devel hesiod-devel.i686 hesiod.i686 libXt.i686 #compat-readline43
[1259]209openssh-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
210php-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
[1590]211haskell-deps    = cabal-install
[36]212install-deps:
[1590]213        yum -y install $(basic-deps) $(oursrc-deps) $(httpdmods-deps) $(httpd-deps) $(krb5-deps) $(openafs-deps) $(mit-zephyr-deps) $(openssh-deps) $(php-deps) $(haskell-deps)
[1622]214# XXX: We need to figure out what's going on with compat-readline43
215#       rpm -ivh http://kojipkgs.fedoraproject.org/packages/compat-readline43/4.3/3/i386/compat-readline43-4.3-3.i386.rpm
[858]216#       rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/compat-readline43-4.3-3.i386.rpm
[760]217
218fedora:
219        make install-deps
220        make upstream
221        rpm -ivh $(out_rpms)/`uname -m`/openafs-devel*.rpm
222        make oursrc
Note: See TracBrowser for help on using the repository browser.