1*b4dd7d09SAndy Fiddaman/* 2*b4dd7d09SAndy Fiddaman * source and binary package support 3*b4dd7d09SAndy Fiddaman * 4*b4dd7d09SAndy Fiddaman * @(#)package.mk (AT&T Research) 2012-02-14 5*b4dd7d09SAndy Fiddaman * 6*b4dd7d09SAndy Fiddaman * usage: 7*b4dd7d09SAndy Fiddaman * 8*b4dd7d09SAndy Fiddaman * cd $INSTALLROOT/lib/package 9*b4dd7d09SAndy Fiddaman * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type 10*b4dd7d09SAndy Fiddaman * 11*b4dd7d09SAndy Fiddaman * where: 12*b4dd7d09SAndy Fiddaman * 13*b4dd7d09SAndy Fiddaman * name package description file or component 14*b4dd7d09SAndy Fiddaman * 15*b4dd7d09SAndy Fiddaman * type source build source archive, generates 16*b4dd7d09SAndy Fiddaman * $(PACKAGEDIR)/name.version.release.suffix 17*b4dd7d09SAndy Fiddaman * binary build binary archive, generates 18*b4dd7d09SAndy Fiddaman * $(PACKAGEDIR)/name.version.hosttype.release.suffix 19*b4dd7d09SAndy Fiddaman * runtime build binary archive, generates 20*b4dd7d09SAndy Fiddaman * $(PACKAGEDIR)/name-run.version.hosttype.release.suffix 21*b4dd7d09SAndy Fiddaman * 22*b4dd7d09SAndy Fiddaman * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views 23*b4dd7d09SAndy Fiddaman * 24*b4dd7d09SAndy Fiddaman * generated archive member files are $(PACKAGEROOT) relative 25*b4dd7d09SAndy Fiddaman * 26*b4dd7d09SAndy Fiddaman * main assertions: 27*b4dd7d09SAndy Fiddaman * 28*b4dd7d09SAndy Fiddaman * NAME [ name=value ] :PACKAGE: component ... 29*b4dd7d09SAndy Fiddaman * :OMIT: component ... 30*b4dd7d09SAndy Fiddaman * :LICENSE: license-class-pattern 31*b4dd7d09SAndy Fiddaman * :CATEGORY: category-id ... 32*b4dd7d09SAndy Fiddaman * :COVERS: package ... 33*b4dd7d09SAndy Fiddaman * :REQURES: package ... 34*b4dd7d09SAndy Fiddaman * :INDEX: index description line 35*b4dd7d09SAndy Fiddaman * :DESCRIPTION: 36*b4dd7d09SAndy Fiddaman * [ verbose description ] 37*b4dd7d09SAndy Fiddaman * :DETAILS: style 38*b4dd7d09SAndy Fiddaman * :README: 39*b4dd7d09SAndy Fiddaman * readme lines 40*b4dd7d09SAndy Fiddaman * :EXPORT: 41*b4dd7d09SAndy Fiddaman * name=value 42*b4dd7d09SAndy Fiddaman * target :INSTALL: [ source ] 43*b4dd7d09SAndy Fiddaman * 44*b4dd7d09SAndy Fiddaman * option variables, shown with default values 45*b4dd7d09SAndy Fiddaman * 46*b4dd7d09SAndy Fiddaman * format=tgz 47*b4dd7d09SAndy Fiddaman * archive format 48*b4dd7d09SAndy Fiddaman * 49*b4dd7d09SAndy Fiddaman * version=YYYY-MM-DD 50*b4dd7d09SAndy Fiddaman * package base version (overrides current date) 51*b4dd7d09SAndy Fiddaman * 52*b4dd7d09SAndy Fiddaman * release=YYYY-MM-DD 53*b4dd7d09SAndy Fiddaman * package delta release (overrides current date) 54*b4dd7d09SAndy Fiddaman * 55*b4dd7d09SAndy Fiddaman * license=type.class 56*b4dd7d09SAndy Fiddaman * :LICENSE: type.class pattern override 57*b4dd7d09SAndy Fiddaman * 58*b4dd7d09SAndy Fiddaman * notice=1 59*b4dd7d09SAndy Fiddaman * include the conspicuous empty notice file 60*b4dd7d09SAndy Fiddaman * 61*b4dd7d09SAndy Fiddaman * copyright=0 62*b4dd7d09SAndy Fiddaman * do not prepend source file copyright notice 63*b4dd7d09SAndy Fiddaman * 64*b4dd7d09SAndy Fiddaman * strip=0 65*b4dd7d09SAndy Fiddaman * don't strip non-lcl binary package members 66*b4dd7d09SAndy Fiddaman * 67*b4dd7d09SAndy Fiddaman * variants=pattern 68*b4dd7d09SAndy Fiddaman * include variants matching pattern in binary packages 69*b4dd7d09SAndy Fiddaman * 70*b4dd7d09SAndy Fiddaman * incremental=[source:1 binary:0] 71*b4dd7d09SAndy Fiddaman * if a base archive is generated then also generate an 72*b4dd7d09SAndy Fiddaman * incremental delta archive from the previous base 73*b4dd7d09SAndy Fiddaman * 74*b4dd7d09SAndy Fiddaman * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when 75*b4dd7d09SAndy Fiddaman * a target is specified 76*b4dd7d09SAndy Fiddaman */ 77*b4dd7d09SAndy Fiddaman 78*b4dd7d09SAndy Fiddaman/* these are ast centric -- we'll parameterize another day */ 79*b4dd7d09SAndy Fiddaman 80*b4dd7d09SAndy Fiddamanorg = ast 81*b4dd7d09SAndy Fiddamanurl = http://www.research.att.com/sw/download 82*b4dd7d09SAndy Fiddaman 83*b4dd7d09SAndy Fiddaman/* generic defaults */ 84*b4dd7d09SAndy Fiddaman 85*b4dd7d09SAndy Fiddamanbase = 86*b4dd7d09SAndy Fiddamancategory = utils 87*b4dd7d09SAndy Fiddamanchecksum = md5 88*b4dd7d09SAndy Fiddamanclosure = 89*b4dd7d09SAndy Fiddamancopyright = 1 90*b4dd7d09SAndy Fiddamandelta = 91*b4dd7d09SAndy Fiddamanformat = tgz 92*b4dd7d09SAndy Fiddamanincremental = 93*b4dd7d09SAndy Fiddamanindex = 94*b4dd7d09SAndy Fiddamaninit = INIT 95*b4dd7d09SAndy Fiddamanlicense = 96*b4dd7d09SAndy Fiddamanlicenses = $(org) 97*b4dd7d09SAndy Fiddamanmamfile = 1 98*b4dd7d09SAndy Fiddamanopt = 99*b4dd7d09SAndy Fiddamanname = 100*b4dd7d09SAndy Fiddamannotice = 101*b4dd7d09SAndy Fiddamanrelease = 102*b4dd7d09SAndy Fiddamanstrip = 0 103*b4dd7d09SAndy Fiddamanstyle = tgz 104*b4dd7d09SAndy Fiddamansuffix = tgz 105*b4dd7d09SAndy Fiddamantype = 106*b4dd7d09SAndy Fiddamanvariants = !(cc-g) 107*b4dd7d09SAndy Fiddamanvendor = 108*b4dd7d09SAndy Fiddamanversion = $("":T=R%Y-%m-%d) 109*b4dd7d09SAndy Fiddaman 110*b4dd7d09SAndy FiddamanSUM = sum 111*b4dd7d09SAndy Fiddaman 112*b4dd7d09SAndy Fiddamanpackage.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------ 113*b4dd7d09SAndy Fiddaman 114*b4dd7d09SAndy Fiddamanpackage.readme = $(@.package.readme.) 115*b4dd7d09SAndy Fiddaman 116*b4dd7d09SAndy Fiddaman.package.readme. : 117*b4dd7d09SAndy Fiddaman This is a package root directory $PACKAGEROOT. Source and binary 118*b4dd7d09SAndy Fiddaman packages in this directory tree are controlled by the command 119*b4dd7d09SAndy Fiddaman $() 120*b4dd7d09SAndy Fiddaman bin/package 121*b4dd7d09SAndy Fiddaman $() 122*b4dd7d09SAndy Fiddaman Binary files may be in this directory or in the install root directory 123*b4dd7d09SAndy Fiddaman $() 124*b4dd7d09SAndy Fiddaman INSTALLROOT=$PACKAGEROOT/arch/`bin/package` 125*b4dd7d09SAndy Fiddaman $() 126*b4dd7d09SAndy Fiddaman For more information run 127*b4dd7d09SAndy Fiddaman $() 128*b4dd7d09SAndy Fiddaman bin/package help 129*b4dd7d09SAndy Fiddaman $() 130*b4dd7d09SAndy Fiddaman Many of the packaged commands self-document via the --man and --html 131*b4dd7d09SAndy Fiddaman options; those that do have no separate man page. 132*b4dd7d09SAndy Fiddaman $() 133*b4dd7d09SAndy Fiddaman Each package is covered by one of the license files 134*b4dd7d09SAndy Fiddaman $() 135*b4dd7d09SAndy Fiddaman $(PACKAGELIB)/LICENSES/<license> 136*b4dd7d09SAndy Fiddaman $() 137*b4dd7d09SAndy Fiddaman where <license> is the license type for the package. At the top 138*b4dd7d09SAndy Fiddaman of each license file is a URL; the license covers all software that 139*b4dd7d09SAndy Fiddaman refers to this URL. For details run 140*b4dd7d09SAndy Fiddaman $() 141*b4dd7d09SAndy Fiddaman bin/package license [<package>] 142*b4dd7d09SAndy Fiddaman $() 143*b4dd7d09SAndy Fiddaman Any archives, distributions or packages made from source or 144*b4dd7d09SAndy Fiddaman binaries covered by license(s) must contain the corresponding 145*b4dd7d09SAndy Fiddaman license file(s)$(notice:?, this README file, and the empty file$$("\n")$$(package.notice)?.?) 146*b4dd7d09SAndy Fiddaman 147*b4dd7d09SAndy Fiddaman.package.licenses. : .FUNCTION 148*b4dd7d09SAndy Fiddaman local I F L R T all save text 149*b4dd7d09SAndy Fiddaman L := $(%) 150*b4dd7d09SAndy Fiddaman while L == "--*" 151*b4dd7d09SAndy Fiddaman I := $(L:O=1) 152*b4dd7d09SAndy Fiddaman if I == "--all" 153*b4dd7d09SAndy Fiddaman all = 1 154*b4dd7d09SAndy Fiddaman elif I == "--save" 155*b4dd7d09SAndy Fiddaman save = 1 156*b4dd7d09SAndy Fiddaman elif I == "--text" 157*b4dd7d09SAndy Fiddaman text = 1 158*b4dd7d09SAndy Fiddaman end 159*b4dd7d09SAndy Fiddaman L := $(L:O>1) 160*b4dd7d09SAndy Fiddaman end 161*b4dd7d09SAndy Fiddaman if "$(L)" == "*-*" 162*b4dd7d09SAndy Fiddaman L += $(L:/[^-]*-//) $(L:/-.*//) 163*b4dd7d09SAndy Fiddaman end 164*b4dd7d09SAndy Fiddaman L += $(licenses) 165*b4dd7d09SAndy Fiddaman for I $(L:U) 166*b4dd7d09SAndy Fiddaman if I == "gpl" 167*b4dd7d09SAndy Fiddaman I = gnu 168*b4dd7d09SAndy Fiddaman all = 169*b4dd7d09SAndy Fiddaman end 170*b4dd7d09SAndy Fiddaman if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)" 171*b4dd7d09SAndy Fiddaman R += $(F) 172*b4dd7d09SAndy Fiddaman if save || text 173*b4dd7d09SAndy Fiddaman T := $(.FIND. lib/package .lic $(F):P=W,query=type) 174*b4dd7d09SAndy Fiddaman R += $(T:D=$(PACKAGESRC)/LICENSES:B) 175*b4dd7d09SAndy Fiddaman end 176*b4dd7d09SAndy Fiddaman if save 177*b4dd7d09SAndy Fiddaman R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F) 178*b4dd7d09SAndy Fiddaman elif ! all 179*b4dd7d09SAndy Fiddaman break 180*b4dd7d09SAndy Fiddaman end 181*b4dd7d09SAndy Fiddaman end 182*b4dd7d09SAndy Fiddaman end 183*b4dd7d09SAndy Fiddaman return $(R) 184*b4dd7d09SAndy Fiddaman 185*b4dd7d09SAndy Fiddaman/* 186*b4dd7d09SAndy Fiddaman * glob(3) doesn't handle / in alternation -- should it? 187*b4dd7d09SAndy Fiddaman */ 188*b4dd7d09SAndy Fiddaman 189*b4dd7d09SAndy Fiddaman.package.glob. : .FUNCTION 190*b4dd7d09SAndy Fiddaman local A D I P S 191*b4dd7d09SAndy Fiddaman for I $(%) 192*b4dd7d09SAndy Fiddaman if I == "*/*" 193*b4dd7d09SAndy Fiddaman D := $(I:C,/.*,,) 194*b4dd7d09SAndy Fiddaman if ! "$(A:N=$(D))" 195*b4dd7d09SAndy Fiddaman local S.$(D) 196*b4dd7d09SAndy Fiddaman A += $(D) 197*b4dd7d09SAndy Fiddaman end 198*b4dd7d09SAndy Fiddaman S.$(D) += $(I:C,[^/]*/,,) 199*b4dd7d09SAndy Fiddaman else 200*b4dd7d09SAndy Fiddaman P := $(P)$(S)$(I) 201*b4dd7d09SAndy Fiddaman end 202*b4dd7d09SAndy Fiddaman S = | 203*b4dd7d09SAndy Fiddaman end 204*b4dd7d09SAndy Fiddaman if P == "*\|*" 205*b4dd7d09SAndy Fiddaman P := ($(P)) 206*b4dd7d09SAndy Fiddaman end 207*b4dd7d09SAndy Fiddaman for I $(A) 208*b4dd7d09SAndy Fiddaman P += $(I)/$(.package.glob. $(S.$(I))) 209*b4dd7d09SAndy Fiddaman end 210*b4dd7d09SAndy Fiddaman return $(P) 211*b4dd7d09SAndy Fiddaman 212*b4dd7d09SAndy Fiddaman 213*b4dd7d09SAndy Fiddaman.MAKEINIT : .package.init 214*b4dd7d09SAndy Fiddaman 215*b4dd7d09SAndy Fiddaman.package.init : .MAKE .VIRTUAL .FORCE 216*b4dd7d09SAndy Fiddaman local V 217*b4dd7d09SAndy Fiddaman V := $(VROOT:T=F:P=L*) 218*b4dd7d09SAndy Fiddaman if ! PACKAGEROOT 219*b4dd7d09SAndy Fiddaman PACKAGEROOT := $(V:N!=*/arch/+([!/]):O=1) 220*b4dd7d09SAndy Fiddaman end 221*b4dd7d09SAndy Fiddaman if V == "$(PACKAGEROOT)" 222*b4dd7d09SAndy Fiddaman V := 223*b4dd7d09SAndy Fiddaman end 224*b4dd7d09SAndy Fiddaman V += $(INSTALLROOT) $(PACKAGEROOT) 225*b4dd7d09SAndy Fiddaman PACKAGEVIEW := $(V:H=RU) 226*b4dd7d09SAndy Fiddaman INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%) 227*b4dd7d09SAndy Fiddaman if license 228*b4dd7d09SAndy Fiddaman license := $(license)|none.none 229*b4dd7d09SAndy Fiddaman end 230*b4dd7d09SAndy Fiddaman 231*b4dd7d09SAndy FiddamanPACKAGELIB = lib/package 232*b4dd7d09SAndy FiddamanPACKAGESRC = $(PACKAGEROOT)/$(PACKAGELIB) 233*b4dd7d09SAndy FiddamanPACKAGEBIN = $(INSTALLROOT)/$(PACKAGELIB) 234*b4dd7d09SAndy FiddamanPACKAGEDIR = $(PACKAGESRC)/$(style) 235*b4dd7d09SAndy FiddamanINSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%) 236*b4dd7d09SAndy Fiddaman 237*b4dd7d09SAndy Fiddamanpackage.omit = -|*/$(init) 238*b4dd7d09SAndy Fiddamanpackage.glob.all = $(INSTALLROOT)/src/*/*/($(MAKEFILES:/:/|/G)) 239*b4dd7d09SAndy Fiddamanpackage.all = $(package.glob.all:P=G:W=O=$(?$(name):A=.VIRTUAL):N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) 240*b4dd7d09SAndy Fiddamanpackage.glob.pkg = $(.package.glob. $(~$(name):P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%) $(~$(name):P=U:N=$(name):?$$(INSTALLROOT)/src/$$(name)/($$(MAKEFILES:/:/|/G))??) 241*b4dd7d09SAndy Fiddamanpackage.pkg = $(package.glob.pkg:P=G:D:N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U) 242*b4dd7d09SAndy Fiddamanpackage.closure = $(closure:?$$(package.all)?$$(package.pkg)?) 243*b4dd7d09SAndy Fiddaman 244*b4dd7d09SAndy Fiddamanpackage.init = $(.package.glob. $("$(init)$(name)":P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%:P=G:T=F:D::B) 245*b4dd7d09SAndy Fiddamanpackage.ini = ignore mamprobe manmake package silent 246*b4dd7d09SAndy Fiddamanpackage.src.pat = $(PACKAGESRC)/($(name).(ini|pkg)) 247*b4dd7d09SAndy Fiddamanpackage.src = $(package.src.pat:P=G) $(.package.licenses. --save $(name)) 248*b4dd7d09SAndy Fiddamanpackage.bin = $(PACKAGEBIN)/$(name).ini 249*b4dd7d09SAndy Fiddaman 250*b4dd7d09SAndy Fiddamanpackage.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 251*b4dd7d09SAndy Fiddaman 252*b4dd7d09SAndy Fiddamanop = current 253*b4dd7d09SAndy Fiddamanstamp = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 254*b4dd7d09SAndy Fiddamansource = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(suffix) 255*b4dd7d09SAndy Fiddamanbinary = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) 256*b4dd7d09SAndy Fiddamanruntime = $(PACKAGEDIR)/$(name)-run.$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix) 257*b4dd7d09SAndy Fiddamanold.new.source = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(suffix) 258*b4dd7d09SAndy Fiddamanold.new.binary = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) 259*b4dd7d09SAndy Fiddamanold.new.runtime = $(PACKAGEDIR)/$(name)-run.$(version).$(old.version).$(CC.HOSTTYPE).$(suffix) 260*b4dd7d09SAndy Fiddaman 261*b4dd7d09SAndy Fiddamansource.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(suffix)":P=G:H=R) 262*b4dd7d09SAndy Fiddamanbinary.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H=R) 263*b4dd7d09SAndy Fiddamanruntime.list = $("$(PACKAGEDIR)/$(name)-run.*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H>) 264*b4dd7d09SAndy Fiddaman 265*b4dd7d09SAndy Fiddamansource.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F) 266*b4dd7d09SAndy Fiddamanbinary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F) 267*b4dd7d09SAndy Fiddaman 268*b4dd7d09SAndy Fiddaman$(init) : .VIRTUAL $(init) 269*b4dd7d09SAndy Fiddaman 270*b4dd7d09SAndy Fiddamanpackage.requires = 0 271*b4dd7d09SAndy Fiddaman 272*b4dd7d09SAndy Fiddaman":package:" : .MAKE .OPERATOR 273*b4dd7d09SAndy Fiddaman local P I R V 274*b4dd7d09SAndy Fiddaman P := $(<:O=1) 275*b4dd7d09SAndy Fiddaman $(P) : $(>:V) 276*b4dd7d09SAndy Fiddaman if ! package.requires 277*b4dd7d09SAndy Fiddaman if ! name 278*b4dd7d09SAndy Fiddaman name := $(P) 279*b4dd7d09SAndy Fiddaman .PACKAGE. := $(P) 280*b4dd7d09SAndy Fiddaman if name == "$(init)" 281*b4dd7d09SAndy Fiddaman package.omit = - 282*b4dd7d09SAndy Fiddaman package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk 283*b4dd7d09SAndy Fiddaman else 284*b4dd7d09SAndy Fiddaman $(P) : $(package.init) 285*b4dd7d09SAndy Fiddaman end 286*b4dd7d09SAndy Fiddaman for I $(<:O>1) 287*b4dd7d09SAndy Fiddaman if I == "*=*" 288*b4dd7d09SAndy Fiddaman eval 289*b4dd7d09SAndy Fiddaman $(I) 290*b4dd7d09SAndy Fiddaman end 291*b4dd7d09SAndy Fiddaman else 292*b4dd7d09SAndy Fiddaman version := $(I) 293*b4dd7d09SAndy Fiddaman end 294*b4dd7d09SAndy Fiddaman end 295*b4dd7d09SAndy Fiddaman LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G) 296*b4dd7d09SAndy Fiddaman export LICENSEFILEDEFAULT 297*b4dd7d09SAndy Fiddaman end 298*b4dd7d09SAndy Fiddaman if "$(>)" 299*b4dd7d09SAndy Fiddaman for I $(>:V) 300*b4dd7d09SAndy Fiddaman $(I) : .VIRTUAL 301*b4dd7d09SAndy Fiddaman if I == "/*" 302*b4dd7d09SAndy Fiddaman package.dir += $(I:V) 303*b4dd7d09SAndy Fiddaman end 304*b4dd7d09SAndy Fiddaman end 305*b4dd7d09SAndy Fiddaman end 306*b4dd7d09SAndy Fiddaman if "$(@)" 307*b4dd7d09SAndy Fiddaman $(P).README := $(@) 308*b4dd7d09SAndy Fiddaman else 309*b4dd7d09SAndy Fiddaman $(P).README := This is the $(P) package. 310*b4dd7d09SAndy Fiddaman end 311*b4dd7d09SAndy Fiddaman end 312*b4dd7d09SAndy Fiddaman 313*b4dd7d09SAndy Fiddaman":AUXILIARY:" : .MAKE .OPERATOR 314*b4dd7d09SAndy Fiddaman package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F) 315*b4dd7d09SAndy Fiddaman 316*b4dd7d09SAndy Fiddaman":CATEGORY:" : .MAKE .OPERATOR 317*b4dd7d09SAndy Fiddaman if ! package.requires 318*b4dd7d09SAndy Fiddaman category := $(>) 319*b4dd7d09SAndy Fiddaman end 320*b4dd7d09SAndy Fiddaman 321*b4dd7d09SAndy Fiddaman.covers. : .FUNCTION 322*b4dd7d09SAndy Fiddaman local I C D F K=0 L 323*b4dd7d09SAndy Fiddaman for I $(%) 324*b4dd7d09SAndy Fiddaman if ! "$(~covers:N=$(I:B))" 325*b4dd7d09SAndy Fiddaman if F = "$(I:D:B:S=.pkg:T=F)" 326*b4dd7d09SAndy Fiddaman if D = "$(F:T=I)" 327*b4dd7d09SAndy Fiddaman covers : $(I:B) 328*b4dd7d09SAndy Fiddaman for L $(D) 329*b4dd7d09SAndy Fiddaman if L == ":COVERS:" 330*b4dd7d09SAndy Fiddaman K = 1 331*b4dd7d09SAndy Fiddaman elif L == ":*:" 332*b4dd7d09SAndy Fiddaman if K 333*b4dd7d09SAndy Fiddaman break 334*b4dd7d09SAndy Fiddaman end 335*b4dd7d09SAndy Fiddaman elif K 336*b4dd7d09SAndy Fiddaman : $(.covers. $(L)) 337*b4dd7d09SAndy Fiddaman end 338*b4dd7d09SAndy Fiddaman end 339*b4dd7d09SAndy Fiddaman end 340*b4dd7d09SAndy Fiddaman else 341*b4dd7d09SAndy Fiddaman error $(--exec:?3?1?) $(I): unknown package $(I) 342*b4dd7d09SAndy Fiddaman end 343*b4dd7d09SAndy Fiddaman end 344*b4dd7d09SAndy Fiddaman end 345*b4dd7d09SAndy Fiddaman 346*b4dd7d09SAndy Fiddaman":COVERS:" : .MAKE .OPERATOR 347*b4dd7d09SAndy Fiddaman if ! package.requires 348*b4dd7d09SAndy Fiddaman : $(.covers. $(>)) 349*b4dd7d09SAndy Fiddaman end 350*b4dd7d09SAndy Fiddaman 351*b4dd7d09SAndy Fiddaman":DESCRIPTION:" : .MAKE .OPERATOR 352*b4dd7d09SAndy Fiddaman if ! package.requires 353*b4dd7d09SAndy Fiddaman $(name).README := $(@:V) 354*b4dd7d09SAndy Fiddaman end 355*b4dd7d09SAndy Fiddaman 356*b4dd7d09SAndy Fiddaman":DETAILS:" : .MAKE .OPERATOR 357*b4dd7d09SAndy Fiddaman if ! package.requires 358*b4dd7d09SAndy Fiddaman details.$(>:O=1) := $(@:V) 359*b4dd7d09SAndy Fiddaman end 360*b4dd7d09SAndy Fiddaman 361*b4dd7d09SAndy Fiddaman":EXPORT:" : .MAKE .OPERATOR 362*b4dd7d09SAndy Fiddaman if ! package.requires 363*b4dd7d09SAndy Fiddaman export.$(style) := $(@:/$$("\n")/ /G) 364*b4dd7d09SAndy Fiddaman end 365*b4dd7d09SAndy Fiddaman 366*b4dd7d09SAndy Fiddaman":INDEX:" : .MAKE .OPERATOR 367*b4dd7d09SAndy Fiddaman if ! package.requires 368*b4dd7d09SAndy Fiddaman index := $(>) 369*b4dd7d09SAndy Fiddaman end 370*b4dd7d09SAndy Fiddaman 371*b4dd7d09SAndy Fiddaman":INSTALL:" : .MAKE .OPERATOR 372*b4dd7d09SAndy Fiddaman if ! package.requires 373*b4dd7d09SAndy Fiddaman local T S F X 374*b4dd7d09SAndy Fiddaman S := $(>) 375*b4dd7d09SAndy Fiddaman T := $(<) 376*b4dd7d09SAndy Fiddaman if "$(exe.$(style))" && "$(T)" == "bin/*([!./])" 377*b4dd7d09SAndy Fiddaman T := $(T).exe 378*b4dd7d09SAndy Fiddaman end 379*b4dd7d09SAndy Fiddaman if ! "$(S)" 380*b4dd7d09SAndy Fiddaman S := $(T) 381*b4dd7d09SAndy Fiddaman elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])" 382*b4dd7d09SAndy Fiddaman S := $(S).exe 383*b4dd7d09SAndy Fiddaman end 384*b4dd7d09SAndy Fiddaman install.$(style) := $(install.$(style):V)$("\n")install : $$(ROOT)/$(T)$("\n")$$(ROOT)/$(T) : $$(ARCH)/$(S)$("\n\t")cp $< $@ 385*b4dd7d09SAndy Fiddaman if strip && "$(T:N=*.exe)" 386*b4dd7d09SAndy Fiddaman install.$(style) := $(install.$(style):V)$("\n\t")strip $@ 2>/dev/null 387*b4dd7d09SAndy Fiddaman end 388*b4dd7d09SAndy Fiddaman X := $(PACKAGEROOT)/arch/$(CC.HOSTTYPE)/$(S) 389*b4dd7d09SAndy Fiddaman if strip && "$(X:T=Y)" == "*/?(x-)(dll|exe)" 390*b4dd7d09SAndy Fiddaman F := filter $(STRIP) $(STRIPFLAGS) $(X) 391*b4dd7d09SAndy Fiddaman end 392*b4dd7d09SAndy Fiddaman if "$(filter.$(style):V)" 393*b4dd7d09SAndy Fiddaman filter.$(style) := $(filter.$(style):V)$$("\n") 394*b4dd7d09SAndy Fiddaman end 395*b4dd7d09SAndy Fiddaman filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T) 396*b4dd7d09SAndy Fiddaman end 397*b4dd7d09SAndy Fiddaman 398*b4dd7d09SAndy Fiddaman":LICENSE:" : .MAKE .OPERATOR 399*b4dd7d09SAndy Fiddaman if ! package.requires && ! license 400*b4dd7d09SAndy Fiddaman license := $(>) 401*b4dd7d09SAndy Fiddaman end 402*b4dd7d09SAndy Fiddaman 403*b4dd7d09SAndy Fiddaman":OMIT:" : .MAKE .OPERATOR 404*b4dd7d09SAndy Fiddaman if ! package.requires 405*b4dd7d09SAndy Fiddaman package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G) 406*b4dd7d09SAndy Fiddaman end 407*b4dd7d09SAndy Fiddaman 408*b4dd7d09SAndy Fiddaman":POSTINSTALL:" : .MAKE .OPERATOR 409*b4dd7d09SAndy Fiddaman if ! package.requires 410*b4dd7d09SAndy Fiddaman postinstall.$(style) := $(@:V) 411*b4dd7d09SAndy Fiddaman end 412*b4dd7d09SAndy Fiddaman 413*b4dd7d09SAndy Fiddaman":README:" : .MAKE .OPERATOR 414*b4dd7d09SAndy Fiddaman if ! package.requires 415*b4dd7d09SAndy Fiddaman readme.$(style) := $(@:V) 416*b4dd7d09SAndy Fiddaman end 417*b4dd7d09SAndy Fiddaman 418*b4dd7d09SAndy Fiddaman.requires. : .FUNCTION 419*b4dd7d09SAndy Fiddaman local I C D F K=0 L V T M=0 420*b4dd7d09SAndy Fiddaman for I $(%) 421*b4dd7d09SAndy Fiddaman if ! "$(~requires:N=$(I:B))" 422*b4dd7d09SAndy Fiddaman if F = "$(I:D:B:S=.pkg:T=F)" 423*b4dd7d09SAndy Fiddaman if I == "$(init)" 424*b4dd7d09SAndy Fiddaman package.omit = - 425*b4dd7d09SAndy Fiddaman else 426*b4dd7d09SAndy Fiddaman requires : $(I:B) 427*b4dd7d09SAndy Fiddaman end 428*b4dd7d09SAndy Fiddaman if V = "$(I:D:B=gen/$(I:B):S=.ver:T=F)" 429*b4dd7d09SAndy Fiddaman req : $(I:B) 430*b4dd7d09SAndy Fiddaman else 431*b4dd7d09SAndy Fiddaman error 1 $(I): package should be written before $(P) 432*b4dd7d09SAndy Fiddaman end 433*b4dd7d09SAndy Fiddaman let package.requires = package.requires + 1 434*b4dd7d09SAndy Fiddaman include "$(F)" 435*b4dd7d09SAndy Fiddaman let package.requires = package.requires - 1 436*b4dd7d09SAndy Fiddaman else 437*b4dd7d09SAndy Fiddaman error 1 $(I): package not found 438*b4dd7d09SAndy Fiddaman end 439*b4dd7d09SAndy Fiddaman end 440*b4dd7d09SAndy Fiddaman end 441*b4dd7d09SAndy Fiddaman 442*b4dd7d09SAndy Fiddaman":REQUIRES:" : .MAKE .OPERATOR 443*b4dd7d09SAndy Fiddaman : $(.requires. $(>)) 444*b4dd7d09SAndy Fiddaman 445*b4dd7d09SAndy Fiddaman":TEST:" : .MAKE .OPERATOR 446*b4dd7d09SAndy Fiddaman if ! package.requires 447*b4dd7d09SAndy Fiddaman local T 448*b4dd7d09SAndy Fiddaman T := $(>) 449*b4dd7d09SAndy Fiddaman if "$(T)" == "bin/*([!./])" 450*b4dd7d09SAndy Fiddaman if "$(exe.$(style))" 451*b4dd7d09SAndy Fiddaman T := $(T).exe 452*b4dd7d09SAndy Fiddaman end 453*b4dd7d09SAndy Fiddaman T := $$(PWD)/$$(ARCH)/$(T) 454*b4dd7d09SAndy Fiddaman end 455*b4dd7d09SAndy Fiddaman test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@) 456*b4dd7d09SAndy Fiddaman end 457*b4dd7d09SAndy Fiddaman 458*b4dd7d09SAndy Fiddamanbase delta : .MAKE .VIRTUAL .FORCE 459*b4dd7d09SAndy Fiddaman op := $(<) 460*b4dd7d09SAndy Fiddaman 461*b4dd7d09SAndy Fiddamanclosure : .MAKE .VIRTUAL .FORCE 462*b4dd7d09SAndy Fiddaman $(<) := 1 463*b4dd7d09SAndy Fiddaman 464*b4dd7d09SAndy Fiddamancyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE 465*b4dd7d09SAndy Fiddaman style := $(<) 466*b4dd7d09SAndy Fiddaman 467*b4dd7d09SAndy Fiddamansource : .source.init .source.gen .source.$$(style) 468*b4dd7d09SAndy Fiddaman 469*b4dd7d09SAndy Fiddaman.source.init : .MAKE 470*b4dd7d09SAndy Fiddaman local A B D P V I 471*b4dd7d09SAndy Fiddaman type := source 472*b4dd7d09SAndy Fiddaman if ! "$(incremental)" 473*b4dd7d09SAndy Fiddaman incremental = 1 474*b4dd7d09SAndy Fiddaman end 475*b4dd7d09SAndy Fiddaman if "$(source.$(name))" 476*b4dd7d09SAndy Fiddaman suffix = c 477*b4dd7d09SAndy Fiddaman end 478*b4dd7d09SAndy Fiddaman : $(.init.$(style)) 479*b4dd7d09SAndy Fiddaman : $(details.$(style):V:R) : 480*b4dd7d09SAndy Fiddaman A := $(source.list) 481*b4dd7d09SAndy Fiddaman B := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) 482*b4dd7d09SAndy Fiddaman P := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) 483*b4dd7d09SAndy Fiddaman D := $(A:N=*.$(stamp).$(stamp).$(suffix):O=1:T=F) 484*b4dd7d09SAndy Fiddaman if op == "delta" 485*b4dd7d09SAndy Fiddaman if ! B 486*b4dd7d09SAndy Fiddaman error 3 delta requires a base archive 487*b4dd7d09SAndy Fiddaman end 488*b4dd7d09SAndy Fiddaman base := -z $(B) 489*b4dd7d09SAndy Fiddaman deltaversion := $(B:B:/$(name).//) 490*b4dd7d09SAndy Fiddaman let deltasince = $(deltaversion:/.*-//) + 1 491*b4dd7d09SAndy Fiddaman deltasince := $(deltaversion:/[^-]*$/$(deltasince:F=%02d)/) 492*b4dd7d09SAndy Fiddaman if "$(release)" != "$(stamp)" 493*b4dd7d09SAndy Fiddaman release := $("":T=R%Y-%m-%d) 494*b4dd7d09SAndy Fiddaman end 495*b4dd7d09SAndy Fiddaman source := $(B:D:B:S=.$(release).$(suffix)) 496*b4dd7d09SAndy Fiddaman version := $(source:B:B:/$(name).//) 497*b4dd7d09SAndy Fiddaman elif B || op == "base" 498*b4dd7d09SAndy Fiddaman if op == "base" 499*b4dd7d09SAndy Fiddaman for I $(B) $(P) 500*b4dd7d09SAndy Fiddaman V := $(I:B:/$(name)\.\([^.]*\).*/\1/) 501*b4dd7d09SAndy Fiddaman if V == "$(stamp)" && V != "$(version)" 502*b4dd7d09SAndy Fiddaman old.version := $(V) 503*b4dd7d09SAndy Fiddaman old.source := $(I) 504*b4dd7d09SAndy Fiddaman if "$(old.version)" >= "$(version)" 505*b4dd7d09SAndy Fiddaman error 3 $(name): previous base $(old.version) is newer than $(version) 506*b4dd7d09SAndy Fiddaman end 507*b4dd7d09SAndy Fiddaman break 508*b4dd7d09SAndy Fiddaman end 509*b4dd7d09SAndy Fiddaman end 510*b4dd7d09SAndy Fiddaman else 511*b4dd7d09SAndy Fiddaman source := $(B) 512*b4dd7d09SAndy Fiddaman end 513*b4dd7d09SAndy Fiddaman if B == "$(source)" 514*b4dd7d09SAndy Fiddaman if "$(B:D:B:B)" == "$(D:D:B:B)" && "$(B:B::S)" != "$(D:B::S)" 515*b4dd7d09SAndy Fiddaman error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) 516*b4dd7d09SAndy Fiddaman end 517*b4dd7d09SAndy Fiddaman error 1 $(B:B:S): replacing current base 518*b4dd7d09SAndy Fiddaman end 519*b4dd7d09SAndy Fiddaman version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/) 520*b4dd7d09SAndy Fiddaman end 521*b4dd7d09SAndy Fiddaman PACKAGEGEN := $(PACKAGESRC)/gen 522*b4dd7d09SAndy Fiddaman 523*b4dd7d09SAndy Fiddaman.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html 524*b4dd7d09SAndy Fiddaman 525*b4dd7d09SAndy FiddamanBINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1) 526*b4dd7d09SAndy Fiddaman 527*b4dd7d09SAndy Fiddaman$$(PACKAGEDIR) $$(PACKAGEGEN) : .IGNORE 528*b4dd7d09SAndy Fiddaman [[ -d $(<) ]] || mkdir $(<) 529*b4dd7d09SAndy Fiddaman 530*b4dd7d09SAndy Fiddaman$$(PACKAGEGEN)/SOURCE.html : $(BINPACKAGE) 531*b4dd7d09SAndy Fiddaman $(*) html source > $(<) 532*b4dd7d09SAndy Fiddaman 533*b4dd7d09SAndy Fiddaman$$(PACKAGEGEN)/BINARY.html : $(BINPACKAGE) 534*b4dd7d09SAndy Fiddaman $(*) html binary > $(<) 535*b4dd7d09SAndy Fiddaman 536*b4dd7d09SAndy Fiddaman$$(PACKAGEGEN)/DETAILS.html : $(BINPACKAGE) 537*b4dd7d09SAndy Fiddaman $(*) html intro > $(<) 538*b4dd7d09SAndy Fiddaman 539*b4dd7d09SAndy Fiddaman.source.exp .source.pkg .source.rpm : .MAKE 540*b4dd7d09SAndy Fiddaman error 3 $(style): source package style not supported yet 541*b4dd7d09SAndy Fiddaman 542*b4dd7d09SAndy Fiddamanexe.cyg = .exe 543*b4dd7d09SAndy Fiddamanvendor.cyg = gnu 544*b4dd7d09SAndy Fiddaman 545*b4dd7d09SAndy Fiddaman.name.cyg : .FUNCTION 546*b4dd7d09SAndy Fiddaman local N 547*b4dd7d09SAndy Fiddaman N := $(%) 548*b4dd7d09SAndy Fiddaman if N == "*-*" 549*b4dd7d09SAndy Fiddaman vendor := $(N:/-.*//) 550*b4dd7d09SAndy Fiddaman if vendor == "$(vendor.cyg)" 551*b4dd7d09SAndy Fiddaman vendor := 552*b4dd7d09SAndy Fiddaman N := $(N:/[^-]*-//) 553*b4dd7d09SAndy Fiddaman end 554*b4dd7d09SAndy Fiddaman N := $(N:/-//G) 555*b4dd7d09SAndy Fiddaman end 556*b4dd7d09SAndy Fiddaman return $(N) 557*b4dd7d09SAndy Fiddaman 558*b4dd7d09SAndy Fiddaman.init.cyg : .FUNCTION 559*b4dd7d09SAndy Fiddaman local N O 560*b4dd7d09SAndy Fiddaman closure = 1 561*b4dd7d09SAndy Fiddaman init = . 562*b4dd7d09SAndy Fiddaman strip = 1 563*b4dd7d09SAndy Fiddaman suffix = tar.bz2 564*b4dd7d09SAndy Fiddaman format = tbz 565*b4dd7d09SAndy Fiddaman vendor := $(licenses:N!=$(vendor.cyg):O=1) 566*b4dd7d09SAndy Fiddaman package.ini := $(package.ini) 567*b4dd7d09SAndy Fiddaman package.src.pat := $(package.src.pat) 568*b4dd7d09SAndy Fiddaman package.src := $(package.src) 569*b4dd7d09SAndy Fiddaman package.bin := $(package.bin) 570*b4dd7d09SAndy Fiddaman .source.gen : .CLEAR $(*.source.gen:V:N!=*.html) 571*b4dd7d09SAndy Fiddaman name.original := $(name) 572*b4dd7d09SAndy Fiddaman name := $(.name.cyg $(name)) 573*b4dd7d09SAndy Fiddaman if name != "$(name.original)" 574*b4dd7d09SAndy Fiddaman $(name) : $(~$(name.original)) 575*b4dd7d09SAndy Fiddaman O := $(~covers) 576*b4dd7d09SAndy Fiddaman covers : .CLEAR 577*b4dd7d09SAndy Fiddaman for N $(O) 578*b4dd7d09SAndy Fiddaman covers : $(.name.cyg $(N)) 579*b4dd7d09SAndy Fiddaman end 580*b4dd7d09SAndy Fiddaman end 581*b4dd7d09SAndy Fiddaman stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9] 582*b4dd7d09SAndy Fiddaman version.original := $(version) 583*b4dd7d09SAndy Fiddaman version := $(version:/-//G)-1 584*b4dd7d09SAndy Fiddaman if opt 585*b4dd7d09SAndy Fiddaman opt := $(opt)/$(vendor)/ 586*b4dd7d09SAndy Fiddaman else 587*b4dd7d09SAndy Fiddaman opt := $(name)-$(version)/ 588*b4dd7d09SAndy Fiddaman end 589*b4dd7d09SAndy Fiddaman if type == "source" 590*b4dd7d09SAndy Fiddaman version := $(version)-src 591*b4dd7d09SAndy Fiddaman source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) 592*b4dd7d09SAndy Fiddaman else 593*b4dd7d09SAndy Fiddaman binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix) 594*b4dd7d09SAndy Fiddaman end 595*b4dd7d09SAndy Fiddaman 596*b4dd7d09SAndy Fiddaman.source.cyg : 597*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 598*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 599*b4dd7d09SAndy Fiddaman mkdir $tmp 600*b4dd7d09SAndy Fiddaman { 601*b4dd7d09SAndy Fiddaman integer m=0 o 602*b4dd7d09SAndy Fiddaman cat > $tmp/configure <<'!' 603*b4dd7d09SAndy Fiddaman echo "you didn't have to do that" 604*b4dd7d09SAndy Fiddaman ! 605*b4dd7d09SAndy Fiddaman chmod +x $tmp/configure 606*b4dd7d09SAndy Fiddaman echo ";;;$tmp/configure;configure" 607*b4dd7d09SAndy Fiddaman cat > $tmp/Makefile0 <<'!' 608*b4dd7d09SAndy Fiddaman HOSTTYPE := $$(shell bin/package) 609*b4dd7d09SAndy Fiddaman ROOT = ../.. 610*b4dd7d09SAndy Fiddaman ARCH = arch/$$(HOSTTYPE) 611*b4dd7d09SAndy Fiddaman all : 612*b4dd7d09SAndy Fiddaman PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style)) 613*b4dd7d09SAndy Fiddaman install : all 614*b4dd7d09SAndy Fiddaman $(install.$(style):V) 615*b4dd7d09SAndy Fiddaman $(test.$(style):V) 616*b4dd7d09SAndy Fiddaman ! 617*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile0;Makefile" 618*b4dd7d09SAndy Fiddaman cat > $tmp/CYGWIN-README <<'!' 619*b4dd7d09SAndy Fiddaman $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run: 620*b4dd7d09SAndy Fiddaman $() 621*b4dd7d09SAndy Fiddaman make 622*b4dd7d09SAndy Fiddaman $() 623*b4dd7d09SAndy Fiddaman $(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: 624*b4dd7d09SAndy Fiddaman $() 625*b4dd7d09SAndy Fiddaman make install 626*b4dd7d09SAndy Fiddaman $() 627*b4dd7d09SAndy Fiddaman The bin/package command provides a command line interface for all package 628*b4dd7d09SAndy Fiddaman operations. The $(opt:/.$//) source and binary packages were generated by: 629*b4dd7d09SAndy Fiddaman $() 630*b4dd7d09SAndy Fiddaman package write cyg base source version=$(version.original) $(name.original) 631*b4dd7d09SAndy Fiddaman package write cyg base binary version=$(version.original) $(name.original) 632*b4dd7d09SAndy Fiddaman $() 633*b4dd7d09SAndy Fiddaman using the $(org)-base package. To download and install the latest 634*b4dd7d09SAndy Fiddaman $(org)-base source package in /opt/$(org) run: 635*b4dd7d09SAndy Fiddaman $() 636*b4dd7d09SAndy Fiddaman PATH=/opt/$(org)/bin:$PATH 637*b4dd7d09SAndy Fiddaman cd /opt/$(org) 638*b4dd7d09SAndy Fiddaman package authorize "NAME" password "PASSWORD" setup flat source $("\\") 639*b4dd7d09SAndy Fiddaman $(url) $("\\") 640*b4dd7d09SAndy Fiddaman $(org)-base 641*b4dd7d09SAndy Fiddaman package make 642*b4dd7d09SAndy Fiddaman $() 643*b4dd7d09SAndy Fiddaman and export /opt/$(org)/bin in PATH to use. The NAME and PASSWORD signify your 644*b4dd7d09SAndy Fiddaman agreement to the software license(s). All users get the same NAME and PASSWORD. 645*b4dd7d09SAndy Fiddaman See $(url) for details. If multiple architectures may be built under 646*b4dd7d09SAndy Fiddaman /opt/$(org) then drop "flat" and export /opt/$(org)/arch/`package`/bin in PATH 647*b4dd7d09SAndy Fiddaman to use. To update previously downloaded packages from the same url simply run: 648*b4dd7d09SAndy Fiddaman $() 649*b4dd7d09SAndy Fiddaman cd /opt/$(org) 650*b4dd7d09SAndy Fiddaman package setup 651*b4dd7d09SAndy Fiddaman package make 652*b4dd7d09SAndy Fiddaman $() 653*b4dd7d09SAndy Fiddaman To download and install the latest $(org)-base binary package in 654*b4dd7d09SAndy Fiddaman /opt/$(org) change "source" to "binary" and omit "package make". 655*b4dd7d09SAndy Fiddaman ! 656*b4dd7d09SAndy Fiddaman echo ";;;$tmp/CYGWIN-README;CYGWIN-PATCHES/README" 657*b4dd7d09SAndy Fiddaman cat > $(source:/-src.$(suffix)//).setup.hint <<'!' 658*b4dd7d09SAndy Fiddaman category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) 659*b4dd7d09SAndy Fiddaman requires: cygwin 660*b4dd7d09SAndy Fiddaman sdesc: "$(index)" 661*b4dd7d09SAndy Fiddaman ldesc: "$($(name.original).README)" 662*b4dd7d09SAndy Fiddaman ! 663*b4dd7d09SAndy Fiddaman echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint" 664*b4dd7d09SAndy Fiddaman echo ";;;$(BINPACKAGE);bin/package" 665*b4dd7d09SAndy Fiddaman cat > $tmp/Makefile <<'!' 666*b4dd7d09SAndy Fiddaman :MAKE: 667*b4dd7d09SAndy Fiddaman ! 668*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile;src/Makefile" 669*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile;src/cmd/Makefile" 670*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile;src/lib/Makefile" 671*b4dd7d09SAndy Fiddaman if [[ '$(mamfile)' == 1 ]] 672*b4dd7d09SAndy Fiddaman then cat > $tmp/Mamfile1 <<'!' 673*b4dd7d09SAndy Fiddaman info mam static 674*b4dd7d09SAndy Fiddaman note source level :MAKE: equivalent 675*b4dd7d09SAndy Fiddaman make install 676*b4dd7d09SAndy Fiddaman make all 677*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} 678*b4dd7d09SAndy Fiddaman done all virtual 679*b4dd7d09SAndy Fiddaman done install virtual 680*b4dd7d09SAndy Fiddaman ! 681*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile1;src/Mamfile" 682*b4dd7d09SAndy Fiddaman cat > $tmp/Mamfile2 <<'!' 683*b4dd7d09SAndy Fiddaman info mam static 684*b4dd7d09SAndy Fiddaman note component level :MAKE: equivalent 685*b4dd7d09SAndy Fiddaman make install 686*b4dd7d09SAndy Fiddaman make all 687*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*' ${MAMAKEARGS} 688*b4dd7d09SAndy Fiddaman done all virtual 689*b4dd7d09SAndy Fiddaman done install virtual 690*b4dd7d09SAndy Fiddaman ! 691*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" 692*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile2;src/lib/Mamfile" 693*b4dd7d09SAndy Fiddaman fi 694*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) 695*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name.original).req" 696*b4dd7d09SAndy Fiddaman set -- $(package.closure) 697*b4dd7d09SAndy Fiddaman for i 698*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 699*b4dd7d09SAndy Fiddaman if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . 700*b4dd7d09SAndy Fiddaman then if [[ '$(mamfile)' == 1 ]] 701*b4dd7d09SAndy Fiddaman then (( o=m )) 702*b4dd7d09SAndy Fiddaman s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) 703*b4dd7d09SAndy Fiddaman if [[ $s ]] 704*b4dd7d09SAndy Fiddaman then for j in $s 705*b4dd7d09SAndy Fiddaman do if [[ -d $j ]] 706*b4dd7d09SAndy Fiddaman then cd $j 707*b4dd7d09SAndy Fiddaman if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . 708*b4dd7d09SAndy Fiddaman then (( m++ )) 709*b4dd7d09SAndy Fiddaman $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam 710*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/$j/Mamfile" 711*b4dd7d09SAndy Fiddaman fi 712*b4dd7d09SAndy Fiddaman cd $(INSTALLROOT)/$i 713*b4dd7d09SAndy Fiddaman fi 714*b4dd7d09SAndy Fiddaman done 715*b4dd7d09SAndy Fiddaman if (( o != m )) 716*b4dd7d09SAndy Fiddaman then (( m++ )) 717*b4dd7d09SAndy Fiddaman cat > $tmp/$m.mam <<'!' 718*b4dd7d09SAndy Fiddaman info mam static 719*b4dd7d09SAndy Fiddaman note subcomponent level :MAKE: equivalent 720*b4dd7d09SAndy Fiddaman make install 721*b4dd7d09SAndy Fiddaman make all 722*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*' ${MAMAKEARGS} 723*b4dd7d09SAndy Fiddaman done all virtual 724*b4dd7d09SAndy Fiddaman done install virtual 725*b4dd7d09SAndy Fiddaman ! 726*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/Mamfile" 727*b4dd7d09SAndy Fiddaman fi 728*b4dd7d09SAndy Fiddaman else (( m++ )) 729*b4dd7d09SAndy Fiddaman $(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam 730*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/Mamfile" 731*b4dd7d09SAndy Fiddaman fi 732*b4dd7d09SAndy Fiddaman fi 733*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) 734*b4dd7d09SAndy Fiddaman fi 735*b4dd7d09SAndy Fiddaman done 736*b4dd7d09SAndy Fiddaman set -- $(package.dir:P=G) 737*b4dd7d09SAndy Fiddaman for i 738*b4dd7d09SAndy Fiddaman do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" 739*b4dd7d09SAndy Fiddaman done 740*b4dd7d09SAndy Fiddaman } | 741*b4dd7d09SAndy Fiddaman { 742*b4dd7d09SAndy Fiddaman : > $tmp/HEAD 743*b4dd7d09SAndy Fiddaman cat > $tmp/README <<'!' 744*b4dd7d09SAndy Fiddaman $(package.readme) 745*b4dd7d09SAndy Fiddaman ! 746*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README;README" 747*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u 748*b4dd7d09SAndy Fiddaman : > $tmp/TAIL 749*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" 750*b4dd7d09SAndy Fiddaman } | 751*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 752*b4dd7d09SAndy Fiddaman --to=ascii \ 753*b4dd7d09SAndy Fiddaman --format=$(format) \ 754*b4dd7d09SAndy Fiddaman --local \ 755*b4dd7d09SAndy Fiddaman -wvf $(source) $(base) \ 756*b4dd7d09SAndy Fiddaman $(PACKAGEVIEW:C%.*%-s",^&/,,"%) \ 757*b4dd7d09SAndy Fiddaman $(vendor:?-s",^[^/],$(opt)&,"??) 758*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) 759*b4dd7d09SAndy Fiddaman rm -rf $tmp 760*b4dd7d09SAndy Fiddaman fi 761*b4dd7d09SAndy Fiddaman 762*b4dd7d09SAndy Fiddaman.source.lcl : 763*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 764*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 765*b4dd7d09SAndy Fiddaman mkdir $tmp 766*b4dd7d09SAndy Fiddaman { 767*b4dd7d09SAndy Fiddaman integer m=0 o 768*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) 769*b4dd7d09SAndy Fiddaman set -- $(package.closure) 770*b4dd7d09SAndy Fiddaman for i 771*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 772*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) $(=) .FILES.+=Mamfile recurse list.package.local 773*b4dd7d09SAndy Fiddaman done 774*b4dd7d09SAndy Fiddaman set -- $(package.dir:P=G) 775*b4dd7d09SAndy Fiddaman for i 776*b4dd7d09SAndy Fiddaman do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" 777*b4dd7d09SAndy Fiddaman done 778*b4dd7d09SAndy Fiddaman } | 779*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u | 780*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 781*b4dd7d09SAndy Fiddaman --to=ascii \ 782*b4dd7d09SAndy Fiddaman $(op:N=delta:??--format=$(format)?) \ 783*b4dd7d09SAndy Fiddaman --local \ 784*b4dd7d09SAndy Fiddaman -wvf $(source) $(base) \ 785*b4dd7d09SAndy Fiddaman $(op:N=delta:?--format=gzip??) \ 786*b4dd7d09SAndy Fiddaman $(PACKAGEVIEW:C%.*%-s",^&/,,"%) 787*b4dd7d09SAndy Fiddaman rm -rf $tmp 788*b4dd7d09SAndy Fiddaman fi 789*b4dd7d09SAndy Fiddaman 790*b4dd7d09SAndy Fiddaman.source.tgz : 791*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 792*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 793*b4dd7d09SAndy Fiddaman mkdir $tmp 794*b4dd7d09SAndy Fiddaman { 795*b4dd7d09SAndy Fiddaman integer m=0 o 796*b4dd7d09SAndy Fiddaman if [[ '$(init)' == '$(name)' ]] 797*b4dd7d09SAndy Fiddaman then cat > $tmp/Makefile <<'!' 798*b4dd7d09SAndy Fiddaman :MAKE: 799*b4dd7d09SAndy Fiddaman ! 800*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile 801*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile;src/Makefile" 802*b4dd7d09SAndy Fiddaman cp $tmp/Makefile $tmp/Makefile1 803*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1 804*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile1;src/cmd/Makefile" 805*b4dd7d09SAndy Fiddaman cp $tmp/Makefile $tmp/Makefile2 806*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2 807*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Makefile2;src/lib/Makefile" 808*b4dd7d09SAndy Fiddaman if [[ '$(mamfile)' == 1 ]] 809*b4dd7d09SAndy Fiddaman then cat > $tmp/Mamfile1 <<'!' 810*b4dd7d09SAndy Fiddaman info mam static 811*b4dd7d09SAndy Fiddaman note source level :MAKE: equivalent 812*b4dd7d09SAndy Fiddaman make install 813*b4dd7d09SAndy Fiddaman make all 814*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS} 815*b4dd7d09SAndy Fiddaman done all virtual 816*b4dd7d09SAndy Fiddaman done install virtual 817*b4dd7d09SAndy Fiddaman ! 818*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1 819*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile1;src/Mamfile" 820*b4dd7d09SAndy Fiddaman cat > $tmp/Mamfile2 <<'!' 821*b4dd7d09SAndy Fiddaman info mam static 822*b4dd7d09SAndy Fiddaman note component level :MAKE: equivalent 823*b4dd7d09SAndy Fiddaman make install 824*b4dd7d09SAndy Fiddaman make all 825*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*' ${MAMAKEARGS} 826*b4dd7d09SAndy Fiddaman done all virtual 827*b4dd7d09SAndy Fiddaman done install virtual 828*b4dd7d09SAndy Fiddaman ! 829*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2 830*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile2;src/cmd/Mamfile" 831*b4dd7d09SAndy Fiddaman cp $tmp/Mamfile2 $tmp/Mamfile3 832*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3 833*b4dd7d09SAndy Fiddaman echo ";;;$tmp/Mamfile3;src/lib/Mamfile" 834*b4dd7d09SAndy Fiddaman fi 835*b4dd7d09SAndy Fiddaman fi 836*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) 837*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 838*b4dd7d09SAndy Fiddaman then for i in $(~covers) 839*b4dd7d09SAndy Fiddaman do for j in lib pkg 840*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGESRC)/$i.$j ]] 841*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" 842*b4dd7d09SAndy Fiddaman fi 843*b4dd7d09SAndy Fiddaman done 844*b4dd7d09SAndy Fiddaman for j in ver req 845*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGEGEN)/$i.$j ]] 846*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" 847*b4dd7d09SAndy Fiddaman fi 848*b4dd7d09SAndy Fiddaman done 849*b4dd7d09SAndy Fiddaman done 850*b4dd7d09SAndy Fiddaman for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) 851*b4dd7d09SAndy Fiddaman do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" 852*b4dd7d09SAndy Fiddaman done 853*b4dd7d09SAndy Fiddaman fi 854*b4dd7d09SAndy Fiddaman if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] 855*b4dd7d09SAndy Fiddaman then echo $(name) $(version) $(release|version) 1 > $tmp/t 856*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).ver || cp $tmp/t $(PACKAGEGEN)/$(name).ver 857*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" 858*b4dd7d09SAndy Fiddaman sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $tmp/t 859*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).req || cp $tmp/t $(PACKAGEGEN)/$(name).req 860*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" 861*b4dd7d09SAndy Fiddaman { 862*b4dd7d09SAndy Fiddaman echo "name='$(name)'" 863*b4dd7d09SAndy Fiddaman echo "index='$(index)'" 864*b4dd7d09SAndy Fiddaman echo "covers='$(~covers)'" 865*b4dd7d09SAndy Fiddaman echo "requires='$(~req)'" 866*b4dd7d09SAndy Fiddaman } > $tmp/t 867*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).inx || cp $tmp/t $(PACKAGEGEN)/$(name).inx 868*b4dd7d09SAndy Fiddaman { 869*b4dd7d09SAndy Fiddaman { 870*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 871*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 872*b4dd7d09SAndy Fiddaman 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)." 873*b4dd7d09SAndy Fiddaman fi 874*b4dd7d09SAndy Fiddaman if [[ '$(~requires)' ]] 875*b4dd7d09SAndy Fiddaman then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' 876*b4dd7d09SAndy Fiddaman fi 877*b4dd7d09SAndy Fiddaman } | fmt 878*b4dd7d09SAndy Fiddaman package help source 879*b4dd7d09SAndy Fiddaman package release $(name) 880*b4dd7d09SAndy Fiddaman } > $tmp/t 881*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).README || cp $tmp/t $(PACKAGEGEN)/$(name).README 882*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" 883*b4dd7d09SAndy Fiddaman { 884*b4dd7d09SAndy Fiddaman echo '.xx title="$(name) package"' 885*b4dd7d09SAndy Fiddaman echo '.xx meta.description="$(name) package"' 886*b4dd7d09SAndy Fiddaman echo '.xx meta.keywords="software, package"' 887*b4dd7d09SAndy Fiddaman echo '.MT 4' 888*b4dd7d09SAndy Fiddaman echo '.TL' 889*b4dd7d09SAndy Fiddaman echo '$(name) package' 890*b4dd7d09SAndy Fiddaman echo '.H 1 "$(name) package"' 891*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 892*b4dd7d09SAndy Fiddaman set -- $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F:D::B) 893*b4dd7d09SAndy Fiddaman hot= 894*b4dd7d09SAndy Fiddaman for i 895*b4dd7d09SAndy Fiddaman do hot="$hot -e s/\\(\\<$i\\>\\)/\\\\h'0*1'\\1\\\\h'0'/" 896*b4dd7d09SAndy Fiddaman done 897*b4dd7d09SAndy Fiddaman set -- $(package.closure:B) 898*b4dd7d09SAndy Fiddaman if (( $# )) 899*b4dd7d09SAndy Fiddaman then echo 'Components in this package:' 900*b4dd7d09SAndy Fiddaman echo '.P' 901*b4dd7d09SAndy Fiddaman echo '.TS' 902*b4dd7d09SAndy Fiddaman echo 'center expand;' 903*b4dd7d09SAndy Fiddaman echo 'l l l l l l.' 904*b4dd7d09SAndy Fiddaman if [[ $hot ]] 905*b4dd7d09SAndy Fiddaman then hot="sed $hot" 906*b4dd7d09SAndy Fiddaman else hot=cat 907*b4dd7d09SAndy Fiddaman fi 908*b4dd7d09SAndy Fiddaman for i 909*b4dd7d09SAndy Fiddaman do echo $i 910*b4dd7d09SAndy Fiddaman done | 911*b4dd7d09SAndy Fiddaman pr -6 -t -s' ' | 912*b4dd7d09SAndy Fiddaman $hot 913*b4dd7d09SAndy Fiddaman echo '.TE' 914*b4dd7d09SAndy Fiddaman fi 915*b4dd7d09SAndy Fiddaman echo '.P' 916*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 917*b4dd7d09SAndy Fiddaman 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)." 918*b4dd7d09SAndy Fiddaman fi 919*b4dd7d09SAndy Fiddaman if [[ '$(~requires)' ]] 920*b4dd7d09SAndy Fiddaman then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' 921*b4dd7d09SAndy Fiddaman fi 922*b4dd7d09SAndy Fiddaman set -- $(.package.licenses. --all $(name)) 923*b4dd7d09SAndy Fiddaman case $# in 924*b4dd7d09SAndy Fiddaman 0) ;; 925*b4dd7d09SAndy Fiddaman *) case $# in 926*b4dd7d09SAndy Fiddaman 1) echo 'The software is covered by this license:' ;; 927*b4dd7d09SAndy Fiddaman *) echo 'The software is covered by these licenses:' ;; 928*b4dd7d09SAndy Fiddaman esac 929*b4dd7d09SAndy Fiddaman echo .BL 930*b4dd7d09SAndy Fiddaman for j 931*b4dd7d09SAndy Fiddaman do i=$( $(PROTO) -l $j -p -h -o type=usage /dev/null | sed -e 's,.*\[-license?\([^]]*\).*,\1,' ) 932*b4dd7d09SAndy Fiddaman echo .LI 933*b4dd7d09SAndy Fiddaman echo ".xx link=\"$i\"" 934*b4dd7d09SAndy Fiddaman done 935*b4dd7d09SAndy Fiddaman echo .LE 936*b4dd7d09SAndy Fiddaman echo 'Individual components may be covered by separate licenses;' 937*b4dd7d09SAndy Fiddaman echo 'refer to the component source and/or binaries for more information.' 938*b4dd7d09SAndy Fiddaman echo .P 939*b4dd7d09SAndy Fiddaman ;; 940*b4dd7d09SAndy Fiddaman esac 941*b4dd7d09SAndy Fiddaman echo 'A recent' 942*b4dd7d09SAndy Fiddaman echo '.xx link="release change log"' 943*b4dd7d09SAndy Fiddaman echo 'is also included.' 944*b4dd7d09SAndy Fiddaman cat $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F) < /dev/null 945*b4dd7d09SAndy Fiddaman echo '.H 1 "release change log"' 946*b4dd7d09SAndy Fiddaman echo '.xx index' 947*b4dd7d09SAndy Fiddaman echo '.nf' 948*b4dd7d09SAndy Fiddaman package release $(name) | 949*b4dd7d09SAndy Fiddaman sed -e 's/:::::::: \(.*\) ::::::::/.fi\$("\n").H 1 "\1 changes"\$("\n").nf/' 950*b4dd7d09SAndy Fiddaman echo '.fi' 951*b4dd7d09SAndy Fiddaman } | 952*b4dd7d09SAndy Fiddaman $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t 953*b4dd7d09SAndy Fiddaman $(STDED) $(STDEDFLAGS) $tmp/t <<'!' 954*b4dd7d09SAndy Fiddaman /^<!--LABELS-->$/,/^<!--\/LABELS-->$/s/ changes</</ 955*b4dd7d09SAndy Fiddaman /^<!--LABELS-->$/,/^<!--\/LABELS-->$/m/<A name="release change log">/ 956*b4dd7d09SAndy Fiddaman w 957*b4dd7d09SAndy Fiddaman q 958*b4dd7d09SAndy Fiddaman ! 959*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).html || cp $tmp/t $(PACKAGEGEN)/$(name).html 960*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).html;$(PACKAGELIB)/$(name).html" 961*b4dd7d09SAndy Fiddaman if [[ '$(deltasince)' ]] 962*b4dd7d09SAndy Fiddaman then { 963*b4dd7d09SAndy Fiddaman echo '.xx title="$(name) package"' 964*b4dd7d09SAndy Fiddaman echo '.xx meta.description="$(name) package $(version) delta $(release)"' 965*b4dd7d09SAndy Fiddaman echo '.xx meta.keywords="software, package, delta"' 966*b4dd7d09SAndy Fiddaman echo '.MT 4' 967*b4dd7d09SAndy Fiddaman echo '.TL' 968*b4dd7d09SAndy Fiddaman echo '$(name) package $(deltaversion) delta $(release)' 969*b4dd7d09SAndy Fiddaman echo '.H 1 "$(name) package $(deltaversion) delta $(release) changes"' 970*b4dd7d09SAndy Fiddaman echo '.nf' 971*b4dd7d09SAndy Fiddaman package release $(deltasince) $(name) | 972*b4dd7d09SAndy Fiddaman sed -e 's/:::::::: \(.*\) ::::::::/.H 2 \1/' 973*b4dd7d09SAndy Fiddaman echo '.fi' 974*b4dd7d09SAndy Fiddaman } | 975*b4dd7d09SAndy Fiddaman $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t 976*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html 977*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).$(release).html;$(PACKAGELIB)/$(name).$(release).html" 978*b4dd7d09SAndy Fiddaman fi 979*b4dd7d09SAndy Fiddaman fi 980*b4dd7d09SAndy Fiddaman set -- $(package.closure) 981*b4dd7d09SAndy Fiddaman for i 982*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 983*b4dd7d09SAndy Fiddaman if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . 984*b4dd7d09SAndy Fiddaman then if [[ '$(mamfile)' == 1 ]] 985*b4dd7d09SAndy Fiddaman then (( o=m )) 986*b4dd7d09SAndy Fiddaman s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null ) 987*b4dd7d09SAndy Fiddaman if [[ $s ]] 988*b4dd7d09SAndy Fiddaman then for j in $s 989*b4dd7d09SAndy Fiddaman do if [[ -d $j ]] 990*b4dd7d09SAndy Fiddaman then cd $j 991*b4dd7d09SAndy Fiddaman if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' . 992*b4dd7d09SAndy Fiddaman then (( m++ )) 993*b4dd7d09SAndy Fiddaman $(MAKE) $(package.mam) > $tmp/$m.mam 994*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam 995*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/$j/Mamfile" 996*b4dd7d09SAndy Fiddaman fi 997*b4dd7d09SAndy Fiddaman cd $(INSTALLROOT)/$i 998*b4dd7d09SAndy Fiddaman fi 999*b4dd7d09SAndy Fiddaman done 1000*b4dd7d09SAndy Fiddaman if (( o != m )) 1001*b4dd7d09SAndy Fiddaman then (( m++ )) 1002*b4dd7d09SAndy Fiddaman cat > $tmp/$m.mam <<'!' 1003*b4dd7d09SAndy Fiddaman info mam static 1004*b4dd7d09SAndy Fiddaman note subcomponent level :MAKE: equivalent 1005*b4dd7d09SAndy Fiddaman make install 1006*b4dd7d09SAndy Fiddaman make all 1007*b4dd7d09SAndy Fiddaman exec - ${MAMAKE} -r '*' ${MAMAKEARGS} 1008*b4dd7d09SAndy Fiddaman done all virtual 1009*b4dd7d09SAndy Fiddaman done install virtual 1010*b4dd7d09SAndy Fiddaman ! 1011*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam 1012*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/Mamfile" 1013*b4dd7d09SAndy Fiddaman fi 1014*b4dd7d09SAndy Fiddaman else (( m++ )) 1015*b4dd7d09SAndy Fiddaman $(MAKE) $(package.mam) > $tmp/$m.mam 1016*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam 1017*b4dd7d09SAndy Fiddaman echo ";;;$tmp/$m.mam;$i/Mamfile" 1018*b4dd7d09SAndy Fiddaman fi 1019*b4dd7d09SAndy Fiddaman fi 1020*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?) 1021*b4dd7d09SAndy Fiddaman fi 1022*b4dd7d09SAndy Fiddaman done 1023*b4dd7d09SAndy Fiddaman set -- $(package.dir:P=G) 1024*b4dd7d09SAndy Fiddaman for i 1025*b4dd7d09SAndy Fiddaman do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);" 1026*b4dd7d09SAndy Fiddaman done 1027*b4dd7d09SAndy Fiddaman } | 1028*b4dd7d09SAndy Fiddaman { 1029*b4dd7d09SAndy Fiddaman : > $tmp/HEAD 1030*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" 1031*b4dd7d09SAndy Fiddaman cat > $tmp/README <<'!' 1032*b4dd7d09SAndy Fiddaman $(package.readme) 1033*b4dd7d09SAndy Fiddaman ! 1034*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README;README" 1035*b4dd7d09SAndy Fiddaman $(CMP) $(CMPFLAGS) $tmp/README $(PACKAGEROOT)/README && touch -r $(PACKAGEROOT)/README $tmp/README 1036*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u 1037*b4dd7d09SAndy Fiddaman : > $tmp/TAIL 1038*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" 1039*b4dd7d09SAndy Fiddaman } | 1040*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 1041*b4dd7d09SAndy Fiddaman --to=ascii \ 1042*b4dd7d09SAndy Fiddaman $(op:N=delta:??--format=$(format)?) \ 1043*b4dd7d09SAndy Fiddaman --local \ 1044*b4dd7d09SAndy Fiddaman -wvf $(source) $(base) \ 1045*b4dd7d09SAndy Fiddaman $(op:N=delta:?--format=gzip??) \ 1046*b4dd7d09SAndy Fiddaman $(PACKAGEVIEW:C%.*%-s",^&/,,"%) 1047*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) 1048*b4dd7d09SAndy Fiddaman echo local > $(source:D:B=$(name):S=.tim) 1049*b4dd7d09SAndy Fiddaman if [[ '$(incremental)' == 1 && '$(old.source)' ]] 1050*b4dd7d09SAndy Fiddaman then $(PAX) -rf $(source) -wvf $(old.new.source) -z $(old.source) 1051*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(old.new.source) > $(old.new.source:D:B:S=.$(checksum)) 1052*b4dd7d09SAndy Fiddaman fi 1053*b4dd7d09SAndy Fiddaman rm -rf $tmp 1054*b4dd7d09SAndy Fiddaman else if [[ '$(old.source)' ]] && $(CMP) $(CMPFLAGS) $(source.$(name)) $(source) 1055*b4dd7d09SAndy Fiddaman then : $(name) is up to date 1056*b4dd7d09SAndy Fiddaman else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver 1057*b4dd7d09SAndy Fiddaman : > $(PACKAGEGEN)/$(name).req 1058*b4dd7d09SAndy Fiddaman { 1059*b4dd7d09SAndy Fiddaman echo "name='$(name)'" 1060*b4dd7d09SAndy Fiddaman echo "index='$(index)'" 1061*b4dd7d09SAndy Fiddaman echo "covers='$(~covers)'" 1062*b4dd7d09SAndy Fiddaman echo "requires='$(~req)'" 1063*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).inx 1064*b4dd7d09SAndy Fiddaman { 1065*b4dd7d09SAndy Fiddaman echo '.xx title="$(name) package"' 1066*b4dd7d09SAndy Fiddaman echo '.xx meta.description="$(name) package"' 1067*b4dd7d09SAndy Fiddaman echo '.xx meta.keywords="software, package"' 1068*b4dd7d09SAndy Fiddaman echo '.MT 4' 1069*b4dd7d09SAndy Fiddaman echo '.TL' 1070*b4dd7d09SAndy Fiddaman echo '$(name) package' 1071*b4dd7d09SAndy Fiddaman echo '.H 1' 1072*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 1073*b4dd7d09SAndy Fiddaman } | 1074*b4dd7d09SAndy Fiddaman $(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $(PACKAGEGEN)/$(name).html 1075*b4dd7d09SAndy Fiddaman if [[ '$(source.$(name))' ]] 1076*b4dd7d09SAndy Fiddaman then { 1077*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 1078*b4dd7d09SAndy Fiddaman package help source 1079*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).README 1080*b4dd7d09SAndy Fiddaman cp $(source.$(name)) $(source) 1081*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum)) 1082*b4dd7d09SAndy Fiddaman fi 1083*b4dd7d09SAndy Fiddaman echo local > $(source:D:B=$(name):S=.tim) 1084*b4dd7d09SAndy Fiddaman fi 1085*b4dd7d09SAndy Fiddaman fi 1086*b4dd7d09SAndy Fiddaman 1087*b4dd7d09SAndy Fiddamanbinary : .binary.init .binary.gen .binary.$$(style) 1088*b4dd7d09SAndy Fiddaman 1089*b4dd7d09SAndy Fiddaman.binary.init : .MAKE 1090*b4dd7d09SAndy Fiddaman local A B D I P V 1091*b4dd7d09SAndy Fiddaman type := binary 1092*b4dd7d09SAndy Fiddaman if ! "$(incremental)" 1093*b4dd7d09SAndy Fiddaman incremental = 0 1094*b4dd7d09SAndy Fiddaman end 1095*b4dd7d09SAndy Fiddaman if ! "$(~$(name))" 1096*b4dd7d09SAndy Fiddaman if name == "ratz" 1097*b4dd7d09SAndy Fiddaman suffix = exe 1098*b4dd7d09SAndy Fiddaman else 1099*b4dd7d09SAndy Fiddaman suffix = gz 1100*b4dd7d09SAndy Fiddaman end 1101*b4dd7d09SAndy Fiddaman end 1102*b4dd7d09SAndy Fiddaman : $(.init.$(style)) : 1103*b4dd7d09SAndy Fiddaman : $(details.$(style):V:R) : 1104*b4dd7d09SAndy Fiddaman A := $(binary.list) 1105*b4dd7d09SAndy Fiddaman B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) 1106*b4dd7d09SAndy Fiddaman P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) 1107*b4dd7d09SAndy Fiddaman D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) 1108*b4dd7d09SAndy Fiddaman if op == "delta" 1109*b4dd7d09SAndy Fiddaman if ! B 1110*b4dd7d09SAndy Fiddaman error 3 delta requires a base archive 1111*b4dd7d09SAndy Fiddaman end 1112*b4dd7d09SAndy Fiddaman base := -z $(B) 1113*b4dd7d09SAndy Fiddaman if "$(release)" != "$(stamp)" 1114*b4dd7d09SAndy Fiddaman release := $("":T=R%Y-%m-%d) 1115*b4dd7d09SAndy Fiddaman end 1116*b4dd7d09SAndy Fiddaman binary := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) 1117*b4dd7d09SAndy Fiddaman version := $(binary:B:B:/$(name).//) 1118*b4dd7d09SAndy Fiddaman elif B || op == "base" 1119*b4dd7d09SAndy Fiddaman if op == "base" 1120*b4dd7d09SAndy Fiddaman for I $(B) $(P) 1121*b4dd7d09SAndy Fiddaman V := $(I:B:/$(name)\.\([^.]*\).*/\1/) 1122*b4dd7d09SAndy Fiddaman if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" 1123*b4dd7d09SAndy Fiddaman old.version := $(V) 1124*b4dd7d09SAndy Fiddaman old.binary := $(I) 1125*b4dd7d09SAndy Fiddaman if "$(old.version)" >= "$(version)" 1126*b4dd7d09SAndy Fiddaman error 3 $(name): previous base $(old.version) is newer than $(version) 1127*b4dd7d09SAndy Fiddaman end 1128*b4dd7d09SAndy Fiddaman break 1129*b4dd7d09SAndy Fiddaman end 1130*b4dd7d09SAndy Fiddaman end 1131*b4dd7d09SAndy Fiddaman else 1132*b4dd7d09SAndy Fiddaman binary := $(B) 1133*b4dd7d09SAndy Fiddaman end 1134*b4dd7d09SAndy Fiddaman if B == "$(binary)" 1135*b4dd7d09SAndy Fiddaman if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" 1136*b4dd7d09SAndy Fiddaman error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) 1137*b4dd7d09SAndy Fiddaman end 1138*b4dd7d09SAndy Fiddaman error 1 $(B:B:S): replacing current base 1139*b4dd7d09SAndy Fiddaman end 1140*b4dd7d09SAndy Fiddaman version := $(binary:B:/$(name).//:/\..*//) 1141*b4dd7d09SAndy Fiddaman end 1142*b4dd7d09SAndy Fiddaman PACKAGEGEN := $(PACKAGEBIN)/gen 1143*b4dd7d09SAndy Fiddaman 1144*b4dd7d09SAndy Fiddaman.binary.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) 1145*b4dd7d09SAndy Fiddaman 1146*b4dd7d09SAndy Fiddaman.binary.exp .binary.pkg .binary.rpm : .MAKE 1147*b4dd7d09SAndy Fiddaman error 3 $(style): binary package style not supported yet 1148*b4dd7d09SAndy Fiddaman 1149*b4dd7d09SAndy Fiddaman.binary.cyg : 1150*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 1151*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 1152*b4dd7d09SAndy Fiddaman mkdir $tmp 1153*b4dd7d09SAndy Fiddaman { 1154*b4dd7d09SAndy Fiddaman integer m=0 o 1155*b4dd7d09SAndy Fiddaman { 1156*b4dd7d09SAndy Fiddaman echo '$($(name.original).README)' | fmt 1157*b4dd7d09SAndy Fiddaman cat <<'!' 1158*b4dd7d09SAndy Fiddaman $(readme.$(style):@?$$("\n")$$(readme.$$(style))??) 1159*b4dd7d09SAndy Fiddaman ! 1160*b4dd7d09SAndy Fiddaman } > $tmp/README1 1161*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README1;usr/share/doc/Cygwin/$(opt:/.$//).README" 1162*b4dd7d09SAndy Fiddaman { 1163*b4dd7d09SAndy Fiddaman echo '$($(name.original).README)' | fmt 1164*b4dd7d09SAndy Fiddaman cat <<'!' 1165*b4dd7d09SAndy Fiddaman $() 1166*b4dd7d09SAndy Fiddaman The remainder of this file is the README from the source package 1167*b4dd7d09SAndy Fiddaman that was used to generate this binary package. It describes 1168*b4dd7d09SAndy Fiddaman the source build hierarchy, not the current directory. 1169*b4dd7d09SAndy Fiddaman $() 1170*b4dd7d09SAndy Fiddaman $(package.readme) 1171*b4dd7d09SAndy Fiddaman ! 1172*b4dd7d09SAndy Fiddaman } > $tmp/README2 1173*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README2;usr/share/doc/$(opt)README" 1174*b4dd7d09SAndy Fiddaman package release $(name.original) > $tmp/RELEASE 1175*b4dd7d09SAndy Fiddaman echo ";;;$tmp/RELEASE;usr/share/doc/$(opt)RELEASE" 1176*b4dd7d09SAndy Fiddaman cat > $(binary:/.$(suffix)//).setup.hint <<'!' 1177*b4dd7d09SAndy Fiddaman category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L) 1178*b4dd7d09SAndy Fiddaman requires: cygwin 1179*b4dd7d09SAndy Fiddaman sdesc: "$(index)" 1180*b4dd7d09SAndy Fiddaman ldesc: "$($(name.original).README)" 1181*b4dd7d09SAndy Fiddaman ! 1182*b4dd7d09SAndy Fiddaman set -- $(.package.licenses. --text $(name.original):N!=*.lic) 1183*b4dd7d09SAndy Fiddaman for i 1184*b4dd7d09SAndy Fiddaman do echo ";;;${i};usr/share/doc/$(opt)LICENSE-${i##*/}" 1185*b4dd7d09SAndy Fiddaman done 1186*b4dd7d09SAndy Fiddaman cat <<'!' 1187*b4dd7d09SAndy Fiddaman $(filter.$(style)) 1188*b4dd7d09SAndy Fiddaman ! 1189*b4dd7d09SAndy Fiddaman if [[ '$(postinstall.$(style):V:O=1:?1??)' ]] 1190*b4dd7d09SAndy Fiddaman then cat >$tmp/postinstall <<'!' 1191*b4dd7d09SAndy Fiddaman $("#")!/bin/sh 1192*b4dd7d09SAndy Fiddaman $(postinstall.$(style)) 1193*b4dd7d09SAndy Fiddaman ! 1194*b4dd7d09SAndy Fiddaman echo ";;;$tmp/postinstall;etc/postinstall/$(name).sh" 1195*b4dd7d09SAndy Fiddaman fi 1196*b4dd7d09SAndy Fiddaman } | 1197*b4dd7d09SAndy Fiddaman { 1198*b4dd7d09SAndy Fiddaman : > $tmp/HEAD 1199*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" 1200*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u 1201*b4dd7d09SAndy Fiddaman : > $tmp/TAIL 1202*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" 1203*b4dd7d09SAndy Fiddaman } | 1204*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 1205*b4dd7d09SAndy Fiddaman --to=ascii \ 1206*b4dd7d09SAndy Fiddaman --format=$(format) \ 1207*b4dd7d09SAndy Fiddaman --local \ 1208*b4dd7d09SAndy Fiddaman -wvf $(binary) 1209*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) 1210*b4dd7d09SAndy Fiddaman rm -rf $tmp 1211*b4dd7d09SAndy Fiddaman fi 1212*b4dd7d09SAndy Fiddaman 1213*b4dd7d09SAndy Fiddaman.binary.lcl : 1214*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 1215*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 1216*b4dd7d09SAndy Fiddaman mkdir $tmp 1217*b4dd7d09SAndy Fiddaman { 1218*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/) 1219*b4dd7d09SAndy Fiddaman $(package.bin:U:T=F:/.*/echo ";;;&"$("\n")/) 1220*b4dd7d09SAndy Fiddaman set -- $(package.closure) 1221*b4dd7d09SAndy Fiddaman for i 1222*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 1223*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc- 1224*b4dd7d09SAndy Fiddaman done 1225*b4dd7d09SAndy Fiddaman } | 1226*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 1227*b4dd7d09SAndy Fiddaman --to=ascii \ 1228*b4dd7d09SAndy Fiddaman $(op:N=delta:??--format=$(format)?) \ 1229*b4dd7d09SAndy Fiddaman --local \ 1230*b4dd7d09SAndy Fiddaman --checksum=md5:$(PACKAGEGEN)/$(name).sum \ 1231*b4dd7d09SAndy Fiddaman --install=$(PACKAGEGEN)/$(name).ins \ 1232*b4dd7d09SAndy Fiddaman -wvf $(binary) $(base) \ 1233*b4dd7d09SAndy Fiddaman $(op:N=delta:?--format=gzip??) \ 1234*b4dd7d09SAndy Fiddaman -s",^$tmp/,$(INSTALLOFFSET)/," \ 1235*b4dd7d09SAndy Fiddaman $(PACKAGEROOT:C%.*%-s",^&/,,"%) 1236*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) 1237*b4dd7d09SAndy Fiddaman echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) 1238*b4dd7d09SAndy Fiddaman rm -rf $tmp 1239*b4dd7d09SAndy Fiddaman fi 1240*b4dd7d09SAndy Fiddaman 1241*b4dd7d09SAndy Fiddaman.binary.tgz : 1242*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 1243*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 1244*b4dd7d09SAndy Fiddaman mkdir $tmp 1245*b4dd7d09SAndy Fiddaman { 1246*b4dd7d09SAndy Fiddaman if [[ '$(init)' == '$(name)' ]] 1247*b4dd7d09SAndy Fiddaman then for i in lib32 lib64 1248*b4dd7d09SAndy Fiddaman do if [[ -d $(INSTALLROOT)/$i ]] 1249*b4dd7d09SAndy Fiddaman then echo ";physical;;$(INSTALLROOT)/$i" 1250*b4dd7d09SAndy Fiddaman fi 1251*b4dd7d09SAndy Fiddaman done 1252*b4dd7d09SAndy Fiddaman fi 1253*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) 1254*b4dd7d09SAndy Fiddaman $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) 1255*b4dd7d09SAndy Fiddaman $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) 1256*b4dd7d09SAndy Fiddaman if [[ '$(PACKAGEDIR:B)' == '$(style)' ]] 1257*b4dd7d09SAndy Fiddaman then echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver 1258*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" 1259*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 1260*b4dd7d09SAndy Fiddaman then for i in $(~covers) 1261*b4dd7d09SAndy Fiddaman do for j in lic pkg 1262*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGESRC)/$i.$j ]] 1263*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" 1264*b4dd7d09SAndy Fiddaman fi 1265*b4dd7d09SAndy Fiddaman done 1266*b4dd7d09SAndy Fiddaman for j in ver req 1267*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGEGEN)/$i.$j ]] 1268*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" 1269*b4dd7d09SAndy Fiddaman fi 1270*b4dd7d09SAndy Fiddaman done 1271*b4dd7d09SAndy Fiddaman done 1272*b4dd7d09SAndy Fiddaman for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) 1273*b4dd7d09SAndy Fiddaman do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" 1274*b4dd7d09SAndy Fiddaman done 1275*b4dd7d09SAndy Fiddaman fi 1276*b4dd7d09SAndy Fiddaman sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req 1277*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" 1278*b4dd7d09SAndy Fiddaman { 1279*b4dd7d09SAndy Fiddaman echo "name='$(name)'" 1280*b4dd7d09SAndy Fiddaman echo "index='$(index)'" 1281*b4dd7d09SAndy Fiddaman echo "covers='$(~covers)'" 1282*b4dd7d09SAndy Fiddaman echo "requires='$(~req)'" 1283*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).inx 1284*b4dd7d09SAndy Fiddaman { 1285*b4dd7d09SAndy Fiddaman { 1286*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 1287*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 1288*b4dd7d09SAndy Fiddaman 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)." 1289*b4dd7d09SAndy Fiddaman fi 1290*b4dd7d09SAndy Fiddaman if [[ '$(~requires)' ]] 1291*b4dd7d09SAndy Fiddaman then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' 1292*b4dd7d09SAndy Fiddaman fi 1293*b4dd7d09SAndy Fiddaman } | fmt 1294*b4dd7d09SAndy Fiddaman package help binary 1295*b4dd7d09SAndy Fiddaman package release $(name) 1296*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).README 1297*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README" 1298*b4dd7d09SAndy Fiddaman fi 1299*b4dd7d09SAndy Fiddaman set -- $(package.closure) 1300*b4dd7d09SAndy Fiddaman for i 1301*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 1302*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- 1303*b4dd7d09SAndy Fiddaman done 1304*b4dd7d09SAndy Fiddaman } | 1305*b4dd7d09SAndy Fiddaman { 1306*b4dd7d09SAndy Fiddaman : > $tmp/HEAD 1307*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" 1308*b4dd7d09SAndy Fiddaman cat > $tmp/README <<'!' 1309*b4dd7d09SAndy Fiddaman $(package.readme) 1310*b4dd7d09SAndy Fiddaman ! 1311*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README;README" 1312*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u 1313*b4dd7d09SAndy Fiddaman : > $tmp/TAIL 1314*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" 1315*b4dd7d09SAndy Fiddaman } | 1316*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 1317*b4dd7d09SAndy Fiddaman --to=ascii \ 1318*b4dd7d09SAndy Fiddaman $(op:N=delta:??--format=$(format)?) \ 1319*b4dd7d09SAndy Fiddaman --local \ 1320*b4dd7d09SAndy Fiddaman --checksum=md5:$(PACKAGEGEN)/$(name).sum \ 1321*b4dd7d09SAndy Fiddaman --install=$(PACKAGEGEN)/$(name).ins \ 1322*b4dd7d09SAndy Fiddaman -wvf $(binary) $(base) \ 1323*b4dd7d09SAndy Fiddaman $(op:N=delta:?--format=gzip??) \ 1324*b4dd7d09SAndy Fiddaman -s",^$tmp/,$(INSTALLOFFSET)/," \ 1325*b4dd7d09SAndy Fiddaman $(PACKAGEROOT:C%.*%-s",^&/,,"%) 1326*b4dd7d09SAndy Fiddaman echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1327*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) 1328*b4dd7d09SAndy Fiddaman echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1329*b4dd7d09SAndy Fiddaman echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) 1330*b4dd7d09SAndy Fiddaman if [[ '$(incremental)' == 1 && '$(old.binary)' ]] 1331*b4dd7d09SAndy Fiddaman then $(PAX) -rf $(binary) -wvf $(old.new.binary) -z $(old.binary) 1332*b4dd7d09SAndy Fiddaman echo $(old.new.binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1333*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(old.new.binary) > $(old.new.binary:D:B:S=.$(checksum)) 1334*b4dd7d09SAndy Fiddaman echo $(old.new.binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1335*b4dd7d09SAndy Fiddaman fi 1336*b4dd7d09SAndy Fiddaman rm -rf $tmp 1337*b4dd7d09SAndy Fiddaman else if [[ '$(binary.$(name))' ]] 1338*b4dd7d09SAndy Fiddaman then exe=$(binary.$(name)) 1339*b4dd7d09SAndy Fiddaman else exe=$(INSTALLROOT)/bin/$(name) 1340*b4dd7d09SAndy Fiddaman fi 1341*b4dd7d09SAndy Fiddaman if [[ '$(old.binary)' ]] && $(CMP) $(CMPFLAGS) $exe $(binary) 1342*b4dd7d09SAndy Fiddaman then : $(name) is up to date 1343*b4dd7d09SAndy Fiddaman else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver 1344*b4dd7d09SAndy Fiddaman : > $(PACKAGEGEN)/$(name).req 1345*b4dd7d09SAndy Fiddaman { 1346*b4dd7d09SAndy Fiddaman echo "name='$(name)'" 1347*b4dd7d09SAndy Fiddaman echo "index='$(index)'" 1348*b4dd7d09SAndy Fiddaman echo "covers='$(~covers)'" 1349*b4dd7d09SAndy Fiddaman echo "requires='$(~req)'" 1350*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).inx 1351*b4dd7d09SAndy Fiddaman { 1352*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 1353*b4dd7d09SAndy Fiddaman package help binary 1354*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).README 1355*b4dd7d09SAndy Fiddaman case "$(binary)" in 1356*b4dd7d09SAndy Fiddaman *.gz) gzip < $exe > $(binary) ;; 1357*b4dd7d09SAndy Fiddaman *) cp $exe $(binary) ;; 1358*b4dd7d09SAndy Fiddaman esac 1359*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum)) 1360*b4dd7d09SAndy Fiddaman echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim) 1361*b4dd7d09SAndy Fiddaman fi 1362*b4dd7d09SAndy Fiddaman echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1363*b4dd7d09SAndy Fiddaman echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1364*b4dd7d09SAndy Fiddaman fi 1365*b4dd7d09SAndy Fiddaman 1366*b4dd7d09SAndy Fiddamanruntime : .runtime.init .runtime.gen .runtime.$$(style) 1367*b4dd7d09SAndy Fiddaman 1368*b4dd7d09SAndy Fiddaman.runtime.init : .MAKE 1369*b4dd7d09SAndy Fiddaman local A B D I P V 1370*b4dd7d09SAndy Fiddaman type := runtime 1371*b4dd7d09SAndy Fiddaman if ! "$(incremental)" 1372*b4dd7d09SAndy Fiddaman incremental = 0 1373*b4dd7d09SAndy Fiddaman end 1374*b4dd7d09SAndy Fiddaman if ! "$(~$(name))" 1375*b4dd7d09SAndy Fiddaman if name == "ratz" 1376*b4dd7d09SAndy Fiddaman suffix = exe 1377*b4dd7d09SAndy Fiddaman else 1378*b4dd7d09SAndy Fiddaman suffix = gz 1379*b4dd7d09SAndy Fiddaman end 1380*b4dd7d09SAndy Fiddaman end 1381*b4dd7d09SAndy Fiddaman : $(.init.$(style)) : 1382*b4dd7d09SAndy Fiddaman : $(details.$(style):V:R) : 1383*b4dd7d09SAndy Fiddaman A := $(runtime.list) 1384*b4dd7d09SAndy Fiddaman B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F) 1385*b4dd7d09SAndy Fiddaman P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F) 1386*b4dd7d09SAndy Fiddaman D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F) 1387*b4dd7d09SAndy Fiddaman if op == "delta" 1388*b4dd7d09SAndy Fiddaman if ! B 1389*b4dd7d09SAndy Fiddaman error 3 delta requires a base archive 1390*b4dd7d09SAndy Fiddaman end 1391*b4dd7d09SAndy Fiddaman base := -z $(B) 1392*b4dd7d09SAndy Fiddaman if "$(release)" != "$(stamp)" 1393*b4dd7d09SAndy Fiddaman release := $("":T=R%Y-%m-%d) 1394*b4dd7d09SAndy Fiddaman end 1395*b4dd7d09SAndy Fiddaman runtime := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/) 1396*b4dd7d09SAndy Fiddaman version := $(runtime:B:B:/$(name).//) 1397*b4dd7d09SAndy Fiddaman elif B || op == "base" 1398*b4dd7d09SAndy Fiddaman if op == "base" 1399*b4dd7d09SAndy Fiddaman for I $(B) $(P) 1400*b4dd7d09SAndy Fiddaman V := $(I:B:/$(name)-run\.\([^.]*\).*/\1/) 1401*b4dd7d09SAndy Fiddaman if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)" 1402*b4dd7d09SAndy Fiddaman old.version := $(V) 1403*b4dd7d09SAndy Fiddaman old.runtime := $(I) 1404*b4dd7d09SAndy Fiddaman if "$(old.version)" >= "$(version)" 1405*b4dd7d09SAndy Fiddaman error 3 $(name): previous base $(old.version) is newer than $(version) 1406*b4dd7d09SAndy Fiddaman end 1407*b4dd7d09SAndy Fiddaman break 1408*b4dd7d09SAndy Fiddaman end 1409*b4dd7d09SAndy Fiddaman end 1410*b4dd7d09SAndy Fiddaman else 1411*b4dd7d09SAndy Fiddaman runtime := $(B) 1412*b4dd7d09SAndy Fiddaman end 1413*b4dd7d09SAndy Fiddaman if B == "$(runtime)" 1414*b4dd7d09SAndy Fiddaman if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)" 1415*b4dd7d09SAndy Fiddaman error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S) 1416*b4dd7d09SAndy Fiddaman end 1417*b4dd7d09SAndy Fiddaman error 1 $(B:B:S): replacing current base 1418*b4dd7d09SAndy Fiddaman end 1419*b4dd7d09SAndy Fiddaman version := $(runtime:B:/$(name)-run.//:/\..*//) 1420*b4dd7d09SAndy Fiddaman end 1421*b4dd7d09SAndy Fiddaman PACKAGEGEN := $(PACKAGESRC)/gen 1422*b4dd7d09SAndy Fiddaman 1423*b4dd7d09SAndy Fiddaman.runtime.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) 1424*b4dd7d09SAndy Fiddaman 1425*b4dd7d09SAndy Fiddaman.runtime.cyg .runtime.exp .runtime.lcl .runtime.pkg .runtime.rpm : .MAKE 1426*b4dd7d09SAndy Fiddaman error 3 $(style): runtime package style not supported yet 1427*b4dd7d09SAndy Fiddaman 1428*b4dd7d09SAndy Fiddaman.runtime.tgz : 1429*b4dd7d09SAndy Fiddaman if [[ '$(~$(name))' ]] 1430*b4dd7d09SAndy Fiddaman then tmp=/tmp/pkg$(tmp) 1431*b4dd7d09SAndy Fiddaman mkdir $tmp 1432*b4dd7d09SAndy Fiddaman { 1433*b4dd7d09SAndy Fiddaman if [[ '$(init)' == '$(name)' ]] 1434*b4dd7d09SAndy Fiddaman then for i in lib32 lib64 1435*b4dd7d09SAndy Fiddaman do if [[ -d $(INSTALLROOT)/$i ]] 1436*b4dd7d09SAndy Fiddaman then echo ";physical;;$(INSTALLROOT)/$i" 1437*b4dd7d09SAndy Fiddaman fi 1438*b4dd7d09SAndy Fiddaman done 1439*b4dd7d09SAndy Fiddaman fi 1440*b4dd7d09SAndy Fiddaman $(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%) 1441*b4dd7d09SAndy Fiddaman $(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) 1442*b4dd7d09SAndy Fiddaman $(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%) 1443*b4dd7d09SAndy Fiddaman echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver 1444*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver" 1445*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 1446*b4dd7d09SAndy Fiddaman then for i in $(~covers) 1447*b4dd7d09SAndy Fiddaman do for j in lic pkg 1448*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGESRC)/$i.$j ]] 1449*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j" 1450*b4dd7d09SAndy Fiddaman fi 1451*b4dd7d09SAndy Fiddaman done 1452*b4dd7d09SAndy Fiddaman for j in ver req 1453*b4dd7d09SAndy Fiddaman do if [[ -f $(PACKAGEGEN)/$i.$j ]] 1454*b4dd7d09SAndy Fiddaman then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j" 1455*b4dd7d09SAndy Fiddaman fi 1456*b4dd7d09SAndy Fiddaman done 1457*b4dd7d09SAndy Fiddaman done 1458*b4dd7d09SAndy Fiddaman for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S) 1459*b4dd7d09SAndy Fiddaman do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i" 1460*b4dd7d09SAndy Fiddaman done 1461*b4dd7d09SAndy Fiddaman fi 1462*b4dd7d09SAndy Fiddaman sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req 1463*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req" 1464*b4dd7d09SAndy Fiddaman { 1465*b4dd7d09SAndy Fiddaman echo "name='$(name)'" 1466*b4dd7d09SAndy Fiddaman echo "index='$(index)'" 1467*b4dd7d09SAndy Fiddaman echo "covers='$(~covers)'" 1468*b4dd7d09SAndy Fiddaman echo "requires='$(~req)'" 1469*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name).inx 1470*b4dd7d09SAndy Fiddaman { 1471*b4dd7d09SAndy Fiddaman { 1472*b4dd7d09SAndy Fiddaman echo '$($(name).README)' 1473*b4dd7d09SAndy Fiddaman if [[ '$(~covers)' ]] 1474*b4dd7d09SAndy Fiddaman then echo 1475*b4dd7d09SAndy Fiddaman 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)." 1476*b4dd7d09SAndy Fiddaman fi 1477*b4dd7d09SAndy Fiddaman if [[ '$(~requires)' ]] 1478*b4dd7d09SAndy Fiddaman then echo 1479*b4dd7d09SAndy Fiddaman echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).' 1480*b4dd7d09SAndy Fiddaman fi 1481*b4dd7d09SAndy Fiddaman echo 1482*b4dd7d09SAndy Fiddaman echo "To install this $(type) package read the tarball into a directory" 1483*b4dd7d09SAndy Fiddaman echo "suitable for containing bin and lib subdirectories, and run the" 1484*b4dd7d09SAndy Fiddaman echo "$(PACKAGELIB)/gen/$(name)-run.ins script to fix up permissions." 1485*b4dd7d09SAndy Fiddaman echo 1486*b4dd7d09SAndy Fiddaman echo "To use the package export the bin directory in PATH. The commands and" 1487*b4dd7d09SAndy Fiddaman echo "libraries use \$PATH to locate dynamic libraries and related data files." 1488*b4dd7d09SAndy Fiddaman echo 1489*b4dd7d09SAndy Fiddaman } | fmt 1490*b4dd7d09SAndy Fiddaman } > $(PACKAGEGEN)/$(name)-run.README 1491*b4dd7d09SAndy Fiddaman echo ";;;$(PACKAGEGEN)/$(name)-run.README;$(PACKAGELIB)/$(name)-run.README" 1492*b4dd7d09SAndy Fiddaman set -- $(package.closure) 1493*b4dd7d09SAndy Fiddaman for i 1494*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 1495*b4dd7d09SAndy Fiddaman $(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc- 1496*b4dd7d09SAndy Fiddaman done 1497*b4dd7d09SAndy Fiddaman } | 1498*b4dd7d09SAndy Fiddaman { 1499*b4dd7d09SAndy Fiddaman : > $tmp/HEAD 1500*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)" 1501*b4dd7d09SAndy Fiddaman cat > $tmp/README <<'!' 1502*b4dd7d09SAndy Fiddaman $(package.readme) 1503*b4dd7d09SAndy Fiddaman ! 1504*b4dd7d09SAndy Fiddaman echo ";;;$tmp/README;README" 1505*b4dd7d09SAndy Fiddaman sort -t';' -k5,5 -u 1506*b4dd7d09SAndy Fiddaman : > $tmp/TAIL 1507*b4dd7d09SAndy Fiddaman [[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)" 1508*b4dd7d09SAndy Fiddaman } | 1509*b4dd7d09SAndy Fiddaman $(PAX) --filter=- \ 1510*b4dd7d09SAndy Fiddaman --to=ascii \ 1511*b4dd7d09SAndy Fiddaman $(op:N=delta:??--format=$(format)?) \ 1512*b4dd7d09SAndy Fiddaman --local \ 1513*b4dd7d09SAndy Fiddaman --checksum=md5:$(PACKAGEGEN)/$(name)-run.sum \ 1514*b4dd7d09SAndy Fiddaman --install=$(PACKAGEGEN)/$(name)-run.ins \ 1515*b4dd7d09SAndy Fiddaman -wvf $(runtime) $(base) \ 1516*b4dd7d09SAndy Fiddaman $(op:N=delta:?--format=gzip??) \ 1517*b4dd7d09SAndy Fiddaman -s",^$tmp/,$(INSTALLOFFSET)/," \ 1518*b4dd7d09SAndy Fiddaman $(PACKAGEROOT:C%.*%-s",^&/,,"%) 1519*b4dd7d09SAndy Fiddaman echo $(runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1520*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(runtime) > $(runtime:D:B:S=.$(checksum)) 1521*b4dd7d09SAndy Fiddaman echo $(runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1522*b4dd7d09SAndy Fiddaman echo local > $(runtime:D:B=$(name)-run:S=.$(CC.HOSTTYPE).tim) 1523*b4dd7d09SAndy Fiddaman if [[ '$(incremental)' == 1 && '$(old.runtime)' ]] 1524*b4dd7d09SAndy Fiddaman then $(PAX) -rf $(runtime) -wvf $(old.new.runtime) -z $(old.runtime) 1525*b4dd7d09SAndy Fiddaman echo $(old.new.runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1526*b4dd7d09SAndy Fiddaman $(SUM) -x $(checksum) < $(old.new.runtime) > $(old.new.runtime:D:B:S=.$(checksum)) 1527*b4dd7d09SAndy Fiddaman echo $(old.new.runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst) 1528*b4dd7d09SAndy Fiddaman fi 1529*b4dd7d09SAndy Fiddaman rm -rf $tmp 1530*b4dd7d09SAndy Fiddaman fi 1531*b4dd7d09SAndy Fiddaman 1532*b4dd7d09SAndy Fiddamanlist.installed list.manifest : 1533*b4dd7d09SAndy Fiddaman set -- $(package.closure) 1534*b4dd7d09SAndy Fiddaman for i 1535*b4dd7d09SAndy Fiddaman do cd $(INSTALLROOT)/$i 1536*b4dd7d09SAndy Fiddaman ignore $(MAKE) --noexec $(-) $(=) $(<) 1537*b4dd7d09SAndy Fiddaman done 1538