From aa601a397d0f82dd49a91d7ecef023c08798ba5d Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 11 May 2021 01:45:39 +0200 Subject: [PATCH] build system: do not look for nmake in $PATH nmake was removed long ago (2940b3f5) and so were the outdated Makefiles (6cc2f6a0). However, the build system still looked for an AT&T nmake in $PATH. If a user had it installed, the build would fail as the system tried to use it. https://groups.google.com/g/korn-shell/c/2VK8kS0_VhA/m/-Rlnv7PRAgAJ bin/package, src/cmd/INIT/package.sh: - Remove all the code supporting nmake. - Make 'bin/package test' work by simply exec'ing bin/shtests. src/cmd/INIT/Mamfile: - Do not install *.mk nmake support files. lib/package/*.mk, src/cmd/INIT/*.mk: - nmake support files removed. --- bin/package | 231 ++---- lib/package/CONVERT.mk | 260 ------- lib/package/package.mk | 1537 --------------------------------------- src/cmd/INIT/CONVERT.mk | 260 ------- src/cmd/INIT/MAPLIB.mk | 45 -- src/cmd/INIT/MSGFUN.mk | 2 - src/cmd/INIT/MSGKEY.mk | 2 - src/cmd/INIT/Mamfile | 51 -- src/cmd/INIT/PROBE.mk | 13 - src/cmd/INIT/TEST.mk | 197 ----- src/cmd/INIT/WWW.mk | 450 ------------ src/cmd/INIT/package.mk | 1537 --------------------------------------- src/cmd/INIT/package.sh | 231 ++---- 13 files changed, 108 insertions(+), 4708 deletions(-) delete mode 100644 lib/package/CONVERT.mk delete mode 100644 lib/package/package.mk delete mode 100644 src/cmd/INIT/CONVERT.mk delete mode 100644 src/cmd/INIT/MAPLIB.mk delete mode 100644 src/cmd/INIT/MSGFUN.mk delete mode 100644 src/cmd/INIT/MSGKEY.mk delete mode 100644 src/cmd/INIT/PROBE.mk delete mode 100644 src/cmd/INIT/TEST.mk delete mode 100644 src/cmd/INIT/WWW.mk delete mode 100644 src/cmd/INIT/package.mk diff --git a/bin/package b/bin/package index f1c70b753..4082d4408 100755 --- a/bin/package +++ b/bin/package @@ -136,10 +136,12 @@ all_types='*.*|sun4' # all but sun4 match *.* case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in 0123) USAGE=$' [-? -@(#)$Id: package (AT&T Research) 2012-06-28 $ +@(#)$Id: package (ksh 93u+m) 2021-05-11 $ ] [-author?Glenn Fowler ] -[-copyright?Copyright (c) 1994-2012 AT&T Intellectual Property] +[-author?Contributors to https://github.com/ksh93/ksh] +[-copyright?(c) 1994-2012 AT&T Intellectual Property] +[-copyright?(c) 2020-2021 Contributors to https://github.com/ksh93/ksh] [-license?http://www.eclipse.org/org/documents/epl-v10.html] [+NAME?package - source and binary package control] [+DESCRIPTION?The \bpackage\b command controls source and binary @@ -609,8 +611,6 @@ ifs=${IFS-' lo= make= makeflags='-K' -nmakeflags= -nmakesep= nl=" " noexec= @@ -1645,17 +1645,6 @@ onpath() # command return 1 } -# true if no nmake or nmake not from AT&T or nmake too old - -nonmake() # nmake -{ - _nonmake_version=`( $1 -n -f - 'print $(MAKEVERSION:@/.*AT&T.* //:/-//G:@/.* .*/19960101/)' . ) /dev/null || echo 19840919` - if test $_nonmake_version -lt 20001031 - then return 0 - fi - return 1 -} - # determine local host attributes hostinfo() # attribute ... @@ -2715,8 +2704,7 @@ case $x in OK=ok KSH=$EXECROOT/bin/ksh - MAKE=nmake - NMAKE=$EXECROOT/bin/$MAKE + MAKE=mamake SUM=$EXECROOT/bin/sum TEE=$EXECROOT/bin/tee INITROOT=$PACKAGEROOT/src/cmd/INIT @@ -3106,7 +3094,7 @@ cat $INITROOT/$i.sh $show export PATH export PATH ;; - *) for i in package proto nmake + *) for i in package proto do if onpath $i then EXECROOT=`echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,'` EXECTYPE=`echo $EXECROOT | sed -e 's,.*/,,'` @@ -3143,8 +3131,7 @@ cat $INITROOT/$i.sh OK=ok KSH=$EXECROOT/bin/ksh - MAKE=nmake - NMAKE=$EXECROOT/bin/$MAKE + MAKE=mamake SUM=$EXECROOT/bin/sum TEE=$EXECROOT/bin/tee @@ -3537,44 +3524,41 @@ int main(int argc, char** argv) { return argc || argv; } echo "$command: $INITROOT: INIT package source not found" >&2 return 1 } - executable $INSTALLROOT/bin/nmake || { - # check for prototyping cc - # NOTE: proto.c must be K&R compatible - $CC -c $INITROOT/p.c >/dev/null 2>&1 - c=$? - rm -f p.* - test 0 != "$c" && { - checkaout proto || return - PROTOROOT=$PACKAGEROOT/proto - $show PROTOROOT=$PACKAGEROOT/proto - export PROTOROOT - INITPROTO=$PROTOROOT/src/cmd/INIT - note proto convert $PACKAGEROOT/src into $PROTOROOT/src - if test -d $PACKAGEROOT/src/cmd/nmake - then dirs="src/cmd/INIT src/lib/libast src/lib/libardir src/lib/libpp src/cmd/probe src/cmd/cpp src/cmd/nmake" - else dirs="src" + # check for prototyping cc + # NOTE: proto.c must be K&R compatible + + $CC -c $INITROOT/p.c >/dev/null 2>&1 + c=$? + rm -f p.* + test 0 != "$c" && { + checkaout proto || return + PROTOROOT=$PACKAGEROOT/proto + $show PROTOROOT=$PACKAGEROOT/proto + export PROTOROOT + INITPROTO=$PROTOROOT/src/cmd/INIT + note proto convert $PACKAGEROOT/src into $PROTOROOT/src + dirs="src" + ( + if test -f $PROTOROOT/UPDATE + then newer="-newer $PROTOROOT/UPDATE" + else newer="" fi - ( - if test -f $PROTOROOT/UPDATE - then newer="-newer $PROTOROOT/UPDATE" - else newer="" - fi - case $exec in - '') cd $PACKAGEROOT - find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto - ;; - *) $exec cd $PACKAGEROOT - $exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto" - ;; - esac - $exec touch $PROTOROOT/UPDATE - ) - VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH - $show VPATH=$VPATH - export VPATH - } + case $exec in + '') cd $PACKAGEROOT + find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto + ;; + *) $exec cd $PACKAGEROOT + $exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto" + ;; + esac + $exec touch $PROTOROOT/UPDATE + ) + VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH + $show VPATH=$VPATH + export VPATH } + for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return done @@ -5925,10 +5909,7 @@ cat $j $k *-*) a= for t in $target do case $t in - -[eiknFKNV]*|--*-symbols) - makeflags="$makeflags $t" - ;; - -*) nmakeflags="$nmakeflags $t" + -*) makeflags="$makeflags $t" ;; *) a="$a $t" ;; @@ -5938,76 +5919,6 @@ cat $j $k ;; esac - # generate nmake first if possible - - if executable ! $NMAKE && test -d $PACKAGEROOT/src/cmd/nmake - then if nonmake $MAKE - then note make $NMAKE with mamake - c=$CC - a=$assign - case $HOSTTYPE in - win32*|cygwin*) - CC="$CC -D_BLD_STATIC" - accept="libast" - case $assign in - *' CC='*) ;; - *) assign="$assign CC=\"\$CC\"" ;; - esac - ;; - *) accept=nmake - ;; - esac - eval capture mamake \$makeflags \$nmakeflags \$noexec install nmake $assign - assign=$a - CC=$c - case $make$noexec in - '') if executable ! $NMAKE - then echo "$command: $action: errors making $NMAKE" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - if test '' != "$PROTOROOT" - then VPATH=$INSTALLROOT:$PACKAGEROOT$USER_VPATH - $show VPATH=$VPATH - export VPATH - fi - note believe generated files for $accept - eval capture \$NMAKE \$makeflags \$nmakeflags \$noexec recurse believe \$nmakesep $accept $assign - $exec touch $INSTALLROOT/bin/.paths - note make the remaining targets with $NMAKE - else eval capture $MAKE \$makeflags \$nmakeflags \$noexec install nmake $assign - case $make$noexec in - '') if executable ! $NMAKE - then echo "$command: $action: errors making $NMAKE" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - fi - fi - - # generate ksh next if possible - - if nonmake $MAKE - then : no need to generate ksh next -- it could be the only package - elif test "$KEEP_SHELL" != 1 -a -d $PACKAGEROOT/src/cmd/ksh93 && executable ! $KSH - then eval capture nmake $nmakeflags \$makeflags \$noexec install ksh93 $assign - case $make$noexec in - '') if executable ! $KSH - then echo "$command: $action: errors making $KSH" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - fi - # mamprobe data should have been generated by this point case $exec in @@ -6082,7 +5993,7 @@ cat $j $k ;; esac - # run from separate copies since nmake and ksh may be rebuilt + # run from separate copies since ksh may be rebuilt case $EXECROOT in $INSTALLROOT) @@ -6100,7 +6011,7 @@ cat $j $k else rm=rm fi for i in \ - ksh nmake tee cp ln mv rm \ + ksh tee cp ln mv rm \ *ast*.dll *cmd*.dll *dll*.dll *shell*.dll do executable $i && { cmp -s $i $OK/$i 2>/dev/null || { @@ -6110,7 +6021,7 @@ cat $j $k $exec $execrate $mv $OK/$i $OK/$i.old &2 exit 1 ;; @@ -6124,9 +6035,6 @@ cat $j $k $exec $execrate $cp -p ../lib/make/makerules.mo $OK/lib/makerules.mo || $exec $execrate $cp ../lib/make/makerules.mo $OK/lib/makerules.mo fi - if executable $OK/nmake - then MAKE="$INSTALLROOT/bin/$OK/nmake LOCALRULESPATH=$INSTALLROOT/bin/$OK/lib" - fi if executable $OK/tee then TEE=$INSTALLROOT/bin/$OK/tee fi @@ -6145,19 +6053,13 @@ cat $j $k ;; esac - # fall back to mamake if nmake not found or too old + # build with mamake - if nonmake $MAKE - then note make with mamake - case $target in - '') target="install" ;; - esac - eval capture mamake \$makeflags \$noexec \$target $assign - else case $target in - '') target="install cc-" ;; - esac - eval capture \$MAKE \$makeflags \$nmakeflags \$noexec recurse \$target \$nmakesep \$package $assign - fi + note make with mamake + case $target in + '') target="install" ;; + esac + eval capture mamake \$makeflags \$noexec \$target $assign ;; read) case ${PWD:-`pwd`} in @@ -6811,32 +6713,8 @@ results)set '' $target esac ;; -test) requirements source $package - components $package - package=$_components_ - case $only in - 0) only= ;; - 1) only=--recurse=only ;; - esac - - # must have nmake - - if nonmake $MAKE - then echo $command: $action: must have $MAKE to test >&2 - exit 1 - fi - - # all work under $INSTALLROOT/src - - $make cd $INSTALLROOT/src - - # disable core dumps (could be disastrous over nfs) - - (ulimit -c 0) > /dev/null 2>&1 && ulimit -c 0 - - # do the tests - - eval capture \$MAKE \$makeflags \$noexec \$only recurse test \$target \$nmakesep \$package $assign +test) # pass control to ksh 93u+m test script + exec "$PACKAGEROOT/bin/shtests" ;; update) # download the latest release.version for selected packages @@ -7446,10 +7324,9 @@ write) set '' $target exit 1 ;; esac - if nonmake $MAKE - then echo "$command: must have $MAKE to generate archives" >&2 - exit 1 - fi + + echo "$command: not yet reimplemented after removing nmake" >&2 + exit 1 # all work under $PACKAGEBIN diff --git a/lib/package/CONVERT.mk b/lib/package/CONVERT.mk deleted file mode 100644 index 63a60ef5f..000000000 --- a/lib/package/CONVERT.mk +++ /dev/null @@ -1,260 +0,0 @@ -/* - * {automake|configure} => {nmake|iffe} conversion support - * - * The first command line target overrides the default original source - * directory name $(MAKEFILE:D). The hard work is in the makefile using - * these assertions, since it must (manually) provide the nmake makefiles - * and config equivalent iffe scripts. The conversion makefile is typically - * named lib/package/PACKAGE.cvt in an ast package $PACKAGEROOT directory, - * and the conversion is run from the $PACKAGEROOT directory, e.g.: - * - * nmake -I lib/package -f PACKAGE-VERSION/PACKAGE.cvt - * - * The conversion requires the ast nmake, pax and tw commands. - * - * After the conversion you will be liberated from ./configure, *.in, - * *.am, automake, autom4te, libtool, make depend, and makefile - * recursion ordering. You can build from $PACKAGEROOT using the ast - * package(1) (which sets up the { HOSTTYPE PATH VPATH } environment): - * - * package make - * - * or cd into any arch/$HOSTTYPE/src subdirectory and rebuild that portion - * of the hierarchy with the ast nmake(1) (after setting PATH and VPATH): - * - * nmake - * - * The conversion assertions are: - * - * package :CONVERT: file ... - * - * files in the original source directory are copied - * and converted into the ./src and ./lib subdirectories - * the default original source directory is ./original - * - * package package name - * file original source file that must exist - * - * :OMIT: pattern - * - * files matching pattern are not copied into the converted - * directory - * - * pattern ksh pattern of files to omit - * - * :COPY: from to [ file ... ] - * - * files in the from directory are copied to the to directory - * the action may contain :MOVE: exceptions to the copy - * - * from original directory subdirectory - * . names the original directory - * .. names the - * to converted subdirectory - * libNAME => src/lib/libNAME - * NAME => src/cmd/NAME - * file files or files in subdirectories to be copied; - * explicit files are copied to the to directory; - * if no files are specified then the from hierarchy - * is recursively copied to the converted directory - * - * :MOVE: to file ... - * - * :COPY: assertion exceptions placed in the assertion's action - * - * to files or subdirectory files are copied to this directory - * file file or files in subdirectories to be copied - * - * :FILE: to file <FD)" - original := $(D) - .ARGS : .CLEAR $(~.ARGS:O>1) - end - end - -.cvt.filter = -.cvt.package = - -.cvt.atom : .FUNCTION - local N V - V := $(%:O=1) - let .cvt.$(V) = .cvt.$(V) + 1 - return .cvt.$(V).$(.cvt.$(V)) - -.cvt.omit : .FUNCTION - return -s',^\(\(?K)?(*/)($(omit))?(/*))$,,$(showedit)' - -.cvt.to : .FUNCTION - if "$(%)" == "." - return src - end - if "$(%)" == "*/*" - return src/$(%) - end - if "$(%)" == "lib*" - return src/lib/$(%) - end - return src/cmd/$(%) - -":CONVERT:" : .MAKE .OPERATOR - local I - package := $(<) - I := $(hierarchy:C,$,/Makefile) - init : .cvt.verify $(I) - $(I) : .ACCEPT - test -d $(<:D) || $(MKDIR) -p $(<:D) - echo :MAKE: > $(<) - .cvt.verify : .MAKE .FORCE .REPEAT - local I - if I = "$(.cvt.package:T!=F)" - error 3 $(original): not a $(package) source directory: missing $(I) - end - .cvt.package := $(>:C,^,$$(original)/,) - -":COPY:" : .MAKE .OPERATOR - local F T I A - F := $(>:O=1) - T := $(.cvt.to $(>:O=2)) - A := $(.cvt.atom copy) - copy : $(A) - $(A) : .VIRTUAL - if F == "." - $(A) : $(T) - $(T) : - test -d $(<) || $(MKDIR) -p $(<) - for I $(>:O>2) - eval - $$(A) : $(I:D=$(T):B:S) - $(I:D=$(T):B:S) : $$(original)/$(I) - $$(CP) $$(CPFLAGS) $$(*) $$(<) - end - end - elif "$(F:T=FF)" || "$(F:N=*.(pax|t[bg]z))" - eval - $$(A) : $$(F) - test -d $(T) || $$(MKDIR) -p $(T) - cd $(T) - $$(PAX) $$(PAXFLAGS) -rf $$(*:P=A) -s ',^$(>:O=2)/*,,' $(.cvt.omit) $(.cvt.filter) - end - else - F := $$(original)/$(F) - if ! "$(@:V)" - eval - $$(A) : .FORCE - test -d $(T) || $$(MKDIR) -p $(T) - cd $(F:V) - $$(TW) $$(TWFLAGS) | $$(PAX) $$(PAXFLAGS) -rw $(.cvt.omit) $(.cvt.filter) $(T:P=A) - end - else - .cvt.move = - : $(@:V:@R) - eval - $$(A) : .FORCE - test -d $(T) || $$(MKDIR) -p $(T) - cd $(F:V) - $$(TW) $$(TWFLAGS) | $$(PAX) $$(PAXFLAGS) -rw $(.cvt.omit) $(.cvt.move) $(.cvt.filter) $(T:P=A) - end - end - end - -":EDIT:" : .MAKE .OPERATOR - local A D F - D := $(>:O=1) - if D == "-" - A := ^$(>:O=2)^$$(SED) -e $(@:Q:/'\n'/ -e /G) - .cvt.filter += --action=$(A:@Q) - else - D := $(.cvt.to $(D)) - F := $(>:O>1:C,^,$(D)/,) - edit : $(F) - eval - $$(F) : - $$(STDED) $$(STDEDFLAGS) $$(<) <<'$(here)' - $(@:V) - w - q - $(here) - end - end - -":FILE:" : .MAKE .OPERATOR - local ( D F ) $(>) - local A - A := $(.cvt.atom file) - $(A) := $(@:V) - D := $(.cvt.to $(D)) - file : $(D)/$(F) - eval - $$(D)/$$(F) : - test -d $$(<:D) || $$(MKDIR) -p $$(<:D) - cat > $$(<) <<'$(here)' - $$($(A):V) - $(here) - end - -":MOVE:" : .MAKE .OPERATOR - local T I - T := ../../../$(.cvt.to $(>:O=1)) - for I $(>:O>1) - if I == "*/" - .cvt.move += -s',^\(\(?K)$(I)),$(T)/,$(showedit)' - .cvt.move += -s',^\(\(?K)$(I:C%/$%%))$,,$(showedit)' - else - .cvt.move += -s',^\(\(?K)$(I))$,$(T)/$(I:B:S),$(showedit)' - end - end - -":OMIT:" : .MAKE .OPERATOR - local P - for P $(>) - omit := $(omit)|$(P) - end diff --git a/lib/package/package.mk b/lib/package/package.mk deleted file mode 100644 index 1a945d9fe..000000000 --- a/lib/package/package.mk +++ /dev/null @@ -1,1537 +0,0 @@ -/* - * source and binary package support - * - * @(#)package.mk (AT&T Research) 2012-02-14 - * - * usage: - * - * cd $INSTALLROOT/lib/package - * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type - * - * where: - * - * name package description file or component - * - * type source build source archive, generates - * $(PACKAGEDIR)/name.version.release.suffix - * binary build binary archive, generates - * $(PACKAGEDIR)/name.version.hosttype.release.suffix - * runtime build binary archive, generates - * $(PACKAGEDIR)/name-run.version.hosttype.release.suffix - * - * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views - * - * generated archive member files are $(PACKAGEROOT) relative - * - * main assertions: - * - * NAME [ name=value ] :PACKAGE: component ... - * :OMIT: component ... - * :LICENSE: license-class-pattern - * :CATEGORY: category-id ... - * :COVERS: package ... - * :REQUIRES: package ... - * :INDEX: index description line - * :DESCRIPTION: - * [ verbose description ] - * :DETAILS: style - * :README: - * readme lines - * :EXPORT: - * name=value - * target :INSTALL: [ source ] - * - * option variables, shown with default values - * - * format=tgz - * archive format - * - * version=YYYY-MM-DD - * package base version (overrides current date) - * - * release=YYYY-MM-DD - * package delta release (overrides current date) - * - * license=type.class - * :LICENSE: type.class pattern override - * - * notice=1 - * include the conspicuous empty notice file - * - * copyright=0 - * do not prepend source file copyright notice - * - * strip=0 - * don't strip non-lcl binary package members - * - * variants=pattern - * include variants matching pattern in binary packages - * - * incremental=[source:1 binary:0] - * if a base archive is generated then also generate an - * incremental delta archive from the previous base - * - * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when - * a target is specified - */ - -/* these are ast centric -- we'll parameterize another day */ - -org = ast -url = http://www.research.att.com/sw/download - -/* generic defaults */ - -base = -category = utils -checksum = md5 -closure = -copyright = 1 -delta = -format = tgz -incremental = -index = -init = INIT -license = -licenses = $(org) -mamfile = 1 -opt = -name = -notice = -release = -strip = 0 -style = tgz -suffix = tgz -type = -variants = !(cc-g) -vendor = -version = $("":T=R%Y-%m-%d) - -SUM = sum - -package.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------ - -package.readme = $(@.package.readme.) - -.package.readme. : - This is a package root directory $PACKAGEROOT. Source and binary - packages in this directory tree are controlled by the command - $() - bin/package - $() - Binary files may be in this directory or in the install root directory - $() - INSTALLROOT=$PACKAGEROOT/arch/`bin/package` - $() - For more information run - $() - bin/package help - $() - Many of the packaged commands self-document via the --man and --html - options; those that do have no separate man page. - $() - Each package is covered by one of the license files - $() - $(PACKAGELIB)/LICENSES/ - $() - where is the license type for the package. At the top - of each license file is a URL; the license covers all software that - refers to this URL. For details run - $() - bin/package license [] - $() - Any archives, distributions or packages made from source or - binaries covered by license(s) must contain the corresponding - license file(s)$(notice:?, this README file, and the empty file$$("\n")$$(package.notice)?.?) - -.package.licenses. : .FUNCTION - local I F L R T all save text - L := $(%) - while L == "--*" - I := $(L:O=1) - if I == "--all" - all = 1 - elif I == "--save" - save = 1 - elif I == "--text" - text = 1 - end - L := $(L:O>1) - end - if "$(L)" == "*-*" - L += $(L:/[^-]*-//) $(L:/-.*//) - end - L += $(licenses) - for I $(L:U) - if I == "gpl" - I = gnu - all = - end - if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)" - R += $(F) - if save || text - T := $(.FIND. lib/package .lic $(F):P=W,query=type) - R += $(T:D=$(PACKAGESRC)/LICENSES:B) - end - if save - R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F) - elif ! all - break - end - end - end - return $(R) - -/* - * glob(3) doesn't handle / in alternation -- should it? - */ - -.package.glob. : .FUNCTION - local A D I P S - for I $(%) - if I == "*/*" - D := $(I:C,/.*,,) - if ! "$(A:N=$(D))" - local S.$(D) - A += $(D) - end - S.$(D) += $(I:C,[^/]*/,,) - else - P := $(P)$(S)$(I) - end - S = | - end - if P == "*\|*" - P := ($(P)) - end - for I $(A) - P += $(I)/$(.package.glob. $(S.$(I))) - end - return $(P) - - -.MAKEINIT : .package.init - -.package.init : .MAKE .VIRTUAL .FORCE - local V - V := $(VROOT:T=F:P=L*) - if ! PACKAGEROOT - PACKAGEROOT := $(V:N!=*/arch/+([!/]):O=1) - end - if V == "$(PACKAGEROOT)" - V := - end - V += $(INSTALLROOT) $(PACKAGEROOT) - PACKAGEVIEW := $(V:H=RU) - INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%) - if license - license := $(license)|none.none - end - -PACKAGELIB = lib/package -PACKAGESRC = $(PACKAGEROOT)/$(PACKAGELIB) -PACKAGEBIN = $(INSTALLROOT)/$(PACKAGELIB) -PACKAGEDIR = $(PACKAGESRC)/$(style) -INSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%) - -package.omit = -|*/$(init) -package.glob.all = $(INSTALLROOT)/src/*/*/($(MAKEFILES:/:/|/G)) -package.all = $(package.glob.all:P=G:W=O=$(?$(name):A=.VIRTUAL):N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) -package.glob.pkg = $(.package.glob. $(~$(name):P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%) $(~$(name):P=U:N=$(name):?$$(INSTALLROOT)/src/$$(name)/($$(MAKEFILES:/:/|/G))??) -package.pkg = $(package.glob.pkg:P=G:D:N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) -package.closure = $(closure:?$$(package.all)?$$(package.pkg)?) - -package.init = $(.package.glob. $("$(init)$(name)":P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%:P=G:T=F:D::B) -package.ini = ignore mamprobe manmake package silent -package.src.pat = $(PACKAGESRC)/($(name).(ini|pkg)) -package.src = $(package.src.pat:P=G) $(.package.licenses. --save $(name)) -package.bin = $(PACKAGEBIN)/$(name).ini - -package.mam = --never --force --mam=static --corrupt=accept --clobber --compare --link='lib*.a*' CC=$(CC.DIALECT:N=C++:?CC?cc?) package.license.class=$(license:Q) $(=) 'dontcare test' install test - -op = current -stamp = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] -source = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(suffix) -binary = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) -runtime = $(PACKAGEDIR)/$(name)-run.$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) -old.new.source = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(suffix) -old.new.binary = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) -old.new.runtime = $(PACKAGEDIR)/$(name)-run.$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) - -source.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(suffix)":P=G:H=R) -binary.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H=R) -runtime.list = $("$(PACKAGEDIR)/$(name)-run.*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H>) - -source.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F) -binary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F) - -$(init) : .VIRTUAL $(init) - -package.requires = 0 - -":package:" : .MAKE .OPERATOR - local P I R V - P := $(<:O=1) - $(P) : $(>:V) - if ! package.requires - if ! name - name := $(P) - .PACKAGE. := $(P) - if name == "$(init)" - package.omit = - - package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk - else - $(P) : $(package.init) - end - for I $(<:O>1) - if I == "*=*" - eval - $(I) - end - else - version := $(I) - end - end - LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G) - export LICENSEFILEDEFAULT - end - if "$(>)" - for I $(>:V) - $(I) : .VIRTUAL - if I == "/*" - package.dir += $(I:V) - end - end - end - if "$(@)" - $(P).README := $(@) - else - $(P).README := This is the $(P) package. - end - end - -":AUXILIARY:" : .MAKE .OPERATOR - package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F) - -":CATEGORY:" : .MAKE .OPERATOR - if ! package.requires - category := $(>) - end - -.covers. : .FUNCTION - local I C D F K=0 L - for I $(%) - if ! "$(~covers:N=$(I:B))" - if F = "$(I:D:B:S=.pkg:T=F)" - if D = "$(F:T=I)" - covers : $(I:B) - for L $(D) - if L == ":COVERS:" - K = 1 - elif L == ":*:" - if K - break - end - elif K - : $(.covers. $(L)) - end - end - end - else - error $(--exec:?3?1?) $(I): unknown package $(I) - end - end - end - -":COVERS:" : .MAKE .OPERATOR - if ! package.requires - : $(.covers. $(>)) - end - -":DESCRIPTION:" : .MAKE .OPERATOR - if ! package.requires - $(name).README := $(@:V) - end - -":DETAILS:" : .MAKE .OPERATOR - if ! package.requires - details.$(>:O=1) := $(@:V) - end - -":EXPORT:" : .MAKE .OPERATOR - if ! package.requires - export.$(style) := $(@:/$$("\n")/ /G) - end - -":INDEX:" : .MAKE .OPERATOR - if ! package.requires - index := $(>) - end - -":INSTALL:" : .MAKE .OPERATOR - if ! package.requires - local T S F X - S := $(>) - T := $(<) - if "$(exe.$(style))" && "$(T)" == "bin/*([!./])" - T := $(T).exe - end - if ! "$(S)" - S := $(T) - elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])" - S := $(S).exe - end - install.$(style) := $(install.$(style):V)$("\n")install : $$(ROOT)/$(T)$("\n")$$(ROOT)/$(T) : $$(ARCH)/$(S)$("\n\t")cp $< $@ - if strip && "$(T:N=*.exe)" - install.$(style) := $(install.$(style):V)$("\n\t")strip $@ 2>/dev/null - end - X := $(PACKAGEROOT)/arch/$(CC.HOSTTYPE)/$(S) - if strip && "$(X:T=Y)" == "*/?(x-)(dll|exe)" - F := filter $(STRIP) $(STRIPFLAGS) $(X) - end - if "$(filter.$(style):V)" - filter.$(style) := $(filter.$(style):V)$$("\n") - end - filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T) - end - -":LICENSE:" : .MAKE .OPERATOR - if ! package.requires && ! license - license := $(>) - end - -":OMIT:" : .MAKE .OPERATOR - if ! package.requires - package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G) - end - -":POSTINSTALL:" : .MAKE .OPERATOR - if ! package.requires - postinstall.$(style) := $(@:V) - end - -":README:" : .MAKE .OPERATOR - if ! package.requires - readme.$(style) := $(@:V) - end - -.requires. : .FUNCTION - local I C D F K=0 L V T M=0 - for I $(%) - if ! "$(~requires:N=$(I:B))" - if F = "$(I:D:B:S=.pkg:T=F)" - if I == "$(init)" - package.omit = - - else - requires : $(I:B) - end - if V = "$(I:D:B=gen/$(I:B):S=.ver:T=F)" - req : $(I:B) - else - error 1 $(I): package should be written before $(P) - end - let package.requires = package.requires + 1 - include "$(F)" - let package.requires = package.requires - 1 - else - error 1 $(I): package not found - end - end - end - -":REQUIRES:" : .MAKE .OPERATOR - : $(.requires. $(>)) - -":TEST:" : .MAKE .OPERATOR - if ! package.requires - local T - T := $(>) - if "$(T)" == "bin/*([!./])" - if "$(exe.$(style))" - T := $(T).exe - end - T := $$(PWD)/$$(ARCH)/$(T) - end - test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@) - end - -base delta : .MAKE .VIRTUAL .FORCE - op := $(<) - -closure : .MAKE .VIRTUAL .FORCE - $(<) := 1 - -cyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE - style := $(<) - -source : .source.init .source.gen .source.$$(style) - -.source.init : .MAKE - local A B D P V I - type := source - if ! "$(incremental)" - incremental = 1 - end - if "$(source.$(name))" - suffix = c - end - : $(.init.$(style)) - : $(details.$(style):V:R) : - A := $(source.list) - B := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - deltaversion := $(B:B:/$(name).//) - let deltasince = $(deltaversion:/.*-//) + 1 - deltasince := $(deltaversion:/[^-]*$/$(deltasince:F=%02d)/) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - source := $(B:D:B:S=.$(release).$(suffix)) - version := $(source:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)\.\([^.]*\).*/\1/) - if V == "$(stamp)" && V != "$(version)" - old.version := $(V) - old.source := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - source := $(B) - end - if B == "$(source)" - if "$(B:D:B:B)" == "$(D:D:B:B)" && "$(B:B::S)" != "$(D:B::S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/) - end - PACKAGEGEN := $(PACKAGESRC)/gen - -.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html - -BINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1) - -$$(PACKAGEDIR) $$(PACKAGEGEN) : .IGNORE - [[ -d $(<) ]] || mkdir $(<) - -$$(PACKAGEGEN)/SOURCE.html : $(BINPACKAGE) - $(*) html source > $(<) - -$$(PACKAGEGEN)/BINARY.html : $(BINPACKAGE) - $(*) html binary > $(<) - -$$(PACKAGEGEN)/DETAILS.html : $(BINPACKAGE) - $(*) html intro > $(<) - -.source.exp .source.pkg .source.rpm : .MAKE - error 3 $(style): source package style not supported yet - -exe.cyg = .exe -vendor.cyg = gnu - -.name.cyg : .FUNCTION - local N - N := $(%) - if N == "*-*" - vendor := $(N:/-.*//) - if vendor == "$(vendor.cyg)" - vendor := - N := $(N:/[^-]*-//) - end - N := $(N:/-//G) - end - return $(N) - -.init.cyg : .FUNCTION - local N O - closure = 1 - init = . - strip = 1 - suffix = tar.bz2 - format = tbz - vendor := $(licenses:N!=$(vendor.cyg):O=1) - package.ini := $(package.ini) - package.src.pat := $(package.src.pat) - package.src := $(package.src) - package.bin := $(package.bin) - .source.gen : .CLEAR $(*.source.gen:V:N!=*.html) - name.original := $(name) - name := $(.name.cyg $(name)) - if name != "$(name.original)" - $(name) : $(~$(name.original)) - O := $(~covers) - covers : .CLEAR - for N $(O) - covers : $(.name.cyg $(N)) - end - end - stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9] - version.original := $(version) - version := $(version:/-//G)-1 - if opt - opt := $(opt)/$(vendor)/ - else - opt := $(name)-$(version)/ - end - if type == "source" - version := $(version)-src - source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) - else - binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) - end - -.source.cyg : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - cat > $tmp/configure <<'!' - echo "you didn't have to do that" - ! - chmod +x $tmp/configure - echo ";;;$tmp/configure;configure" - cat > $tmp/Makefile0 <<'!' - HOSTTYPE := $$(shell bin/package) - ROOT = ../.. - ARCH = arch/$$(HOSTTYPE) - all : - PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style)) - install : all - $(install.$(style):V) - $(test.$(style):V) - ! - echo ";;;$tmp/Makefile0;Makefile" - cat > $tmp/CYGWIN-README <<'!' - $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run: - $() - make - $() - $(test.$(style):@?To test the binaries after building/installing run:$$("\n\n\t")make test$$("\n\n")??)To build and/or install the binaries run: - $() - make install - $() - The bin/package command provides a command line interface for all package - operations. The $(opt:/.$//) source and binary packages were generated by: - $() - package write cyg base source version=$(version.original) $(name.original) - package write cyg base binary version=$(version.original) $(name.original) - $() - using the $(org)-base package. To download and install the latest - $(org)-base source package in /opt/$(org) run: - $() - PATH=/opt/$(org)/bin:$PATH - cd /opt/$(org) - package authorize "NAME" password "PASSWORD" setup flat source $("\\") - $(url) $("\\") - $(org)-base - package make - $() - and export /opt/$(org)/bin in PATH to use. The NAME and PASSWORD signify your - agreement to the software license(s). All users get the same NAME and PASSWORD. - See $(url) for details. If multiple architectures may be built under - /opt/$(org) then drop "flat" and export /opt/$(org)/arch/`package`/bin in PATH - to use. To update previously downloaded packages from the same url simply run: - $() - cd /opt/$(org) - package setup - package make - $() - To download and install the latest $(org)-base binary package in - /opt/$(org) change "source" to "binary" and omit "package make". - ! - echo ";;;$tmp/CYGWIN-README;CYGWIN-PATCHES/README" - cat > $(source:/-src.$(suffix)//).setup.hint <<'!' - category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) - requires: cygwin - sdesc: "$(index)" - ldesc: "$($(name.original).README)" - ! - echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint" - echo ";;;$(BINPACKAGE);bin/package" - cat > $tmp/Makefile <<'!' - :MAKE: - ! - echo ";;;$tmp/Makefile;src/Makefile" - echo ";;;$tmp/Makefile;src/cmd/Makefile" - echo ";;;$tmp/Makefile;src/lib/Makefile" - if [[ '$(mamfile)' == 1 ]] - then cat > $tmp/Mamfile1 <<'!' - info mam static - note source level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/Mamfile1;src/Mamfile" - cat > $tmp/Mamfile2 <<'!' - info mam static - note component level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" - echo ";;;$tmp/Mamfile2;src/lib/Mamfile" - fi - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - echo ";;;$(PACKAGEGEN)/$(name.original).req" - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then if [[ '$(mamfile)' == 1 ]] - then (( o=m )) - s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) - if [[ $s ]] - then for j in $s - do if [[ -d $j ]] - then cd $j - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then (( m++ )) - $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/$j/Mamfile" - fi - cd $(INSTALLROOT)/$i - fi - done - if (( o != m )) - then (( m++ )) - cat > $tmp/$m.mam <<'!' - info mam static - note subcomponent level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - else (( m++ )) - $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - fi - $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) - fi - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - { - : > $tmp/HEAD - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - --format=$(format) \ - --local \ - -wvf $(source) $(base) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) \ - $(vendor:?-s",^[^/],$(opt)&,"??) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - rm -rf $tmp - fi - -.source.lcl : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) $(=) .FILES.+=Mamfile recurse list.package.local - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - sort -t';' -k5,5 -u | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - -wvf $(source) $(base) \ - $(op:N=delta:?--format=gzip??) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) - rm -rf $tmp - fi - -.source.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - if [[ '$(init)' == '$(name)' ]] - then cat > $tmp/Makefile <<'!' - :MAKE: - ! - $(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile - echo ";;;$tmp/Makefile;src/Makefile" - cp $tmp/Makefile $tmp/Makefile1 - $(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1 - echo ";;;$tmp/Makefile1;src/cmd/Makefile" - cp $tmp/Makefile $tmp/Makefile2 - $(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2 - echo ";;;$tmp/Makefile2;src/lib/Makefile" - if [[ '$(mamfile)' == 1 ]] - then cat > $tmp/Mamfile1 <<'!' - info mam static - note source level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1 - echo ";;;$tmp/Mamfile1;src/Mamfile" - cat > $tmp/Mamfile2 <<'!' - info mam static - note component level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2 - echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" - cp $tmp/Mamfile2 $tmp/Mamfile3 - $(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3 - echo ";;;$tmp/Mamfile3;src/lib/Mamfile" - fi - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lib pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] - then echo $(name) $(version) $(release|version) 1 > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).ver || cp $tmp/t $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).req || cp $tmp/t $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).inx || cp $tmp/t $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - } | fmt - package help source - package release $(name) - } > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).README || cp $tmp/t $(PACKAGEGEN)/$(name).README - echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" - { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package"' - echo '.xx meta.keywords="software, package"' - echo '.MT 4' - echo '.TL' - echo '$(name) package' - echo '.H 1 "$(name) package"' - echo '$($(name).README)' - set -- $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F:D::B) - hot= - for i - do hot="$hot -e s/\\(\\<$i\\>\\)/\\\\h'0*1'\\1\\\\h'0'/" - done - set -- $(package.closure:B) - if (( $# )) - then echo 'Components in this package:' - echo '.P' - echo '.TS' - echo 'center expand;' - echo 'l l l l l l.' - if [[ $hot ]] - then hot="sed $hot" - else hot=cat - fi - for i - do echo $i - done | - pr -6 -t -s' ' | - $hot - echo '.TE' - fi - echo '.P' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - set -- $(.package.licenses. --all $(name)) - case $# in - 0) ;; - *) case $# in - 1) echo 'The software is covered by this license:' ;; - *) echo 'The software is covered by these licenses:' ;; - esac - echo .BL - for j - do i=$( $(PROTO) -l $j -p -h -o type=usage /dev/null | sed -e 's,.*\[-license?\([^]]*\).*,\1,' ) - echo .LI - echo ".xx link=\"$i\"" - done - echo .LE - echo 'Individual components may be covered by separate licenses;' - echo 'refer to the component source and/or binaries for more information.' - echo .P - ;; - esac - echo 'A recent' - echo '.xx link="release change log"' - echo 'is also included.' - cat $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F) < /dev/null - echo '.H 1 "release change log"' - echo '.xx index' - echo '.nf' - package release $(name) | - sed -e 's/:::::::: \(.*\) ::::::::/.fi\$("\n").H 1 "\1 changes"\$("\n").nf/' - echo '.fi' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t - $(STDED) $(STDEDFLAGS) $tmp/t <<'!' - /^$/,/^$/s/ changes$/,/^$/m// - w - q - ! - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).html || cp $tmp/t $(PACKAGEGEN)/$(name).html - echo ";;;$(PACKAGEGEN)/$(name).html;$(PACKAGELIB)/$(name).html" - if [[ '$(deltasince)' ]] - then { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package $(version) delta $(release)"' - echo '.xx meta.keywords="software, package, delta"' - echo '.MT 4' - echo '.TL' - echo '$(name) package $(deltaversion) delta $(release)' - echo '.H 1 "$(name) package $(deltaversion) delta $(release) changes"' - echo '.nf' - package release $(deltasince) $(name) | - sed -e 's/:::::::: \(.*\) ::::::::/.H 2 \1/' - echo '.fi' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html - echo ";;;$(PACKAGEGEN)/$(name).$(release).html;$(PACKAGELIB)/$(name).$(release).html" - fi - fi - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then if [[ '$(mamfile)' == 1 ]] - then (( o=m )) - s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) - if [[ $s ]] - then for j in $s - do if [[ -d $j ]] - then cd $j - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then (( m++ )) - $(MAKE) $(package.mam) > $tmp/$m.mam - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/$j/Mamfile" - fi - cd $(INSTALLROOT)/$i - fi - done - if (( o != m )) - then (( m++ )) - cat > $tmp/$m.mam <<'!' - info mam static - note subcomponent level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - else (( m++ )) - $(MAKE) $(package.mam) > $tmp/$m.mam - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - fi - $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?) - fi - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - $(CMP) $(CMPFLAGS) $tmp/README $(PACKAGEROOT)/README && touch -r $(PACKAGEROOT)/README $tmp/README - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - -wvf $(source) $(base) \ - $(op:N=delta:?--format=gzip??) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - echo local > $(source:D:B=$(name):S=.tim) - if [[ '$(incremental)' == 1 && '$(old.source)' ]] - then $(PAX) -rf $(source) -wvf $(old.new.source) -z $(old.source) - $(SUM) -x $(checksum) < $(old.new.source) > $(old.new.source:D:B:S=.$(checksum)) - fi - rm -rf $tmp - else if [[ '$(old.source)' ]] && $(CMP) $(CMPFLAGS) $(source.$(name)) $(source) - then : $(name) is up to date - else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - : > $(PACKAGEGEN)/$(name).req - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package"' - echo '.xx meta.keywords="software, package"' - echo '.MT 4' - echo '.TL' - echo '$(name) package' - echo '.H 1' - echo '$($(name).README)' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $(PACKAGEGEN)/$(name).html - if [[ '$(source.$(name))' ]] - then { - echo '$($(name).README)' - package help source - } > $(PACKAGEGEN)/$(name).README - cp $(source.$(name)) $(source) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - fi - echo local > $(source:D:B=$(name):S=.tim) - fi - fi - -binary : .binary.init .binary.gen .binary.$$(style) - -.binary.init : .MAKE - local A B D I P V - type := binary - if ! "$(incremental)" - incremental = 0 - end - if ! "$(~$(name))" - if name == "ratz" - suffix = exe - else - suffix = gz - end - end - : $(.init.$(style)) : - : $(details.$(style):V:R) : - A := $(binary.list) - B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - binary := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) - version := $(binary:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)\.\([^.]*\).*/\1/) - if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" - old.version := $(V) - old.binary := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - binary := $(B) - end - if B == "$(binary)" - if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(binary:B:/$(name).//:/\..*//) - end - PACKAGEGEN := $(PACKAGEBIN)/gen - -.binary.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) - -.binary.exp .binary.pkg .binary.rpm : .MAKE - error 3 $(style): binary package style not supported yet - -.binary.cyg : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - { - echo '$($(name.original).README)' | fmt - cat <<'!' - $(readme.$(style):@?$$("\n")$$(readme.$$(style))??) - ! - } > $tmp/README1 - echo ";;;$tmp/README1;usr/share/doc/Cygwin/$(opt:/.$//).README" - { - echo '$($(name.original).README)' | fmt - cat <<'!' - $() - The remainder of this file is the README from the source package - that was used to generate this binary package. It describes - the source build hierarchy, not the current directory. - $() - $(package.readme) - ! - } > $tmp/README2 - echo ";;;$tmp/README2;usr/share/doc/$(opt)README" - package release $(name.original) > $tmp/RELEASE - echo ";;;$tmp/RELEASE;usr/share/doc/$(opt)RELEASE" - cat > $(binary:/.$(suffix)//).setup.hint <<'!' - category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) - requires: cygwin - sdesc: "$(index)" - ldesc: "$($(name.original).README)" - ! - set -- $(.package.licenses. --text $(name.original):N!=*.lic) - for i - do echo ";;;${i};usr/share/doc/$(opt)LICENSE-${i##*/}" - done - cat <<'!' - $(filter.$(style)) - ! - if [[ '$(postinstall.$(style):V:O=1:?1??)' ]] - then cat >$tmp/postinstall <<'!' - $("#")!/bin/sh - $(postinstall.$(style)) - ! - echo ";;;$tmp/postinstall;etc/postinstall/$(name).sh" - fi - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - --format=$(format) \ - --local \ - -wvf $(binary) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - rm -rf $tmp - fi - -.binary.lcl : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - $(package.bin:U:T=F:/.*/echo ";;;&"$("\n")/) - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name).sum \ - --install=$(PACKAGEGEN)/$(name).ins \ - -wvf $(binary) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - rm -rf $tmp - fi - -.binary.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - if [[ '$(init)' == '$(name)' ]] - then for i in lib32 lib64 - do if [[ -d $(INSTALLROOT)/$i ]] - then echo ";physical;;$(INSTALLROOT)/$i" - fi - done - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] - then echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lic pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - } | fmt - package help binary - package release $(name) - } > $(PACKAGEGEN)/$(name).README - echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" - fi - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name).sum \ - --install=$(PACKAGEGEN)/$(name).ins \ - -wvf $(binary) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - if [[ '$(incremental)' == 1 && '$(old.binary)' ]] - then $(PAX) -rf $(binary) -wvf $(old.new.binary) -z $(old.binary) - echo $(old.new.binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(old.new.binary) > $(old.new.binary:D:B:S=.$(checksum)) - echo $(old.new.binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - rm -rf $tmp - else if [[ '$(binary.$(name))' ]] - then exe=$(binary.$(name)) - else exe=$(INSTALLROOT)/bin/$(name) - fi - if [[ '$(old.binary)' ]] && $(CMP) $(CMPFLAGS) $exe $(binary) - then : $(name) is up to date - else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - : > $(PACKAGEGEN)/$(name).req - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - echo '$($(name).README)' - package help binary - } > $(PACKAGEGEN)/$(name).README - case "$(binary)" in - *.gz) gzip < $exe > $(binary) ;; - *) cp $exe $(binary) ;; - esac - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - fi - echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - -runtime : .runtime.init .runtime.gen .runtime.$$(style) - -.runtime.init : .MAKE - local A B D I P V - type := runtime - if ! "$(incremental)" - incremental = 0 - end - if ! "$(~$(name))" - if name == "ratz" - suffix = exe - else - suffix = gz - end - end - : $(.init.$(style)) : - : $(details.$(style):V:R) : - A := $(runtime.list) - B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - runtime := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) - version := $(runtime:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)-run\.\([^.]*\).*/\1/) - if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" - old.version := $(V) - old.runtime := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - runtime := $(B) - end - if B == "$(runtime)" - if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(runtime:B:/$(name)-run.//:/\..*//) - end - PACKAGEGEN := $(PACKAGESRC)/gen - -.runtime.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) - -.runtime.cyg .runtime.exp .runtime.lcl .runtime.pkg .runtime.rpm : .MAKE - error 3 $(style): runtime package style not supported yet - -.runtime.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - if [[ '$(init)' == '$(name)' ]] - then for i in lib32 lib64 - do if [[ -d $(INSTALLROOT)/$i ]] - then echo ";physical;;$(INSTALLROOT)/$i" - fi - done - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lic pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo - echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo - echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - echo - echo "To install this $(type) package read the tarball into a directory" - echo "suitable for containing bin and lib subdirectories, and run the" - echo "$(PACKAGELIB)/gen/$(name)-run.ins script to fix up permissions." - echo - echo "To use the package export the bin directory in PATH. The commands and" - echo "libraries use \$PATH to locate dynamic libraries and related data files." - echo - } | fmt - } > $(PACKAGEGEN)/$(name)-run.README - echo ";;;$(PACKAGEGEN)/$(name)-run.README;$(PACKAGELIB)/$(name)-run.README" - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name)-run.sum \ - --install=$(PACKAGEGEN)/$(name)-run.ins \ - -wvf $(runtime) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - echo $(runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(runtime) > $(runtime:D:B:S=.$(checksum)) - echo $(runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo local > $(runtime:D:B=$(name)-run:S=.$(CC.HOSTTYPE).tim) - if [[ '$(incremental)' == 1 && '$(old.runtime)' ]] - then $(PAX) -rf $(runtime) -wvf $(old.new.runtime) -z $(old.runtime) - echo $(old.new.runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(old.new.runtime) > $(old.new.runtime:D:B:S=.$(checksum)) - echo $(old.new.runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - rm -rf $tmp - fi - -list.installed list.manifest : - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - ignore $(MAKE) --noexec $(-) $(=) $(<) - done diff --git a/src/cmd/INIT/CONVERT.mk b/src/cmd/INIT/CONVERT.mk deleted file mode 100644 index 63a60ef5f..000000000 --- a/src/cmd/INIT/CONVERT.mk +++ /dev/null @@ -1,260 +0,0 @@ -/* - * {automake|configure} => {nmake|iffe} conversion support - * - * The first command line target overrides the default original source - * directory name $(MAKEFILE:D). The hard work is in the makefile using - * these assertions, since it must (manually) provide the nmake makefiles - * and config equivalent iffe scripts. The conversion makefile is typically - * named lib/package/PACKAGE.cvt in an ast package $PACKAGEROOT directory, - * and the conversion is run from the $PACKAGEROOT directory, e.g.: - * - * nmake -I lib/package -f PACKAGE-VERSION/PACKAGE.cvt - * - * The conversion requires the ast nmake, pax and tw commands. - * - * After the conversion you will be liberated from ./configure, *.in, - * *.am, automake, autom4te, libtool, make depend, and makefile - * recursion ordering. You can build from $PACKAGEROOT using the ast - * package(1) (which sets up the { HOSTTYPE PATH VPATH } environment): - * - * package make - * - * or cd into any arch/$HOSTTYPE/src subdirectory and rebuild that portion - * of the hierarchy with the ast nmake(1) (after setting PATH and VPATH): - * - * nmake - * - * The conversion assertions are: - * - * package :CONVERT: file ... - * - * files in the original source directory are copied - * and converted into the ./src and ./lib subdirectories - * the default original source directory is ./original - * - * package package name - * file original source file that must exist - * - * :OMIT: pattern - * - * files matching pattern are not copied into the converted - * directory - * - * pattern ksh pattern of files to omit - * - * :COPY: from to [ file ... ] - * - * files in the from directory are copied to the to directory - * the action may contain :MOVE: exceptions to the copy - * - * from original directory subdirectory - * . names the original directory - * .. names the - * to converted subdirectory - * libNAME => src/lib/libNAME - * NAME => src/cmd/NAME - * file files or files in subdirectories to be copied; - * explicit files are copied to the to directory; - * if no files are specified then the from hierarchy - * is recursively copied to the converted directory - * - * :MOVE: to file ... - * - * :COPY: assertion exceptions placed in the assertion's action - * - * to files or subdirectory files are copied to this directory - * file file or files in subdirectories to be copied - * - * :FILE: to file <FD)" - original := $(D) - .ARGS : .CLEAR $(~.ARGS:O>1) - end - end - -.cvt.filter = -.cvt.package = - -.cvt.atom : .FUNCTION - local N V - V := $(%:O=1) - let .cvt.$(V) = .cvt.$(V) + 1 - return .cvt.$(V).$(.cvt.$(V)) - -.cvt.omit : .FUNCTION - return -s',^\(\(?K)?(*/)($(omit))?(/*))$,,$(showedit)' - -.cvt.to : .FUNCTION - if "$(%)" == "." - return src - end - if "$(%)" == "*/*" - return src/$(%) - end - if "$(%)" == "lib*" - return src/lib/$(%) - end - return src/cmd/$(%) - -":CONVERT:" : .MAKE .OPERATOR - local I - package := $(<) - I := $(hierarchy:C,$,/Makefile) - init : .cvt.verify $(I) - $(I) : .ACCEPT - test -d $(<:D) || $(MKDIR) -p $(<:D) - echo :MAKE: > $(<) - .cvt.verify : .MAKE .FORCE .REPEAT - local I - if I = "$(.cvt.package:T!=F)" - error 3 $(original): not a $(package) source directory: missing $(I) - end - .cvt.package := $(>:C,^,$$(original)/,) - -":COPY:" : .MAKE .OPERATOR - local F T I A - F := $(>:O=1) - T := $(.cvt.to $(>:O=2)) - A := $(.cvt.atom copy) - copy : $(A) - $(A) : .VIRTUAL - if F == "." - $(A) : $(T) - $(T) : - test -d $(<) || $(MKDIR) -p $(<) - for I $(>:O>2) - eval - $$(A) : $(I:D=$(T):B:S) - $(I:D=$(T):B:S) : $$(original)/$(I) - $$(CP) $$(CPFLAGS) $$(*) $$(<) - end - end - elif "$(F:T=FF)" || "$(F:N=*.(pax|t[bg]z))" - eval - $$(A) : $$(F) - test -d $(T) || $$(MKDIR) -p $(T) - cd $(T) - $$(PAX) $$(PAXFLAGS) -rf $$(*:P=A) -s ',^$(>:O=2)/*,,' $(.cvt.omit) $(.cvt.filter) - end - else - F := $$(original)/$(F) - if ! "$(@:V)" - eval - $$(A) : .FORCE - test -d $(T) || $$(MKDIR) -p $(T) - cd $(F:V) - $$(TW) $$(TWFLAGS) | $$(PAX) $$(PAXFLAGS) -rw $(.cvt.omit) $(.cvt.filter) $(T:P=A) - end - else - .cvt.move = - : $(@:V:@R) - eval - $$(A) : .FORCE - test -d $(T) || $$(MKDIR) -p $(T) - cd $(F:V) - $$(TW) $$(TWFLAGS) | $$(PAX) $$(PAXFLAGS) -rw $(.cvt.omit) $(.cvt.move) $(.cvt.filter) $(T:P=A) - end - end - end - -":EDIT:" : .MAKE .OPERATOR - local A D F - D := $(>:O=1) - if D == "-" - A := ^$(>:O=2)^$$(SED) -e $(@:Q:/'\n'/ -e /G) - .cvt.filter += --action=$(A:@Q) - else - D := $(.cvt.to $(D)) - F := $(>:O>1:C,^,$(D)/,) - edit : $(F) - eval - $$(F) : - $$(STDED) $$(STDEDFLAGS) $$(<) <<'$(here)' - $(@:V) - w - q - $(here) - end - end - -":FILE:" : .MAKE .OPERATOR - local ( D F ) $(>) - local A - A := $(.cvt.atom file) - $(A) := $(@:V) - D := $(.cvt.to $(D)) - file : $(D)/$(F) - eval - $$(D)/$$(F) : - test -d $$(<:D) || $$(MKDIR) -p $$(<:D) - cat > $$(<) <<'$(here)' - $$($(A):V) - $(here) - end - -":MOVE:" : .MAKE .OPERATOR - local T I - T := ../../../$(.cvt.to $(>:O=1)) - for I $(>:O>1) - if I == "*/" - .cvt.move += -s',^\(\(?K)$(I)),$(T)/,$(showedit)' - .cvt.move += -s',^\(\(?K)$(I:C%/$%%))$,,$(showedit)' - else - .cvt.move += -s',^\(\(?K)$(I))$,$(T)/$(I:B:S),$(showedit)' - end - end - -":OMIT:" : .MAKE .OPERATOR - local P - for P $(>) - omit := $(omit)|$(P) - end diff --git a/src/cmd/INIT/MAPLIB.mk b/src/cmd/INIT/MAPLIB.mk deleted file mode 100644 index 55d653416..000000000 --- a/src/cmd/INIT/MAPLIB.mk +++ /dev/null @@ -1,45 +0,0 @@ -/* - * normalize local -l* library conventions - * - * L [ [ G11 ... G1n ] ... [ Gg1 ... Ggn ] ] :MAPLIB: T1.c ... Tn.c - * - * if Giji not specified then G11 == L - * the first Ti.c that compiles/links with group -lGi1 ... -lGin - * but does not compile/link with no libraries maps - * -lL to require -lGi1 ... -lGin - * otherwise -lL is not required and maps to "no library required" - */ - -":MAPLIB:" : .MAKE .OPERATOR - local L P - L := $(<:B:O=1) - if ! ( P = "$(<:B:O>1)" ) - P := $(L) - end - $(LIBDIR)/lib/$(L) :INSTALL: $(L).req - eval - $(L).req : (CC) $$(>) - set - - r='-' - for i in $$(*) - do if $$(CC) -c $i > /dev/null - then g= - for p in $(P) - - do case $p in - -) if $$(CC) -o $$(<:B:S=.exe) $i $g > /dev/null 2>&1 - then $$(CC) -o $$(<:B:S=.exe) $i > /dev/null 2>&1 || { - r="$g" - break 2 - } - fi - g= - ;; - *) g="$g -l$p" - ;; - esac - done - fi - done 2>/dev/null - echo " $r" > $$(<) - rm -f $$(<:B:S=.exe) $$(*:B:S=$$(CC.SUFFIX.OBJECT)) - end diff --git a/src/cmd/INIT/MSGFUN.mk b/src/cmd/INIT/MSGFUN.mk deleted file mode 100644 index 0888d0049..000000000 --- a/src/cmd/INIT/MSGFUN.mk +++ /dev/null @@ -1,2 +0,0 @@ -/* stub for pre-2000-05-01 nmake */ -":MSGFUN:" : .MAKE .OPERATOR diff --git a/src/cmd/INIT/MSGKEY.mk b/src/cmd/INIT/MSGKEY.mk deleted file mode 100644 index db1855964..000000000 --- a/src/cmd/INIT/MSGKEY.mk +++ /dev/null @@ -1,2 +0,0 @@ -/* stub for pre-2000-05-01 nmake */ -":MSGKEY:" : .MAKE .OPERATOR diff --git a/src/cmd/INIT/Mamfile b/src/cmd/INIT/Mamfile index cc37fd8be..a44268cc3 100644 --- a/src/cmd/INIT/Mamfile +++ b/src/cmd/INIT/Mamfile @@ -726,57 +726,6 @@ make install exec - then mkdir -p ${PACKAGEROOT}/lib/package exec - fi done ${PACKAGEROOT}/lib/package generated - make ${PACKAGEROOT}/lib/package/package.mk - prev ${PACKAGEROOT}/lib/package - make package.mk - done package.mk - exec - test '' = 'package.mk' || ${STDCMP} 2>/dev/null -s package.mk ${PACKAGEROOT}/lib/package/package.mk || { ${STDMV} ${PACKAGEROOT}/lib/package/package.mk ${PACKAGEROOT}/lib/package/package.mk.old 2>/dev/null || true; ${STDCP} package.mk ${PACKAGEROOT}/lib/package/package.mk ;} - done ${PACKAGEROOT}/lib/package/package.mk generated - make ${PACKAGEROOT}/lib/package/CONVERT.mk - make CONVERT.mk - done CONVERT.mk - exec - test '' = 'CONVERT.mk' || ${STDCMP} 2>/dev/null -s CONVERT.mk ${PACKAGEROOT}/lib/package/CONVERT.mk || { ${STDMV} ${PACKAGEROOT}/lib/package/CONVERT.mk ${PACKAGEROOT}/lib/package/CONVERT.mk.old 2>/dev/null || true; ${STDCP} CONVERT.mk ${PACKAGEROOT}/lib/package/CONVERT.mk ;} - done ${PACKAGEROOT}/lib/package/CONVERT.mk generated - make ${INSTALLROOT}/lib/make - exec - if test ! -d ${INSTALLROOT}/lib/make - exec - then mkdir -p ${INSTALLROOT}/lib/make - exec - fi - done ${INSTALLROOT}/lib/make generated - make ${INSTALLROOT}/lib/make/package.mk - prev ${INSTALLROOT}/lib/make - prev package.mk - exec - test '' = 'package.mk' || ${STDCMP} 2>/dev/null -s package.mk ${INSTALLROOT}/lib/make/package.mk || { ${STDMV} ${INSTALLROOT}/lib/make/package.mk ${INSTALLROOT}/lib/make/package.mk.old 2>/dev/null || true; ${STDCP} package.mk ${INSTALLROOT}/lib/make/package.mk ;} - done ${INSTALLROOT}/lib/make/package.mk generated - make ${INSTALLROOT}/lib/make/PROBE.mk - make PROBE.mk - done PROBE.mk - exec - test '' = 'PROBE.mk' || ${STDCMP} 2>/dev/null -s PROBE.mk ${INSTALLROOT}/lib/make/PROBE.mk || { ${STDMV} ${INSTALLROOT}/lib/make/PROBE.mk ${INSTALLROOT}/lib/make/PROBE.mk.old 2>/dev/null || true; ${STDCP} PROBE.mk ${INSTALLROOT}/lib/make/PROBE.mk ;} - done ${INSTALLROOT}/lib/make/PROBE.mk generated - make ${INSTALLROOT}/lib/make/TEST.mk - make TEST.mk - done TEST.mk - exec - test '' = 'TEST.mk' || ${STDCMP} 2>/dev/null -s TEST.mk ${INSTALLROOT}/lib/make/TEST.mk || { ${STDMV} ${INSTALLROOT}/lib/make/TEST.mk ${INSTALLROOT}/lib/make/TEST.mk.old 2>/dev/null || true; ${STDCP} TEST.mk ${INSTALLROOT}/lib/make/TEST.mk ;} - done ${INSTALLROOT}/lib/make/TEST.mk generated - make ${INSTALLROOT}/lib/make/WWW.mk - make WWW.mk - done WWW.mk - exec - test '' = 'WWW.mk' || ${STDCMP} 2>/dev/null -s WWW.mk ${INSTALLROOT}/lib/make/WWW.mk || { ${STDMV} ${INSTALLROOT}/lib/make/WWW.mk ${INSTALLROOT}/lib/make/WWW.mk.old 2>/dev/null || true; ${STDCP} WWW.mk ${INSTALLROOT}/lib/make/WWW.mk ;} - done ${INSTALLROOT}/lib/make/WWW.mk generated - make ${INSTALLROOT}/lib/make/MSGFUN.mk - make MSGFUN.mk - done MSGFUN.mk - exec - test '' = 'MSGFUN.mk' || ${STDCMP} 2>/dev/null -s MSGFUN.mk ${INSTALLROOT}/lib/make/MSGFUN.mk || { ${STDMV} ${INSTALLROOT}/lib/make/MSGFUN.mk ${INSTALLROOT}/lib/make/MSGFUN.mk.old 2>/dev/null || true; ${STDCP} MSGFUN.mk ${INSTALLROOT}/lib/make/MSGFUN.mk ;} - done ${INSTALLROOT}/lib/make/MSGFUN.mk generated - make ${INSTALLROOT}/lib/make/MSGKEY.mk - make MSGKEY.mk - done MSGKEY.mk - exec - test '' = 'MSGKEY.mk' || ${STDCMP} 2>/dev/null -s MSGKEY.mk ${INSTALLROOT}/lib/make/MSGKEY.mk || { ${STDMV} ${INSTALLROOT}/lib/make/MSGKEY.mk ${INSTALLROOT}/lib/make/MSGKEY.mk.old 2>/dev/null || true; ${STDCP} MSGKEY.mk ${INSTALLROOT}/lib/make/MSGKEY.mk ;} - done ${INSTALLROOT}/lib/make/MSGKEY.mk generated - make ${INSTALLROOT}/lib/make/MAPLIB.mk - make MAPLIB.mk - done MAPLIB.mk - exec - test '' = 'MAPLIB.mk' || ${STDCMP} 2>/dev/null -s MAPLIB.mk ${INSTALLROOT}/lib/make/MAPLIB.mk || { ${STDMV} ${INSTALLROOT}/lib/make/MAPLIB.mk ${INSTALLROOT}/lib/make/MAPLIB.mk.old 2>/dev/null || true; ${STDCP} MAPLIB.mk ${INSTALLROOT}/lib/make/MAPLIB.mk ;} - done ${INSTALLROOT}/lib/make/MAPLIB.mk generated make ${INSTALLROOT}/bin/mamake prev mamake exec - test '' = 'mamake' || ${STDCMP} 2>/dev/null -s mamake ${INSTALLROOT}/bin/mamake || { ${STDMV} ${INSTALLROOT}/bin/mamake ${INSTALLROOT}/bin/mamake.old 2>/dev/null || true; ${STDCP} mamake ${INSTALLROOT}/bin/mamake ;} diff --git a/src/cmd/INIT/PROBE.mk b/src/cmd/INIT/PROBE.mk deleted file mode 100644 index 9a8553f2d..000000000 --- a/src/cmd/INIT/PROBE.mk +++ /dev/null @@ -1,13 +0,0 @@ -/* - * @(#)probe (AT&T Bell Laboratories) 11/11/91 - * - * :PROBE: *.probe *.sh * - * - * common probe script installation - * generates probe.sh and probe in . - */ - -":PROBE:" : .MAKE .OPERATOR - probe.sh : $(LIBDIR)/probe/$(<:O=1)/probe $(>:N=*.(probe|sh)) - cat $(*) > $(<) - $(LIBDIR)/probe/$(<:O=1)/$(<:O=2) :INSTALLDIR: probe $(>:N!=*.(probe|sh)) diff --git a/src/cmd/INIT/TEST.mk b/src/cmd/INIT/TEST.mk deleted file mode 100644 index adc43908c..000000000 --- a/src/cmd/INIT/TEST.mk +++ /dev/null @@ -1,197 +0,0 @@ -/* - * regression test support - * - * @(#)TEST.mk (AT&T Research) 2010-05-19 - * - * test management is still in the design phase - */ - -/* - * three forms for :TEST: - * - * :TEST: xxx yyy ... - * - * $(REGRESS) $(REGRESSFLAGS) xxx.tst - * $(REGRESS) $(REGRESSFLAGS) yyy.tst - * - * :TEST: xxx.tst yyy ... - * - * $(REGRESS) $(REGRESSFLAGS) xxx.tst yyy ... - * - * :TEST: xxx.c [ :: test-prereq ... :: ] [ args [ : args ... ] ] - * - * :TEST: xxx.sh [ :: test-prereq ... :: ] [ args [ : args ... ] ] - * - * xxx :TEST: prereq ... - * [ action ] - * - * $(*) if no action - */ - -":TEST:" : .MAKE .OPERATOR - local B G P S T - test : .INSERT .TESTINIT - if "$("tests":T=FD)" - .SOURCE : tests - end - P := $(>:O=1) - if "$(P:N=*.tst)" && ! "$(@:V)" - B := $(P:B) - if ! ( T = "$(<:V)" ) - T := $(B) - end - test : - test.$(T) - eval - test.$$(T) : $$(B).tst - $$(REGRESS) $$(REGRESSFLAGS) $$(*) $(>:V:O>1) - :SAVE: $$(B).tst - end - elif "$(P:N=*@(.sh|$(.SUFFIX.c:/ /|/G)|$(.SUFFIX.C:/ /|/G)))" - B := $(P:B) - if ! ( T = "$(<:V)" ) - T := $(B) - end - :INSTALLDIR: $(B) - $(B) :: $(P) $(*:-l*|*$(CC.SUFFIX.ARCHIVE)) - if "$(P:N=*.sh)" - TESTCC == $(CC) - $(B) : (TESTCC) - end - test : - test.$(T) - if "$(@:V)" - eval - test.$$(T) : $$(B) $(>:V:O>1) - set +x; (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0; set -x - $(@:V) - end - elif "$(>:V:O>1)" - local I A V X S R=0 - for A $(>:V:O>1) - if A == "::" - let R = !R - elif A == ":" - let I = I + 1 - test.$(T).$(I) := $(V:V) - V = - X := $(X:V)$(S)$$(*) $$(test.$(T).$(I):T=*) - S = $("\n") - elif A != "-l*|*$(CC.SUFFIX.ARCHIVE)" - if R - test.$(A) : .VIRTUAL .FORCE - test.$(T) : test.$(A) - else - V += $(A:V) - end - end - end - if V - let I = I + 1 - test.$(T).$(I) := $(V:V) - X := $(X:V)$(S)$$(*) $$(test.$(T).$(I):T=*) - end - eval - test.$$(T) : $$(B) - set +x; (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0; set -x - $(X:V) - end - else - eval - test.$$(T) : $$(B) - set +x; (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0; set -x - $$(*) - end - end - elif ! "$(<:V)" - G = 1 - for B $(>) - if B == "-|--" - let G = !G - else - if ! G - T = - elif ! ( T = "$(B:A=.COMMAND)" ) && ! "$(B:A=.TARGET)" - for S .c .sh - if "$(B:B:S=$(S):T=F)" - :INSTALLDIR: $(B) - $(B) :: $(B:B:S=$(S)) - T := $(B) - break - end - end - end - test : - test.$(B) - test.$(B) : $(T) - $(B).tst - $(REGRESS) $(REGRESSFLAGS) $(*:N=*.tst) $(*:N!=*.tst) - :SAVE: $(B).tst - end - end - else - if "$(>:V)" || "$(@:V)" - P := $(>) - T := $(P:O=1) - B := $(T:B) - if "$(T)" != "$(B)" && "$(T:G=$(B))" - :INSTALLDIR: $(B) - $(B) :: $(T) $(P:O>1:N=-*) - T := $(B) - P := $(B) $(P:O>1:N!=-*) - end - if "$(<:V)" - T := $(<:V) - end - test : - test.$(T) - if "$(@:V)" - eval - test.$$(T) : $$(P) $(>:V:O>1) - set +x; (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0; set -x - $(@:V) - end - else - test.$(T) : $(P) - set +x; (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0; set -x - $(*) - end - else - test : - test.$(<) - test.$(<) : $(<).tst $(<:A=.COMMAND) - $(REGRESS) $(REGRESSFLAGS) $(*) - end - end - -.TESTINIT : .MAKE .VIRTUAL .FORCE .REPEAT - if VARIANT == "DLL" - error 1 :DLL: tests skipped - exit 0 - end - set keepgoing - REGRESSFLAGS &= $(TESTS:@/ /|/G:/.*/--test=&/:@Q) - -.SCAN.tst : .SCAN - $(@.SCAN.sh) - I| INCLUDE@ % | - -.ATTRIBUTE.%.tst : .SCAN.tst - -MKTEST = mktest -MKTESTFLAGS = --style=regress - -/* - * test scripts are only regenerated from *.rt when --force - * is specified or the .rt file is newer than the script - * otherwise the script is accepted if it exists - * - * this avoids the case where a fresh build with no state - * would regenerate the test script and capture current - * behavior instead of expected behavior - */ - -%.tst : %.rt - if [[ "$(-force)" || "$(>)" -nt "$(^|<)" ]] - then $(MKTEST) $(MKTESTFLAGS) $(>) > $(<) - fi - -test%.sh test%.out : %.rt - if [[ "$(-force)" || "$(>)" -nt "$(^|<:O=1)" ]] - then $(MKTEST) --style=shell $(>) > $(<:N=*.sh) - $(SHELL) $(<:N=*.sh) --accept > $(<:N=*.out) - fi diff --git a/src/cmd/INIT/WWW.mk b/src/cmd/INIT/WWW.mk deleted file mode 100644 index 4542daeea..000000000 --- a/src/cmd/INIT/WWW.mk +++ /dev/null @@ -1,450 +0,0 @@ -/* - * post stuff to WWWDIR for web access - * index generated from *.mm - */ - -WWWDIR = wwwfiles public_html -WWWSAVE = -WWWSTYLE = -WWWTYPES = - -.WWW.semaphore : .SEMAPHORE - -.EXPORT : WWWSTYLE WWWTYPES - -/* - * item :WWW: [style=frame] [save=pattern] file ... - * - * `item'.mm generates index.html - * other files copied to $(WWWDIR)/`item' - * sets up www.bin - */ - -":WWW:" : .MAKE .OPERATOR - local A B D I J L X E P R M - .WWW.LOCAL .WWW.REMOTE : .DO.NOTHING - WWWDIR := $(HOME:X=$(WWWDIR):T=F:O=1) - B := $(*:N=*.mm::O=1:B) - D := $(WWWDIR)/$(B) - M := $(WWWDIR)/man/man1 - R := $(>:N!=*=*) - for I $(>:N=*=*) - A := WWW$(I:/=.*//:F=%(upper)s) - $(A) := $(I:/.*=//) - end - (html_info) : $$(MM2HTMLINFO) $$(MM2HTMLINIT) - if WWWSTYLE == "frame" - %.html %-index.html : %.mm (html_info) - $(MM2HTML) $(MM2HTMLFLAGS) $(%:N=faq.*:?> $(<:O=1)?-f $(%) -x?) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(WWWSOURCE.$(%)) $(>) - else - %.html : %.mm (html_info) - $(MM2HTML) $(MM2HTMLFLAGS) -o WWWTYPES=$(WWWTYPES:@Q:@Q) $(>) $(WWWSOURCE.$(%)) > $(<) - end - %.html : %.1 (html_info) - $(MM2HTML) $(MM2HTMLFLAGS) $(>) $(WWWSOURCE.$(%)) > $(<) - %-man.html : $(BINDIR)/% (html_info) - ignore $(>) --html 2> $(<) - .DO.WWW.MAN : .USE - if { test '' = '$(*)' || { strings $(*) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.' ;} ;} && [[ "$( $(<:B) '--???html' -- 2>&1 )" == version=[1-9]* ]] - then ( $(<:B) '--??html' -- 2>$(<) ) || true - fi - if 0 - $(M)/%.html : .DONTCARE $(INSTALLROOT)/bin/% - $(@.DO.WWW.MAN) - end - if "$(<)" - D := $(<) - elif ! "$(R)" - return - end - .WWW .WWW.BIN : $(D) $(M) - - $(D) $(M) : - $(SILENT) test -d $(<) || mkdir $(<) - if ( J = "$(R:N=*.mm)" ) - for I $(J:G=%.html) - if I == "*-index.html" - O := $(D)/index.html - else - O := $(I:D=$(D):B:S) - end - .WWW : $(O) - $(O) :COPY: $(I) - end - end - .WWW.req : .FUNCTION - return $(*$(%:T=SR):N=-l*:T=F:P=B:N!=-l*|/*) - A = 0 - for I $(R:N!=*.mm) - if I == "-" - let A = ! A - elif I == "-l*" - L := $(I:/-l//) - if J = "$(.DLL.NAME. $(L) $($(L).VERSION):T=F)" - X += $(J) - end - elif A || "$(I:A=.COMMAND|.ARCHIVE)" || "$(I:D:D:N=$(INSTALLROOT))" || "$(I:N=*-www)" - X += $(I) - if "$(I:A=.COMMAND)" - X += $$(.WWW.req $(I)) - J := $(I:/-www$//) - eval - .WWW : $(J:D=$(M):B:S=.html) - $(J:D=$(M):B:S=.html) : $(I) $(I:B:S=.1:T=F:?$(I:B:S=.1)??) - if strings $$(*:O=1) | egrep -q '\[\+NAME\?|libcmd\.|cmd[0-9][0-9]\.' - then $$(IGNORE) $$(*:O=1) '--??html' -- 2>&1 - elif test '' != '$$(*:N=*.1)' - then $$(MM2HTML) $$(*:N=*.1) - fi > $$(<) - end - end - else - if I == "*.html" - $(I) : .TERMINAL - end - .WWW : $(D)/$(I) - $(D)/$(I) :COPY: $(I) - end - end - if "$(X:V)" - .WWW.EDIT. : .FUNCTION - local E I J - for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*) - for J $(%) - if "$(I:B:S)" == "$(J:B:S)" - E += -s ',^$(J)$,$(I),' - end - end - end - return $(E) - .WWW.LIST. : .FUNCTION - local E I J - for I $(.INSTALL.LIST.:C,^$(INSTALLROOT)/,,:N!=lib/lib/*) - for J $(%) - if "$(I:B:S)" == "$(J:B:S)" - E += $(I) - end - end - end - return $(E) - .WWW .WWW.BIN : $(D)/$(B)-$(CC.HOSTTYPE).tgz - $(D)/$(B)-$(CC.HOSTTYPE).tgz : $(X:V) - cat > X.$(tmp).X <) - TYPE := $(HOST:/.*://) - HOST := $(HOST:/:.*//) - WWWTYPES += $(TYPE) - ARCH := $(PWD:D:C,/$(CC.HOSTTYPE)/,/$(TYPE)/) - BINS := - DIRS := - for ITEM $(<) - if TYPE == "$(CC.HOSTTYPE)" - G := $("index.mm":G=%.html:D=$(WWWDIR)/$(ITEM):B:S) - .WWW.LOCAL : $(G) - eval - $(G) : .JOINT $(ARCH)/$(ITEM)/$(ITEM).mm (html_info) .WWW.semaphore .FORCE - cd $$(*:D) - $$(MAKE) $$(-) $$(=) www - end - else - BINS += $(WWWDIR)/$(ITEM)/$(ITEM)-$(TYPE).tgz - DIRS += $(ARCH)/$(ITEM) - end - end - .WWW.REMOTE : $(BINS) - ARCH := $(ARCH:C,/src/.*,,) - eval - $(BINS) :JOINT: .FORCE .WWW.semaphore - rsh $(HOST) " - eval \"\`bin/package debug use\`\" - PATH=\$PATH:$(PATH):/usr/ccs/bin - umask 022 - for dir in $(DIRS) - do cd \$dir - $(MAKE) $(-) $(=) --errorid=\$dir www.bin - done - " - end - end - -/* - * :WWWPOST: [ host [ dir [ tmp ] ] ] - * - * post local $(WWWDIR) to host:dir putting archives in host:tmp/www-*.pax - * defaults: host=www dir=$(WWWDIR) tmp=tmp - */ - -":WWWPOST:" : .MAKE .OPERATOR - local ( host dir tmp ignore ... ) $(>) www $(WWWDIR:B:S) tmp ignore - :ALL: delta.pax - .WWW.ALL : .WWW.REMOTE - .WWW.LOCAL - eval - .POST : .VIRTUAL base.pax delta.pax - case "$$(>)" in - '') ;; - *) $$(>:C,.*,rcp & $(host):$(tmp)/$(dir)-&;,) - rsh $(host) ' - umask 022 - PATH=$HOME/bin:$PATH - cd $(dir) - pax -rvf $HOME/$(tmp)/$(dir)-delta.pax -z $HOME/$(tmp)/$(dir)-base.pax - ' - ;; - esac - end - base.pax : - cd $(WWWDIR) - pax -wvf $(<:P=A) . - .base.list. : .FUNCTION - local X - X := $(sh pax -f $(%:N=*.pax):C,\n, ,G:C,^,$$(WWWDIR)/,) - $(X) : .DONTCARE - return $(X) - delta.pax : .WWW.ALL base.pax $$(.base.list. $$(*)) - cd $(WWWDIR) - pax -wvf $(<:P=A) -z $(*:N=*.pax:P=A) . - -.WWW.FAQ : .USE - { - set -o noglob - print .xx title=\"$(<:B:/\..*//) FAQ index\" - print .MT 4 - print .TL - print - print .H 1 \"$(<:B:/\..*//) FAQ index\" - print .BL - for i in $(*) - do exec < $i || exit 1 - e=0 l=0 x=y - while read -r op a1 a2 - do case $op in - .H) case $e in - 0) e=1 ;; - 1) print .LE ;; - esac - print .sp - print .LI - a2=${a2//\"/} - a2=${a2%\ [Ff][Aa][Qq]} - f=${i%.*}.html - f=${f#*/} - print .xx link=\"$f' '$a2\" - print .sp - print .NL - ;; - .AL|.BL|.NL) - case $x in - y) x=x ;; - *) x=xx$x ;; - esac - ;; - .LE) x=${x%xx} - ;; - .LI) case $x in - x) x= - print .LI - ;; - esac - ;; - .sp) case $x in - '') x=x ;; - esac - ;; - *) case $x in - '') print -r -- $op $a1 $a2 ;; - esac - ;; - esac - done - case $e in - 1) print .LE ;; - esac - done - print .LE - } > $(<) - -/* - * [ dir ] :WWWPAGE: [ source ... ] file.mm file - * - * *.mm generates *.html - * faq.*.mm generates faq.mm - * other files copied to $(WWWDIR)[/dir] - * files after - (toggle) are just asserted on :: - */ - -":WWWPAGE:" : .MAKE .OPERATOR - local B D I J O P Q S X G A - A = 0 - D := $(<:O=1) - P := $(>:N!=*=*) - S := $(>:N=*=*) - if X = "$(P:B:S:N=faq.*.mm)" - Q := $(D:+$(D).)faq.mm - $(Q) : .WWW.FAQ $(X) - P += $(Q) - end - if D - B := $(D:B) - if D != "/*" - D := $(WWWDIR)/$(D) - $(D) :INSTALLDIR: - .WWW.LOCAL : $(D) - end - for I $(<:B) - .WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html - $(WWWDIR)/man/man1/$(I).html : .DONTCARE - end - for I $(P) - if I == "-" - let A = !A - continue - end - if A || I == "$(WWWSAVE)" - :: $(I) - continue - end - if "$(I:T=FD)" - .SOURCE : $(I) - if "$(<)" - WWWSOURCE.$(<:O=1) += $(I:T=F:P=L=*) - end - continue - end - if I == "*.html" - $(I) : .TERMINAL - O := $(I) - X := $(I) - elif ( G = "$(I:G=%.html)" ) - $(G) : .IMPLICIT $(S) $(I) - if $(G:O) > 1 - for J $(G) - if J == "*-index.html" - if J == "faq.*.*" - continue - end - O := index.html - else - O := $(J) - end - .WWW.LOCAL : $(D)/$(O) - $(D)/$(O) :INSTALL: $(J) - end - continue - end - if X - X := $(I) - else - X := index - end - I := $(I:B:S=.html) - O := $(X:B:S=.html) - else - O := $(I) - end - $(D)/$(O) :INSTALL: $(I) - .WWW.LOCAL : $(D)/$(O) - end - else - for I $(P) - if I == "-" - let A = !A - continue - end - if A || I == "$(WWWSAVE)" - :: $(I) - continue - end - if "$(I:T=FD)" - .SOURCE : $(I) - continue - end - if I == "*.html" - $(I) : .TERMINAL - O := $(I) - elif ( O = "$(I:G=%.html)" ) - $(O) : $(S) .IMPLICIT $(I) - end - for J $(O) - if J == "*-index.html" - X := index.html - else - X := $(J) - end - X := $(WWWDIR)/$(X) - .WWW.LOCAL : $(X) - $(X) :COPY: $(J) - end - end - end - -/* - * rhs done by default - */ - -":WWWALL:" : .MAKE .OPERATOR - .WWW.ALL : $(>) - -":WWWMAN:" : .MAKE .OPERATOR - .INIT : .WWW.MAN - .WWW.MAN. := $(>) - .WWW.MAN : .MAKE .FORCE - local H I - for I $(.WWW.MAN.) - .WWW.LOCAL : $(WWWDIR)/man/man1/$(I:B).html - $(WWWDIR)/man/man1/$(I:B).html : .DO.WWW.MAN $(I) - end - for I $(sh builtin:B) - .WWW.LOCAL : $(WWWDIR)/man/man1/$(I).html - $(WWWDIR)/man/man1/$(I).html : .DO.WWW.MAN - - end - for I $("$(BINDIR)/*([!-.])":P=G:B) - if I != "*_*" - H := $(WWWDIR)/man/man1/$(I).html - if ! "$(*$(H))" && I != "$(.WWW.NOMAN.:/ /|/G)" - .WWW.LOCAL : $(H) - end - elif "$(PATH:/:/ /G:X=$(I:/.*_//):T=F:O=1)" - H := $(WWWDIR)/man/man1/$(I:/.*_//).html - .WWW.LOCAL : $(H) - $(H) : .DO.WWW.MAN $(BINDIR)/$(I) - end - end - -.WWW.SED. : .FUNCTION - local E T - E = s/^\(\.xx.link=.*\)%HOSTTYPE%\(.*\)%HOSTTYPE%\(.*\)/ - for T $(%) - E := $(E:V)\$$("\n").LI\$$("\n")\1$(T)\2$(T)\3 - end - return $(E:V)/ - -/* - * mm scan support - */ - -.SCAN.mm : .SCAN - O|S| - I|.sn %|A.DONTCARE|M$$(%)| - I|.so %|A.DONTCARE|M$$(%)| - -.ATTRIBUTE.%.mm : .SCAN.mm diff --git a/src/cmd/INIT/package.mk b/src/cmd/INIT/package.mk deleted file mode 100644 index 1a945d9fe..000000000 --- a/src/cmd/INIT/package.mk +++ /dev/null @@ -1,1537 +0,0 @@ -/* - * source and binary package support - * - * @(#)package.mk (AT&T Research) 2012-02-14 - * - * usage: - * - * cd $INSTALLROOT/lib/package - * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type - * - * where: - * - * name package description file or component - * - * type source build source archive, generates - * $(PACKAGEDIR)/name.version.release.suffix - * binary build binary archive, generates - * $(PACKAGEDIR)/name.version.hosttype.release.suffix - * runtime build binary archive, generates - * $(PACKAGEDIR)/name-run.version.hosttype.release.suffix - * - * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views - * - * generated archive member files are $(PACKAGEROOT) relative - * - * main assertions: - * - * NAME [ name=value ] :PACKAGE: component ... - * :OMIT: component ... - * :LICENSE: license-class-pattern - * :CATEGORY: category-id ... - * :COVERS: package ... - * :REQUIRES: package ... - * :INDEX: index description line - * :DESCRIPTION: - * [ verbose description ] - * :DETAILS: style - * :README: - * readme lines - * :EXPORT: - * name=value - * target :INSTALL: [ source ] - * - * option variables, shown with default values - * - * format=tgz - * archive format - * - * version=YYYY-MM-DD - * package base version (overrides current date) - * - * release=YYYY-MM-DD - * package delta release (overrides current date) - * - * license=type.class - * :LICENSE: type.class pattern override - * - * notice=1 - * include the conspicuous empty notice file - * - * copyright=0 - * do not prepend source file copyright notice - * - * strip=0 - * don't strip non-lcl binary package members - * - * variants=pattern - * include variants matching pattern in binary packages - * - * incremental=[source:1 binary:0] - * if a base archive is generated then also generate an - * incremental delta archive from the previous base - * - * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when - * a target is specified - */ - -/* these are ast centric -- we'll parameterize another day */ - -org = ast -url = http://www.research.att.com/sw/download - -/* generic defaults */ - -base = -category = utils -checksum = md5 -closure = -copyright = 1 -delta = -format = tgz -incremental = -index = -init = INIT -license = -licenses = $(org) -mamfile = 1 -opt = -name = -notice = -release = -strip = 0 -style = tgz -suffix = tgz -type = -variants = !(cc-g) -vendor = -version = $("":T=R%Y-%m-%d) - -SUM = sum - -package.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------ - -package.readme = $(@.package.readme.) - -.package.readme. : - This is a package root directory $PACKAGEROOT. Source and binary - packages in this directory tree are controlled by the command - $() - bin/package - $() - Binary files may be in this directory or in the install root directory - $() - INSTALLROOT=$PACKAGEROOT/arch/`bin/package` - $() - For more information run - $() - bin/package help - $() - Many of the packaged commands self-document via the --man and --html - options; those that do have no separate man page. - $() - Each package is covered by one of the license files - $() - $(PACKAGELIB)/LICENSES/ - $() - where is the license type for the package. At the top - of each license file is a URL; the license covers all software that - refers to this URL. For details run - $() - bin/package license [] - $() - Any archives, distributions or packages made from source or - binaries covered by license(s) must contain the corresponding - license file(s)$(notice:?, this README file, and the empty file$$("\n")$$(package.notice)?.?) - -.package.licenses. : .FUNCTION - local I F L R T all save text - L := $(%) - while L == "--*" - I := $(L:O=1) - if I == "--all" - all = 1 - elif I == "--save" - save = 1 - elif I == "--text" - text = 1 - end - L := $(L:O>1) - end - if "$(L)" == "*-*" - L += $(L:/[^-]*-//) $(L:/-.*//) - end - L += $(licenses) - for I $(L:U) - if I == "gpl" - I = gnu - all = - end - if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)" - R += $(F) - if save || text - T := $(.FIND. lib/package .lic $(F):P=W,query=type) - R += $(T:D=$(PACKAGESRC)/LICENSES:B) - end - if save - R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F) - elif ! all - break - end - end - end - return $(R) - -/* - * glob(3) doesn't handle / in alternation -- should it? - */ - -.package.glob. : .FUNCTION - local A D I P S - for I $(%) - if I == "*/*" - D := $(I:C,/.*,,) - if ! "$(A:N=$(D))" - local S.$(D) - A += $(D) - end - S.$(D) += $(I:C,[^/]*/,,) - else - P := $(P)$(S)$(I) - end - S = | - end - if P == "*\|*" - P := ($(P)) - end - for I $(A) - P += $(I)/$(.package.glob. $(S.$(I))) - end - return $(P) - - -.MAKEINIT : .package.init - -.package.init : .MAKE .VIRTUAL .FORCE - local V - V := $(VROOT:T=F:P=L*) - if ! PACKAGEROOT - PACKAGEROOT := $(V:N!=*/arch/+([!/]):O=1) - end - if V == "$(PACKAGEROOT)" - V := - end - V += $(INSTALLROOT) $(PACKAGEROOT) - PACKAGEVIEW := $(V:H=RU) - INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%) - if license - license := $(license)|none.none - end - -PACKAGELIB = lib/package -PACKAGESRC = $(PACKAGEROOT)/$(PACKAGELIB) -PACKAGEBIN = $(INSTALLROOT)/$(PACKAGELIB) -PACKAGEDIR = $(PACKAGESRC)/$(style) -INSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%) - -package.omit = -|*/$(init) -package.glob.all = $(INSTALLROOT)/src/*/*/($(MAKEFILES:/:/|/G)) -package.all = $(package.glob.all:P=G:W=O=$(?$(name):A=.VIRTUAL):N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) -package.glob.pkg = $(.package.glob. $(~$(name):P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%) $(~$(name):P=U:N=$(name):?$$(INSTALLROOT)/src/$$(name)/($$(MAKEFILES:/:/|/G))??) -package.pkg = $(package.glob.pkg:P=G:D:N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) -package.closure = $(closure:?$$(package.all)?$$(package.pkg)?) - -package.init = $(.package.glob. $("$(init)$(name)":P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%:P=G:T=F:D::B) -package.ini = ignore mamprobe manmake package silent -package.src.pat = $(PACKAGESRC)/($(name).(ini|pkg)) -package.src = $(package.src.pat:P=G) $(.package.licenses. --save $(name)) -package.bin = $(PACKAGEBIN)/$(name).ini - -package.mam = --never --force --mam=static --corrupt=accept --clobber --compare --link='lib*.a*' CC=$(CC.DIALECT:N=C++:?CC?cc?) package.license.class=$(license:Q) $(=) 'dontcare test' install test - -op = current -stamp = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] -source = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(suffix) -binary = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) -runtime = $(PACKAGEDIR)/$(name)-run.$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) -old.new.source = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(suffix) -old.new.binary = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) -old.new.runtime = $(PACKAGEDIR)/$(name)-run.$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) - -source.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(suffix)":P=G:H=R) -binary.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H=R) -runtime.list = $("$(PACKAGEDIR)/$(name)-run.*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H>) - -source.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F) -binary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F) - -$(init) : .VIRTUAL $(init) - -package.requires = 0 - -":package:" : .MAKE .OPERATOR - local P I R V - P := $(<:O=1) - $(P) : $(>:V) - if ! package.requires - if ! name - name := $(P) - .PACKAGE. := $(P) - if name == "$(init)" - package.omit = - - package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk - else - $(P) : $(package.init) - end - for I $(<:O>1) - if I == "*=*" - eval - $(I) - end - else - version := $(I) - end - end - LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G) - export LICENSEFILEDEFAULT - end - if "$(>)" - for I $(>:V) - $(I) : .VIRTUAL - if I == "/*" - package.dir += $(I:V) - end - end - end - if "$(@)" - $(P).README := $(@) - else - $(P).README := This is the $(P) package. - end - end - -":AUXILIARY:" : .MAKE .OPERATOR - package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F) - -":CATEGORY:" : .MAKE .OPERATOR - if ! package.requires - category := $(>) - end - -.covers. : .FUNCTION - local I C D F K=0 L - for I $(%) - if ! "$(~covers:N=$(I:B))" - if F = "$(I:D:B:S=.pkg:T=F)" - if D = "$(F:T=I)" - covers : $(I:B) - for L $(D) - if L == ":COVERS:" - K = 1 - elif L == ":*:" - if K - break - end - elif K - : $(.covers. $(L)) - end - end - end - else - error $(--exec:?3?1?) $(I): unknown package $(I) - end - end - end - -":COVERS:" : .MAKE .OPERATOR - if ! package.requires - : $(.covers. $(>)) - end - -":DESCRIPTION:" : .MAKE .OPERATOR - if ! package.requires - $(name).README := $(@:V) - end - -":DETAILS:" : .MAKE .OPERATOR - if ! package.requires - details.$(>:O=1) := $(@:V) - end - -":EXPORT:" : .MAKE .OPERATOR - if ! package.requires - export.$(style) := $(@:/$$("\n")/ /G) - end - -":INDEX:" : .MAKE .OPERATOR - if ! package.requires - index := $(>) - end - -":INSTALL:" : .MAKE .OPERATOR - if ! package.requires - local T S F X - S := $(>) - T := $(<) - if "$(exe.$(style))" && "$(T)" == "bin/*([!./])" - T := $(T).exe - end - if ! "$(S)" - S := $(T) - elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])" - S := $(S).exe - end - install.$(style) := $(install.$(style):V)$("\n")install : $$(ROOT)/$(T)$("\n")$$(ROOT)/$(T) : $$(ARCH)/$(S)$("\n\t")cp $< $@ - if strip && "$(T:N=*.exe)" - install.$(style) := $(install.$(style):V)$("\n\t")strip $@ 2>/dev/null - end - X := $(PACKAGEROOT)/arch/$(CC.HOSTTYPE)/$(S) - if strip && "$(X:T=Y)" == "*/?(x-)(dll|exe)" - F := filter $(STRIP) $(STRIPFLAGS) $(X) - end - if "$(filter.$(style):V)" - filter.$(style) := $(filter.$(style):V)$$("\n") - end - filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T) - end - -":LICENSE:" : .MAKE .OPERATOR - if ! package.requires && ! license - license := $(>) - end - -":OMIT:" : .MAKE .OPERATOR - if ! package.requires - package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G) - end - -":POSTINSTALL:" : .MAKE .OPERATOR - if ! package.requires - postinstall.$(style) := $(@:V) - end - -":README:" : .MAKE .OPERATOR - if ! package.requires - readme.$(style) := $(@:V) - end - -.requires. : .FUNCTION - local I C D F K=0 L V T M=0 - for I $(%) - if ! "$(~requires:N=$(I:B))" - if F = "$(I:D:B:S=.pkg:T=F)" - if I == "$(init)" - package.omit = - - else - requires : $(I:B) - end - if V = "$(I:D:B=gen/$(I:B):S=.ver:T=F)" - req : $(I:B) - else - error 1 $(I): package should be written before $(P) - end - let package.requires = package.requires + 1 - include "$(F)" - let package.requires = package.requires - 1 - else - error 1 $(I): package not found - end - end - end - -":REQUIRES:" : .MAKE .OPERATOR - : $(.requires. $(>)) - -":TEST:" : .MAKE .OPERATOR - if ! package.requires - local T - T := $(>) - if "$(T)" == "bin/*([!./])" - if "$(exe.$(style))" - T := $(T).exe - end - T := $$(PWD)/$$(ARCH)/$(T) - end - test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@) - end - -base delta : .MAKE .VIRTUAL .FORCE - op := $(<) - -closure : .MAKE .VIRTUAL .FORCE - $(<) := 1 - -cyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE - style := $(<) - -source : .source.init .source.gen .source.$$(style) - -.source.init : .MAKE - local A B D P V I - type := source - if ! "$(incremental)" - incremental = 1 - end - if "$(source.$(name))" - suffix = c - end - : $(.init.$(style)) - : $(details.$(style):V:R) : - A := $(source.list) - B := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - deltaversion := $(B:B:/$(name).//) - let deltasince = $(deltaversion:/.*-//) + 1 - deltasince := $(deltaversion:/[^-]*$/$(deltasince:F=%02d)/) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - source := $(B:D:B:S=.$(release).$(suffix)) - version := $(source:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)\.\([^.]*\).*/\1/) - if V == "$(stamp)" && V != "$(version)" - old.version := $(V) - old.source := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - source := $(B) - end - if B == "$(source)" - if "$(B:D:B:B)" == "$(D:D:B:B)" && "$(B:B::S)" != "$(D:B::S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/) - end - PACKAGEGEN := $(PACKAGESRC)/gen - -.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html - -BINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1) - -$$(PACKAGEDIR) $$(PACKAGEGEN) : .IGNORE - [[ -d $(<) ]] || mkdir $(<) - -$$(PACKAGEGEN)/SOURCE.html : $(BINPACKAGE) - $(*) html source > $(<) - -$$(PACKAGEGEN)/BINARY.html : $(BINPACKAGE) - $(*) html binary > $(<) - -$$(PACKAGEGEN)/DETAILS.html : $(BINPACKAGE) - $(*) html intro > $(<) - -.source.exp .source.pkg .source.rpm : .MAKE - error 3 $(style): source package style not supported yet - -exe.cyg = .exe -vendor.cyg = gnu - -.name.cyg : .FUNCTION - local N - N := $(%) - if N == "*-*" - vendor := $(N:/-.*//) - if vendor == "$(vendor.cyg)" - vendor := - N := $(N:/[^-]*-//) - end - N := $(N:/-//G) - end - return $(N) - -.init.cyg : .FUNCTION - local N O - closure = 1 - init = . - strip = 1 - suffix = tar.bz2 - format = tbz - vendor := $(licenses:N!=$(vendor.cyg):O=1) - package.ini := $(package.ini) - package.src.pat := $(package.src.pat) - package.src := $(package.src) - package.bin := $(package.bin) - .source.gen : .CLEAR $(*.source.gen:V:N!=*.html) - name.original := $(name) - name := $(.name.cyg $(name)) - if name != "$(name.original)" - $(name) : $(~$(name.original)) - O := $(~covers) - covers : .CLEAR - for N $(O) - covers : $(.name.cyg $(N)) - end - end - stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9] - version.original := $(version) - version := $(version:/-//G)-1 - if opt - opt := $(opt)/$(vendor)/ - else - opt := $(name)-$(version)/ - end - if type == "source" - version := $(version)-src - source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) - else - binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) - end - -.source.cyg : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - cat > $tmp/configure <<'!' - echo "you didn't have to do that" - ! - chmod +x $tmp/configure - echo ";;;$tmp/configure;configure" - cat > $tmp/Makefile0 <<'!' - HOSTTYPE := $$(shell bin/package) - ROOT = ../.. - ARCH = arch/$$(HOSTTYPE) - all : - PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style)) - install : all - $(install.$(style):V) - $(test.$(style):V) - ! - echo ";;;$tmp/Makefile0;Makefile" - cat > $tmp/CYGWIN-README <<'!' - $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run: - $() - make - $() - $(test.$(style):@?To test the binaries after building/installing run:$$("\n\n\t")make test$$("\n\n")??)To build and/or install the binaries run: - $() - make install - $() - The bin/package command provides a command line interface for all package - operations. The $(opt:/.$//) source and binary packages were generated by: - $() - package write cyg base source version=$(version.original) $(name.original) - package write cyg base binary version=$(version.original) $(name.original) - $() - using the $(org)-base package. To download and install the latest - $(org)-base source package in /opt/$(org) run: - $() - PATH=/opt/$(org)/bin:$PATH - cd /opt/$(org) - package authorize "NAME" password "PASSWORD" setup flat source $("\\") - $(url) $("\\") - $(org)-base - package make - $() - and export /opt/$(org)/bin in PATH to use. The NAME and PASSWORD signify your - agreement to the software license(s). All users get the same NAME and PASSWORD. - See $(url) for details. If multiple architectures may be built under - /opt/$(org) then drop "flat" and export /opt/$(org)/arch/`package`/bin in PATH - to use. To update previously downloaded packages from the same url simply run: - $() - cd /opt/$(org) - package setup - package make - $() - To download and install the latest $(org)-base binary package in - /opt/$(org) change "source" to "binary" and omit "package make". - ! - echo ";;;$tmp/CYGWIN-README;CYGWIN-PATCHES/README" - cat > $(source:/-src.$(suffix)//).setup.hint <<'!' - category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) - requires: cygwin - sdesc: "$(index)" - ldesc: "$($(name.original).README)" - ! - echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint" - echo ";;;$(BINPACKAGE);bin/package" - cat > $tmp/Makefile <<'!' - :MAKE: - ! - echo ";;;$tmp/Makefile;src/Makefile" - echo ";;;$tmp/Makefile;src/cmd/Makefile" - echo ";;;$tmp/Makefile;src/lib/Makefile" - if [[ '$(mamfile)' == 1 ]] - then cat > $tmp/Mamfile1 <<'!' - info mam static - note source level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/Mamfile1;src/Mamfile" - cat > $tmp/Mamfile2 <<'!' - info mam static - note component level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" - echo ";;;$tmp/Mamfile2;src/lib/Mamfile" - fi - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - echo ";;;$(PACKAGEGEN)/$(name.original).req" - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then if [[ '$(mamfile)' == 1 ]] - then (( o=m )) - s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) - if [[ $s ]] - then for j in $s - do if [[ -d $j ]] - then cd $j - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then (( m++ )) - $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/$j/Mamfile" - fi - cd $(INSTALLROOT)/$i - fi - done - if (( o != m )) - then (( m++ )) - cat > $tmp/$m.mam <<'!' - info mam static - note subcomponent level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - else (( m++ )) - $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - fi - $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) - fi - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - { - : > $tmp/HEAD - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - --format=$(format) \ - --local \ - -wvf $(source) $(base) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) \ - $(vendor:?-s",^[^/],$(opt)&,"??) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - rm -rf $tmp - fi - -.source.lcl : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) $(=) .FILES.+=Mamfile recurse list.package.local - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - sort -t';' -k5,5 -u | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - -wvf $(source) $(base) \ - $(op:N=delta:?--format=gzip??) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) - rm -rf $tmp - fi - -.source.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - if [[ '$(init)' == '$(name)' ]] - then cat > $tmp/Makefile <<'!' - :MAKE: - ! - $(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile - echo ";;;$tmp/Makefile;src/Makefile" - cp $tmp/Makefile $tmp/Makefile1 - $(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1 - echo ";;;$tmp/Makefile1;src/cmd/Makefile" - cp $tmp/Makefile $tmp/Makefile2 - $(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2 - echo ";;;$tmp/Makefile2;src/lib/Makefile" - if [[ '$(mamfile)' == 1 ]] - then cat > $tmp/Mamfile1 <<'!' - info mam static - note source level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1 - echo ";;;$tmp/Mamfile1;src/Mamfile" - cat > $tmp/Mamfile2 <<'!' - info mam static - note component level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2 - echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" - cp $tmp/Mamfile2 $tmp/Mamfile3 - $(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3 - echo ";;;$tmp/Mamfile3;src/lib/Mamfile" - fi - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lib pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] - then echo $(name) $(version) $(release|version) 1 > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).ver || cp $tmp/t $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).req || cp $tmp/t $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).inx || cp $tmp/t $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - } | fmt - package help source - package release $(name) - } > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).README || cp $tmp/t $(PACKAGEGEN)/$(name).README - echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" - { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package"' - echo '.xx meta.keywords="software, package"' - echo '.MT 4' - echo '.TL' - echo '$(name) package' - echo '.H 1 "$(name) package"' - echo '$($(name).README)' - set -- $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F:D::B) - hot= - for i - do hot="$hot -e s/\\(\\<$i\\>\\)/\\\\h'0*1'\\1\\\\h'0'/" - done - set -- $(package.closure:B) - if (( $# )) - then echo 'Components in this package:' - echo '.P' - echo '.TS' - echo 'center expand;' - echo 'l l l l l l.' - if [[ $hot ]] - then hot="sed $hot" - else hot=cat - fi - for i - do echo $i - done | - pr -6 -t -s' ' | - $hot - echo '.TE' - fi - echo '.P' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - set -- $(.package.licenses. --all $(name)) - case $# in - 0) ;; - *) case $# in - 1) echo 'The software is covered by this license:' ;; - *) echo 'The software is covered by these licenses:' ;; - esac - echo .BL - for j - do i=$( $(PROTO) -l $j -p -h -o type=usage /dev/null | sed -e 's,.*\[-license?\([^]]*\).*,\1,' ) - echo .LI - echo ".xx link=\"$i\"" - done - echo .LE - echo 'Individual components may be covered by separate licenses;' - echo 'refer to the component source and/or binaries for more information.' - echo .P - ;; - esac - echo 'A recent' - echo '.xx link="release change log"' - echo 'is also included.' - cat $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F) < /dev/null - echo '.H 1 "release change log"' - echo '.xx index' - echo '.nf' - package release $(name) | - sed -e 's/:::::::: \(.*\) ::::::::/.fi\$("\n").H 1 "\1 changes"\$("\n").nf/' - echo '.fi' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t - $(STDED) $(STDEDFLAGS) $tmp/t <<'!' - /^$/,/^$/s/ changes$/,/^$/m// - w - q - ! - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).html || cp $tmp/t $(PACKAGEGEN)/$(name).html - echo ";;;$(PACKAGEGEN)/$(name).html;$(PACKAGELIB)/$(name).html" - if [[ '$(deltasince)' ]] - then { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package $(version) delta $(release)"' - echo '.xx meta.keywords="software, package, delta"' - echo '.MT 4' - echo '.TL' - echo '$(name) package $(deltaversion) delta $(release)' - echo '.H 1 "$(name) package $(deltaversion) delta $(release) changes"' - echo '.nf' - package release $(deltasince) $(name) | - sed -e 's/:::::::: \(.*\) ::::::::/.H 2 \1/' - echo '.fi' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t - $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html - echo ";;;$(PACKAGEGEN)/$(name).$(release).html;$(PACKAGELIB)/$(name).$(release).html" - fi - fi - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then if [[ '$(mamfile)' == 1 ]] - then (( o=m )) - s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) - if [[ $s ]] - then for j in $s - do if [[ -d $j ]] - then cd $j - if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . - then (( m++ )) - $(MAKE) $(package.mam) > $tmp/$m.mam - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/$j/Mamfile" - fi - cd $(INSTALLROOT)/$i - fi - done - if (( o != m )) - then (( m++ )) - cat > $tmp/$m.mam <<'!' - info mam static - note subcomponent level :MAKE: equivalent - make install - make all - exec - ${MAMAKE} -r '*' ${MAMAKEARGS} - done all virtual - done install virtual - ! - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - else (( m++ )) - $(MAKE) $(package.mam) > $tmp/$m.mam - $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam - echo ";;;$tmp/$m.mam;$i/Mamfile" - fi - fi - $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?) - fi - done - set -- $(package.dir:P=G) - for i - do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - $(CMP) $(CMPFLAGS) $tmp/README $(PACKAGEROOT)/README && touch -r $(PACKAGEROOT)/README $tmp/README - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - -wvf $(source) $(base) \ - $(op:N=delta:?--format=gzip??) \ - $(PACKAGEVIEW:C%.*%-s",^&/,,"%) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - echo local > $(source:D:B=$(name):S=.tim) - if [[ '$(incremental)' == 1 && '$(old.source)' ]] - then $(PAX) -rf $(source) -wvf $(old.new.source) -z $(old.source) - $(SUM) -x $(checksum) < $(old.new.source) > $(old.new.source:D:B:S=.$(checksum)) - fi - rm -rf $tmp - else if [[ '$(old.source)' ]] && $(CMP) $(CMPFLAGS) $(source.$(name)) $(source) - then : $(name) is up to date - else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - : > $(PACKAGEGEN)/$(name).req - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - echo '.xx title="$(name) package"' - echo '.xx meta.description="$(name) package"' - echo '.xx meta.keywords="software, package"' - echo '.MT 4' - echo '.TL' - echo '$(name) package' - echo '.H 1' - echo '$($(name).README)' - } | - $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $(PACKAGEGEN)/$(name).html - if [[ '$(source.$(name))' ]] - then { - echo '$($(name).README)' - package help source - } > $(PACKAGEGEN)/$(name).README - cp $(source.$(name)) $(source) - $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) - fi - echo local > $(source:D:B=$(name):S=.tim) - fi - fi - -binary : .binary.init .binary.gen .binary.$$(style) - -.binary.init : .MAKE - local A B D I P V - type := binary - if ! "$(incremental)" - incremental = 0 - end - if ! "$(~$(name))" - if name == "ratz" - suffix = exe - else - suffix = gz - end - end - : $(.init.$(style)) : - : $(details.$(style):V:R) : - A := $(binary.list) - B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - binary := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) - version := $(binary:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)\.\([^.]*\).*/\1/) - if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" - old.version := $(V) - old.binary := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - binary := $(B) - end - if B == "$(binary)" - if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(binary:B:/$(name).//:/\..*//) - end - PACKAGEGEN := $(PACKAGEBIN)/gen - -.binary.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) - -.binary.exp .binary.pkg .binary.rpm : .MAKE - error 3 $(style): binary package style not supported yet - -.binary.cyg : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - integer m=0 o - { - echo '$($(name.original).README)' | fmt - cat <<'!' - $(readme.$(style):@?$$("\n")$$(readme.$$(style))??) - ! - } > $tmp/README1 - echo ";;;$tmp/README1;usr/share/doc/Cygwin/$(opt:/.$//).README" - { - echo '$($(name.original).README)' | fmt - cat <<'!' - $() - The remainder of this file is the README from the source package - that was used to generate this binary package. It describes - the source build hierarchy, not the current directory. - $() - $(package.readme) - ! - } > $tmp/README2 - echo ";;;$tmp/README2;usr/share/doc/$(opt)README" - package release $(name.original) > $tmp/RELEASE - echo ";;;$tmp/RELEASE;usr/share/doc/$(opt)RELEASE" - cat > $(binary:/.$(suffix)//).setup.hint <<'!' - category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) - requires: cygwin - sdesc: "$(index)" - ldesc: "$($(name.original).README)" - ! - set -- $(.package.licenses. --text $(name.original):N!=*.lic) - for i - do echo ";;;${i};usr/share/doc/$(opt)LICENSE-${i##*/}" - done - cat <<'!' - $(filter.$(style)) - ! - if [[ '$(postinstall.$(style):V:O=1:?1??)' ]] - then cat >$tmp/postinstall <<'!' - $("#")!/bin/sh - $(postinstall.$(style)) - ! - echo ";;;$tmp/postinstall;etc/postinstall/$(name).sh" - fi - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - --format=$(format) \ - --local \ - -wvf $(binary) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - rm -rf $tmp - fi - -.binary.lcl : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) - $(package.bin:U:T=F:/.*/echo ";;;&"$("\n")/) - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name).sum \ - --install=$(PACKAGEGEN)/$(name).ins \ - -wvf $(binary) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - rm -rf $tmp - fi - -.binary.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - if [[ '$(init)' == '$(name)' ]] - then for i in lib32 lib64 - do if [[ -d $(INSTALLROOT)/$i ]] - then echo ";physical;;$(INSTALLROOT)/$i" - fi - done - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] - then echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lic pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - } | fmt - package help binary - package release $(name) - } > $(PACKAGEGEN)/$(name).README - echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" - fi - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name).sum \ - --install=$(PACKAGEGEN)/$(name).ins \ - -wvf $(binary) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - if [[ '$(incremental)' == 1 && '$(old.binary)' ]] - then $(PAX) -rf $(binary) -wvf $(old.new.binary) -z $(old.binary) - echo $(old.new.binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(old.new.binary) > $(old.new.binary:D:B:S=.$(checksum)) - echo $(old.new.binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - rm -rf $tmp - else if [[ '$(binary.$(name))' ]] - then exe=$(binary.$(name)) - else exe=$(INSTALLROOT)/bin/$(name) - fi - if [[ '$(old.binary)' ]] && $(CMP) $(CMPFLAGS) $exe $(binary) - then : $(name) is up to date - else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - : > $(PACKAGEGEN)/$(name).req - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - echo '$($(name).README)' - package help binary - } > $(PACKAGEGEN)/$(name).README - case "$(binary)" in - *.gz) gzip < $exe > $(binary) ;; - *) cp $exe $(binary) ;; - esac - $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) - echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) - fi - echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - -runtime : .runtime.init .runtime.gen .runtime.$$(style) - -.runtime.init : .MAKE - local A B D I P V - type := runtime - if ! "$(incremental)" - incremental = 0 - end - if ! "$(~$(name))" - if name == "ratz" - suffix = exe - else - suffix = gz - end - end - : $(.init.$(style)) : - : $(details.$(style):V:R) : - A := $(runtime.list) - B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) - P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) - D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) - if op == "delta" - if ! B - error 3 delta requires a base archive - end - base := -z $(B) - if "$(release)" != "$(stamp)" - release := $("":T=R%Y-%m-%d) - end - runtime := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) - version := $(runtime:B:B:/$(name).//) - elif B || op == "base" - if op == "base" - for I $(B) $(P) - V := $(I:B:/$(name)-run\.\([^.]*\).*/\1/) - if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" - old.version := $(V) - old.runtime := $(I) - if "$(old.version)" >= "$(version)" - error 3 $(name): previous base $(old.version) is newer than $(version) - end - break - end - end - else - runtime := $(B) - end - if B == "$(runtime)" - if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" - error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) - end - error 1 $(B:B:S): replacing current base - end - version := $(runtime:B:/$(name)-run.//:/\..*//) - end - PACKAGEGEN := $(PACKAGESRC)/gen - -.runtime.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) - -.runtime.cyg .runtime.exp .runtime.lcl .runtime.pkg .runtime.rpm : .MAKE - error 3 $(style): runtime package style not supported yet - -.runtime.tgz : - if [[ '$(~$(name))' ]] - then tmp=/tmp/pkg$(tmp) - mkdir $tmp - { - if [[ '$(init)' == '$(name)' ]] - then for i in lib32 lib64 - do if [[ -d $(INSTALLROOT)/$i ]] - then echo ";physical;;$(INSTALLROOT)/$i" - fi - done - fi - $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) - $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) - echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver - echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" - if [[ '$(~covers)' ]] - then for i in $(~covers) - do for j in lic pkg - do if [[ -f $(PACKAGESRC)/$i.$j ]] - then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - for j in ver req - do if [[ -f $(PACKAGEGEN)/$i.$j ]] - then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" - fi - done - done - for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) - do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" - done - fi - sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req - echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" - { - echo "name='$(name)'" - echo "index='$(index)'" - echo "covers='$(~covers)'" - echo "requires='$(~req)'" - } > $(PACKAGEGEN)/$(name).inx - { - { - echo '$($(name).README)' - if [[ '$(~covers)' ]] - then echo - echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)." - fi - if [[ '$(~requires)' ]] - then echo - echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' - fi - echo - echo "To install this $(type) package read the tarball into a directory" - echo "suitable for containing bin and lib subdirectories, and run the" - echo "$(PACKAGELIB)/gen/$(name)-run.ins script to fix up permissions." - echo - echo "To use the package export the bin directory in PATH. The commands and" - echo "libraries use \$PATH to locate dynamic libraries and related data files." - echo - } | fmt - } > $(PACKAGEGEN)/$(name)-run.README - echo ";;;$(PACKAGEGEN)/$(name)-run.README;$(PACKAGELIB)/$(name)-run.README" - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- - done - } | - { - : > $tmp/HEAD - [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" - cat > $tmp/README <<'!' - $(package.readme) - ! - echo ";;;$tmp/README;README" - sort -t';' -k5,5 -u - : > $tmp/TAIL - [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" - } | - $(PAX) --filter=- \ - --to=ascii \ - $(op:N=delta:??--format=$(format)?) \ - --local \ - --checksum=md5:$(PACKAGEGEN)/$(name)-run.sum \ - --install=$(PACKAGEGEN)/$(name)-run.ins \ - -wvf $(runtime) $(base) \ - $(op:N=delta:?--format=gzip??) \ - -s",^$tmp/,$(INSTALLOFFSET)/," \ - $(PACKAGEROOT:C%.*%-s",^&/,,"%) - echo $(runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(runtime) > $(runtime:D:B:S=.$(checksum)) - echo $(runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - echo local > $(runtime:D:B=$(name)-run:S=.$(CC.HOSTTYPE).tim) - if [[ '$(incremental)' == 1 && '$(old.runtime)' ]] - then $(PAX) -rf $(runtime) -wvf $(old.new.runtime) -z $(old.runtime) - echo $(old.new.runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - $(SUM) -x $(checksum) < $(old.new.runtime) > $(old.new.runtime:D:B:S=.$(checksum)) - echo $(old.new.runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) - fi - rm -rf $tmp - fi - -list.installed list.manifest : - set -- $(package.closure) - for i - do cd $(INSTALLROOT)/$i - ignore $(MAKE) --noexec $(-) $(=) $(<) - done diff --git a/src/cmd/INIT/package.sh b/src/cmd/INIT/package.sh index f1c70b753..4082d4408 100644 --- a/src/cmd/INIT/package.sh +++ b/src/cmd/INIT/package.sh @@ -136,10 +136,12 @@ all_types='*.*|sun4' # all but sun4 match *.* case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in 0123) USAGE=$' [-? -@(#)$Id: package (AT&T Research) 2012-06-28 $ +@(#)$Id: package (ksh 93u+m) 2021-05-11 $ ] [-author?Glenn Fowler ] -[-copyright?Copyright (c) 1994-2012 AT&T Intellectual Property] +[-author?Contributors to https://github.com/ksh93/ksh] +[-copyright?(c) 1994-2012 AT&T Intellectual Property] +[-copyright?(c) 2020-2021 Contributors to https://github.com/ksh93/ksh] [-license?http://www.eclipse.org/org/documents/epl-v10.html] [+NAME?package - source and binary package control] [+DESCRIPTION?The \bpackage\b command controls source and binary @@ -609,8 +611,6 @@ ifs=${IFS-' lo= make= makeflags='-K' -nmakeflags= -nmakesep= nl=" " noexec= @@ -1645,17 +1645,6 @@ onpath() # command return 1 } -# true if no nmake or nmake not from AT&T or nmake too old - -nonmake() # nmake -{ - _nonmake_version=`( $1 -n -f - 'print $(MAKEVERSION:@/.*AT&T.* //:/-//G:@/.* .*/19960101/)' . ) /dev/null || echo 19840919` - if test $_nonmake_version -lt 20001031 - then return 0 - fi - return 1 -} - # determine local host attributes hostinfo() # attribute ... @@ -2715,8 +2704,7 @@ case $x in OK=ok KSH=$EXECROOT/bin/ksh - MAKE=nmake - NMAKE=$EXECROOT/bin/$MAKE + MAKE=mamake SUM=$EXECROOT/bin/sum TEE=$EXECROOT/bin/tee INITROOT=$PACKAGEROOT/src/cmd/INIT @@ -3106,7 +3094,7 @@ cat $INITROOT/$i.sh $show export PATH export PATH ;; - *) for i in package proto nmake + *) for i in package proto do if onpath $i then EXECROOT=`echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,'` EXECTYPE=`echo $EXECROOT | sed -e 's,.*/,,'` @@ -3143,8 +3131,7 @@ cat $INITROOT/$i.sh OK=ok KSH=$EXECROOT/bin/ksh - MAKE=nmake - NMAKE=$EXECROOT/bin/$MAKE + MAKE=mamake SUM=$EXECROOT/bin/sum TEE=$EXECROOT/bin/tee @@ -3537,44 +3524,41 @@ int main(int argc, char** argv) { return argc || argv; } echo "$command: $INITROOT: INIT package source not found" >&2 return 1 } - executable $INSTALLROOT/bin/nmake || { - # check for prototyping cc - # NOTE: proto.c must be K&R compatible - $CC -c $INITROOT/p.c >/dev/null 2>&1 - c=$? - rm -f p.* - test 0 != "$c" && { - checkaout proto || return - PROTOROOT=$PACKAGEROOT/proto - $show PROTOROOT=$PACKAGEROOT/proto - export PROTOROOT - INITPROTO=$PROTOROOT/src/cmd/INIT - note proto convert $PACKAGEROOT/src into $PROTOROOT/src - if test -d $PACKAGEROOT/src/cmd/nmake - then dirs="src/cmd/INIT src/lib/libast src/lib/libardir src/lib/libpp src/cmd/probe src/cmd/cpp src/cmd/nmake" - else dirs="src" + # check for prototyping cc + # NOTE: proto.c must be K&R compatible + + $CC -c $INITROOT/p.c >/dev/null 2>&1 + c=$? + rm -f p.* + test 0 != "$c" && { + checkaout proto || return + PROTOROOT=$PACKAGEROOT/proto + $show PROTOROOT=$PACKAGEROOT/proto + export PROTOROOT + INITPROTO=$PROTOROOT/src/cmd/INIT + note proto convert $PACKAGEROOT/src into $PROTOROOT/src + dirs="src" + ( + if test -f $PROTOROOT/UPDATE + then newer="-newer $PROTOROOT/UPDATE" + else newer="" fi - ( - if test -f $PROTOROOT/UPDATE - then newer="-newer $PROTOROOT/UPDATE" - else newer="" - fi - case $exec in - '') cd $PACKAGEROOT - find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto - ;; - *) $exec cd $PACKAGEROOT - $exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto" - ;; - esac - $exec touch $PROTOROOT/UPDATE - ) - VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH - $show VPATH=$VPATH - export VPATH - } + case $exec in + '') cd $PACKAGEROOT + find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto + ;; + *) $exec cd $PACKAGEROOT + $exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto" + ;; + esac + $exec touch $PROTOROOT/UPDATE + ) + VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH + $show VPATH=$VPATH + export VPATH } + for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return done @@ -5925,10 +5909,7 @@ cat $j $k *-*) a= for t in $target do case $t in - -[eiknFKNV]*|--*-symbols) - makeflags="$makeflags $t" - ;; - -*) nmakeflags="$nmakeflags $t" + -*) makeflags="$makeflags $t" ;; *) a="$a $t" ;; @@ -5938,76 +5919,6 @@ cat $j $k ;; esac - # generate nmake first if possible - - if executable ! $NMAKE && test -d $PACKAGEROOT/src/cmd/nmake - then if nonmake $MAKE - then note make $NMAKE with mamake - c=$CC - a=$assign - case $HOSTTYPE in - win32*|cygwin*) - CC="$CC -D_BLD_STATIC" - accept="libast" - case $assign in - *' CC='*) ;; - *) assign="$assign CC=\"\$CC\"" ;; - esac - ;; - *) accept=nmake - ;; - esac - eval capture mamake \$makeflags \$nmakeflags \$noexec install nmake $assign - assign=$a - CC=$c - case $make$noexec in - '') if executable ! $NMAKE - then echo "$command: $action: errors making $NMAKE" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - if test '' != "$PROTOROOT" - then VPATH=$INSTALLROOT:$PACKAGEROOT$USER_VPATH - $show VPATH=$VPATH - export VPATH - fi - note believe generated files for $accept - eval capture \$NMAKE \$makeflags \$nmakeflags \$noexec recurse believe \$nmakesep $accept $assign - $exec touch $INSTALLROOT/bin/.paths - note make the remaining targets with $NMAKE - else eval capture $MAKE \$makeflags \$nmakeflags \$noexec install nmake $assign - case $make$noexec in - '') if executable ! $NMAKE - then echo "$command: $action: errors making $NMAKE" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - fi - fi - - # generate ksh next if possible - - if nonmake $MAKE - then : no need to generate ksh next -- it could be the only package - elif test "$KEEP_SHELL" != 1 -a -d $PACKAGEROOT/src/cmd/ksh93 && executable ! $KSH - then eval capture nmake $nmakeflags \$makeflags \$noexec install ksh93 $assign - case $make$noexec in - '') if executable ! $KSH - then echo "$command: $action: errors making $KSH" >&2 - exit 1 - fi - ;; - *) make=echo - ;; - esac - fi - # mamprobe data should have been generated by this point case $exec in @@ -6082,7 +5993,7 @@ cat $j $k ;; esac - # run from separate copies since nmake and ksh may be rebuilt + # run from separate copies since ksh may be rebuilt case $EXECROOT in $INSTALLROOT) @@ -6100,7 +6011,7 @@ cat $j $k else rm=rm fi for i in \ - ksh nmake tee cp ln mv rm \ + ksh tee cp ln mv rm \ *ast*.dll *cmd*.dll *dll*.dll *shell*.dll do executable $i && { cmp -s $i $OK/$i 2>/dev/null || { @@ -6110,7 +6021,7 @@ cat $j $k $exec $execrate $mv $OK/$i $OK/$i.old &2 exit 1 ;; @@ -6124,9 +6035,6 @@ cat $j $k $exec $execrate $cp -p ../lib/make/makerules.mo $OK/lib/makerules.mo || $exec $execrate $cp ../lib/make/makerules.mo $OK/lib/makerules.mo fi - if executable $OK/nmake - then MAKE="$INSTALLROOT/bin/$OK/nmake LOCALRULESPATH=$INSTALLROOT/bin/$OK/lib" - fi if executable $OK/tee then TEE=$INSTALLROOT/bin/$OK/tee fi @@ -6145,19 +6053,13 @@ cat $j $k ;; esac - # fall back to mamake if nmake not found or too old + # build with mamake - if nonmake $MAKE - then note make with mamake - case $target in - '') target="install" ;; - esac - eval capture mamake \$makeflags \$noexec \$target $assign - else case $target in - '') target="install cc-" ;; - esac - eval capture \$MAKE \$makeflags \$nmakeflags \$noexec recurse \$target \$nmakesep \$package $assign - fi + note make with mamake + case $target in + '') target="install" ;; + esac + eval capture mamake \$makeflags \$noexec \$target $assign ;; read) case ${PWD:-`pwd`} in @@ -6811,32 +6713,8 @@ results)set '' $target esac ;; -test) requirements source $package - components $package - package=$_components_ - case $only in - 0) only= ;; - 1) only=--recurse=only ;; - esac - - # must have nmake - - if nonmake $MAKE - then echo $command: $action: must have $MAKE to test >&2 - exit 1 - fi - - # all work under $INSTALLROOT/src - - $make cd $INSTALLROOT/src - - # disable core dumps (could be disastrous over nfs) - - (ulimit -c 0) > /dev/null 2>&1 && ulimit -c 0 - - # do the tests - - eval capture \$MAKE \$makeflags \$noexec \$only recurse test \$target \$nmakesep \$package $assign +test) # pass control to ksh 93u+m test script + exec "$PACKAGEROOT/bin/shtests" ;; update) # download the latest release.version for selected packages @@ -7446,10 +7324,9 @@ write) set '' $target exit 1 ;; esac - if nonmake $MAKE - then echo "$command: must have $MAKE to generate archives" >&2 - exit 1 - fi + + echo "$command: not yet reimplemented after removing nmake" >&2 + exit 1 # all work under $PACKAGEBIN