openpkg/Makefile

changeset 428
f880f219c566
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/openpkg/Makefile	Tue Jul 31 12:23:42 2012 +0200
     1.3 @@ -0,0 +1,177 @@
     1.4 +##
     1.5 +##  Makefile -- OpenPKG Framework Developer Procedures
     1.6 +##  Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/>
     1.7 +##
     1.8 +##  This software is property of the OpenPKG GmbH, DE MUC HRB 160208.
     1.9 +##  All rights reserved. Licenses which grant limited permission to use,
    1.10 +##  copy, modify and distribute this software are available from the
    1.11 +##  OpenPKG GmbH.
    1.12 +##
    1.13 +##  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
    1.14 +##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    1.15 +##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    1.16 +##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    1.17 +##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    1.18 +##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    1.19 +##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    1.20 +##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    1.21 +##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    1.22 +##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    1.23 +##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    1.24 +##  SUCH DAMAGE.
    1.25 +##
    1.26 +
    1.27 +PATH      = /usr/opkg/bin:/usr/opkg/sbin:/bin:/sbin:/usr/bin:/usr/sbin
    1.28 +PREFIX    = /openpkg
    1.29 +USER      = openpkg
    1.30 +GROUP     = openpkg
    1.31 +TAG       = openpkg
    1.32 +
    1.33 +SH        = /bin/sh
    1.34 +RPM       = $(PREFIX)/bin/openpkg rpm
    1.35 +SUDO      = sudo
    1.36 +SCP       = scp
    1.37 +RSYNC     = rsync
    1.38 +RSYNC_REM = /v/openpkg/sw/bin/rsync
    1.39 +MTN       = mtn
    1.40 +
    1.41 +UPLOAD1   = openpkg@experimental.openpkg.org:/v/openpkg/download/data/framework/release/source/
    1.42 +UPLOAD2   = openpkg@experimental.openpkg.org:/v/openpkg/download/data/components/cache/openpkg/
    1.43 +
    1.44 +all:
    1.45 +	@echo "Individual Steps:"
    1.46 +	@echo "  $(MAKE) fetch-sh         fetch third-party distribution files (standalone)"
    1.47 +	@echo "  $(MAKE) fetch-rpm        fetch third-party distribution files (requires $(PREFIX))"
    1.48 +	@echo "  $(MAKE) build-src-sh     build   SOURCE SHELL package (standalone)"
    1.49 +	@echo "  $(MAKE) build-bin-sh     build   BINARY SHELL package (standalone)"
    1.50 +	@echo "  $(MAKE) build-src-rpm    build   SOURCE RPM   package (requires $(PREFIX))"
    1.51 +	@echo "  $(MAKE) build-bin-rpm    build   BINARY RPM   package (requires $(PREFIX))"
    1.52 +	@echo "  $(MAKE) install-bin-sh   install BINARY SHELL package (requires $(PREFIX))"
    1.53 +	@echo "  $(MAKE) install-bin-rpm  install BINARY RPM   package (requires $(PREFIX))"
    1.54 +	@echo "  $(MAKE) uninstall        uninstall entire instance under $(PREFIX)"
    1.55 +	@echo "  $(MAKE) upload-dst       upload latest DISTRIBUTION files"
    1.56 +	@echo "  $(MAKE) upload-pkg       upload latest SOURCE SHELL+RPM packages"
    1.57 +	@echo "  $(MAKE) upload-src       upload latest SOURCE repository revisions"
    1.58 +	@echo "  $(MAKE) clean            remove temporary files"
    1.59 +	@echo ""
    1.60 +	@echo "All-In-One Steps:"
    1.61 +	@echo "  $(MAKE) bootstrap        BOOTSTRAP instance under $(PREFIX) from scratch"
    1.62 +	@echo "  $(MAKE) update           UPDATE    instance under $(PREFIX)"
    1.63 +	@echo "  $(MAKE) upload           upload all results"
    1.64 +
    1.65 +##
    1.66 +##  Individual Steps
    1.67 +##
    1.68 +
    1.69 +fetch-sh:
    1.70 +	@echo "++ fetching third-party distribution files (manually)"; \
    1.71 +	eval `egrep '^%define *V_.*' openpkg.spec | \
    1.72 +	    sed -e 's%^.*\(V_[a-z][a-zA-Z0-9_]*\) *\([^ ][^ ]*\).*$$%\1="\2";%'`; \
    1.73 +	for url in \
    1.74 +	    `egrep '^Source[0-9][0-9]*: *(http|ftp)://' openpkg.spec | \
    1.75 +	    sed -e 's;^Source[0-9][0-9]*: *;;' -e 's;%{\(V_[a-z][a-zA-Z0-9_]*\)};$${\1};g'`; do \
    1.76 +	    eval "url=\"$$url\""; \
    1.77 +	    file=`echo "$$url" | sed -e 's;^.*/\([^/]*\)$$;../dst/\1;'`; \
    1.78 +	    if [ ! -f $$file ]; then \
    1.79 +			echo "-- downloading $$url"; \
    1.80 +			if [ ".`(which curl) 2>/dev/null | egrep '^/'`" != . ]; then \
    1.81 +				curl -s -L -o "$$file" "$$url" || true; \
    1.82 +			elif [ ".`(which wget) 2>/dev/null | egrep '^/'`" != . ]; then \
    1.83 +				wget -q -O "$$file" "$$url" || true; \
    1.84 +			elif [ ".`(which fetch) 2>/dev/null | egrep '^/'`" != . ]; then \
    1.85 +				fetch -o "$$file" "$$url" || true; \
    1.86 +			elif [ ".`(which lwp-download) 2>/dev/null | egrep '^/'`" != . ]; then \
    1.87 +				lwp-download "$$url" "$$file" || true; \
    1.88 +			else \
    1.89 +				echo "ERROR: sorry, no download tool found in \$$PATH (\"curl\", \"wget\", \"fetch\", \"lwp-download\")" 1>&2; \
    1.90 +				exit 1; \
    1.91 +			fi; \
    1.92 +			if [ ! -f "$$file" ]; then \
    1.93 +				echo "ERROR: failed to download \"$$url\"" 1>&2; \
    1.94 +				exit 1; \
    1.95 +			fi; \
    1.96 +	    fi; \
    1.97 +	done
    1.98 +
    1.99 +fetch-rpm:
   1.100 +	@echo "++ fetching third-party distribution files (via RPM)"; \
   1.101 +	PATH="$(PATH)" $(RPM) -bf *.spec
   1.102 +
   1.103 +build-src-sh:
   1.104 +	@echo "++ building SOURCE SHELL package"; \
   1.105 +	PATH="$(PATH)" $(SH) openpkg.boot -s
   1.106 +
   1.107 +build-bin-sh:
   1.108 +	@echo "++ building BINARY SHELL package"; \
   1.109 +	cd ../pkg && TMPDIR="`cd ../tmp && pwd`" && export TMPDIR && \
   1.110 +	PATH="$(PATH)" $(SH) openpkg-*-`date '+%Y%m%d'`.src.sh \
   1.111 +	    --prefix=$(PREFIX) \
   1.112 +	    --user=$(USER) \
   1.113 +	    --group=$(GROUP) \
   1.114 +	    --tag=$(TAG)
   1.115 +
   1.116 +build-src-rpm:
   1.117 +	@echo "++ building SOURCE RPM package"; \
   1.118 +	PATH="$(PATH)" $(RPM) -bs openpkg.spec
   1.119 +
   1.120 +build-bin-rpm:
   1.121 +	@echo "++ building BINARY RPM package"; \
   1.122 +	PATH="$(PATH)" $(RPM) -bb openpkg.spec
   1.123 +
   1.124 +install-bin-sh:
   1.125 +	@echo "++ installing BINARY SHELL package"; \
   1.126 +	d=`cd ../pkg && pwd` && cd / && PATH="$(PATH)" $(SUDO) $(SH) $$d/openpkg-*-`date '+%Y%m%d'`.*-*-*.sh
   1.127 +
   1.128 +install-bin-rpm:
   1.129 +	@echo "++ installing BINARY RPM package"; \
   1.130 +	d=`cd ../pkg && pwd` && cd / && PATH="$(PATH)" $(SUDO) $(RPM) -Uvh --replacepkgs $$d/openpkg-*-`date '+%Y%m%d'`.*-*-*.rpm
   1.131 +
   1.132 +uninstall:
   1.133 +	-@echo "++ uninstalling ENTIRE instance"; \
   1.134 +	cd /; $(RPM) -qa | grep -v '^openpkg-[0-9]' | xargs $(SUDO) $(RPM) -e; \
   1.135 +	$(SUDO) $(RPM) -e openpkg
   1.136 +
   1.137 +upload-dst:
   1.138 +	@echo "++ uploading vendor DISTRIBUTION files:"; \
   1.139 +	$(RSYNC) -raH --delete -v --progress --rsync-path=$(RSYNC_REM) ../dst/ $(UPLOAD2)
   1.140 +
   1.141 +upload-pkg:
   1.142 +	@echo "++ uploading SOURCE SHELL/RPM package(s):"; \
   1.143 +	$(RSYNC) -raH --delete -v --progress --rsync-path=$(RSYNC_REM) ../pkg/*.src.* $(UPLOAD1)
   1.144 +
   1.145 +upload-src:
   1.146 +	@echo "++ uploading SOURCE repository revision(s):"; \
   1.147 +	$(MTN) sync
   1.148 +
   1.149 +clean:
   1.150 +	-rm -rf ../tmp/*
   1.151 +
   1.152 +pod2man:
   1.153 +	pod2man --section=1 --center="OpenPKG" --release="OPENPKG(8)"    --date="OpenPKG" --quotes=none openpkg.pod    >openpkg.1
   1.154 +	pod2man --section=8 --center="OpenPKG" --release="RC(8)"         --date="OpenPKG" --quotes=none rc.pod         >rc.8
   1.155 +	pod2man --section=8 --center="OpenPKG" --release="RPMTOOL(8)"    --date="OpenPKG" --quotes=none rpmtool.pod    >rpmtool.8
   1.156 +	pod2man --section=8 --center="OpenPKG" --release="LSYNC(8)"      --date="OpenPKG" --quotes=none lsync.pod      >lsync.8
   1.157 +	pod2man --section=8 --center="OpenPKG" --release="RPM-CONFIG(8)" --date="OpenPKG" --quotes=none rpm-config.pod >rpm-config.8
   1.158 +	pod2man --section=8 --center="OpenPKG" --release="UUID(8)"       --date="OpenPKG" --quotes=none uuid.pod       >uuid.8
   1.159 +	pod2man --section=8 --center="OpenPKG" --release="RELEASE(8)"    --date="OpenPKG" --quotes=none release.pod    >release.8
   1.160 +	pod2man --section=8 --center="OpenPKG" --release="BUILD(8)"      --date="OpenPKG" --quotes=none build.pod      >build.8
   1.161 +	pod2man --section=8 --center="OpenPKG" --release="INDEX(8)"      --date="OpenPKG" --quotes=none index.pod      >index.8
   1.162 +	pod2man --section=8 --center="OpenPKG" --release="SEARCH(8)"     --date="OpenPKG" --quotes=none search.pod     >search.8
   1.163 +	pod2man --section=8 --center="OpenPKG" --release="MIRROR(8)"     --date="OpenPKG" --quotes=none mirror.pod     >mirror.8
   1.164 +	pod2man --section=8 --center="OpenPKG" --release="MAKEPROXY(8)"  --date="OpenPKG" --quotes=none makeproxy.pod  >makeproxy.8
   1.165 +	pod2man --section=8 --center="OpenPKG" --release="REGISTER(8)"   --date="OpenPKG" --quotes=none register.pod   >register.8
   1.166 +	pod2man --section=8 --center="OpenPKG" --release="LICENSE(8)"    --date="OpenPKG" --quotes=none license.pod    >license.8
   1.167 +	pod2man --section=8 --center="OpenPKG" --release="DEV(8)"        --date="OpenPKG" --quotes=none dev.pod        >dev.8
   1.168 +	pod2man --section=8 --center="OpenPKG" --release="SEA(8)"        --date="OpenPKG" --quotes=none sea.pod        >sea.8
   1.169 +	pod2man --section=8 --center="OpenPKG" --release="STACK(8)"      --date="OpenPKG" --quotes=none stack.pod      >stack.8
   1.170 +
   1.171 +##
   1.172 +##  All-In-One Steps
   1.173 +##
   1.174 +
   1.175 +bootstrap: build-src-sh build-bin-sh install-bin-sh
   1.176 +
   1.177 +update: build-bin-rpm install-bin-rpm
   1.178 +
   1.179 +upload: build-src-sh build-src-rpm upload-pkg upload-src
   1.180 +

mercurial