package.mk revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder * source and binary package support
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * @(#)package.mk (AT&T Research) 2012-02-14
3f69b6948966979163bdfe8331c38833d5d90ecdChristian Maeder * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type
e6d40133bc9f858308654afb1262b8b483ec5922Till Mossakowski * name package description file or component
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * type source build source archive, generates
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * $(PACKAGEDIR)/name.version.release.suffix
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * binary build binary archive, generates
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * $(PACKAGEDIR)/name.version.hosttype.release.suffix
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * runtime build binary archive, generates
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * $(PACKAGEDIR)/name-run.version.hosttype.release.suffix
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * generated archive member files are $(PACKAGEROOT) relative
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * main assertions:
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * NAME [ name=value ] :PACKAGE: component ...
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :OMIT: component ...
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :LICENSE: license-class-pattern
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :CATEGORY: category-id ...
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :COVERS: package ...
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :REQURES: package ...
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :INDEX: index description line
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :DESCRIPTION:
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * [ verbose description ]
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :DETAILS: style
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * readme lines
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * target :INSTALL: [ source ]
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * option variables, shown with default values
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * archive format
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * version=YYYY-MM-DD
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * package base version (overrides current date)
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * release=YYYY-MM-DD
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * package delta release (overrides current date)
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * license=type.class
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :LICENSE: type.class pattern override
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * include the conspicuous empty notice file
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * copyright=0
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * do not prepend source file copyright notice
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * don't strip non-lcl binary package members
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * variants=pattern
f8b715ab2993083761c0aedb78f1819bcf67b6ccChristian Maeder * include variants matching pattern in binary packages
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder * incremental=[source:1 binary:0]
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder * if a base archive is generated then also generate an
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder * incremental delta archive from the previous base
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang * a target is specified
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder/* these are ast centric -- we'll parameterize another day */
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maederurl = http://www.research.att.com/sw/download
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder/* generic defaults */
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maederpackage.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder This is a package root directory $PACKAGEROOT. Source and binary
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder packages in this directory tree are controlled by the command
e6dccba746efe07338d3107fed512e713fd50b28Christian Maeder Binary files may be in this directory or in the install root directory
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder INSTALLROOT=$PACKAGEROOT/arch/`bin/package`
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder Many of the packaged commands self-document via the --man and --html
9a6779c8495854bdf36e4a87f98f095e8d0a6e45Christian Maeder options; those that do have no separate man page.
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder Each package is covered by one of the license files
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder where <license> is the license type for the package. At the top
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder of each license file is a URL; the license covers all software that
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder Any archives, distributions or packages made from source or
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder binaries covered by license(s) must contain the corresponding
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder license file(s)$(notice:?, this README file, and the empty file$$("\n")$$(package.notice)?.?)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder while L == "--*"
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder I := $(L:O=1)
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder if I == "--all"
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder L := $(L:O>1)
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder L += $(L:/[^-]*-//) $(L:/-.*//)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder if I == "gpl"
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)"
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski T := $(.FIND. lib/package .lic $(F):P=W,query=type)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder * glob(3) doesn't handle / in alternation -- should it?
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if I == "*/*"
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder D := $(I:C,/.*,,)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if ! "$(A:N=$(D))"
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder S.$(D) += $(I:C,[^/]*/,,)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder P := $(P)$(S)$(I)
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder if P == "*\|*"
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder P += $(I)/$(.package.glob. $(S.$(I)))
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder V := $(VROOT:T=F:P=L*)
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder if V == "$(PACKAGEROOT)"
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederINSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.glob.all = $(INSTALLROOT)/src/*/*/($(MAKEFILES:/:/|/G))
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.all = $(package.glob.all:P=G:W=O=$(?$(name):A=.VIRTUAL):N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.glob.pkg = $(.package.glob. $(~$(name):P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%) $(~$(name):P=U:N=$(name):?$$(INSTALLROOT)/src/$$(name)/($$(MAKEFILES:/:/|/G))??)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.pkg = $(package.glob.pkg:P=G:D:N!=$(package.omit):T=F:$(PACKAGEVIEW:C,.*,C;^&/;;,:/ /:/G):U)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.closure = $(closure:?$$(package.all)?$$(package.pkg)?)
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maederpackage.init = $(.package.glob. $("$(init)$(name)":P=U):C%.*%$(INSTALLROOT)/src/*/&/($(MAKEFILES:/:/|/G))%:P=G:T=F:D::B)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.ini = ignore mamprobe manmake package silent
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.src.pat = $(PACKAGESRC)/($(name).(ini|pkg))
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.src = $(package.src.pat:P=G) $(.package.licenses. --save $(name))
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maederpackage.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
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederstamp = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maedersource = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(suffix)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederbinary = $(PACKAGEDIR)/$(name).$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maederruntime = $(PACKAGEDIR)/$(name)-run.$(version)$(release:?.$(release)??).$(CC.HOSTTYPE).$(suffix)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederold.new.source = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(suffix)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maederold.new.binary = $(PACKAGEDIR)/$(name).$(version).$(old.version).$(CC.HOSTTYPE).$(suffix)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maederold.new.runtime = $(PACKAGEDIR)/$(name)-run.$(version).$(old.version).$(CC.HOSTTYPE).$(suffix)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maedersource.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(suffix)":P=G:H=R)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederbinary.list = $("$(PACKAGEDIR)/$(name).*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H=R)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maederruntime.list = $("$(PACKAGEDIR)/$(name)-run.*$(stamp).$(CC.HOSTTYPE).$(suffix)":P=G:H>)
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maedersource.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F)
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maederbinary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder P := $(<:O=1)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder $(P) : $(>:V)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder $(P) : $(package.init)
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski for I $(<:O>1)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if I == "*=*"
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G)
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder package.dir += $(I:V)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F)
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder":CATEGORY:" : .MAKE .OPERATOR
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder if ! package.requires
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder category := $(>)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder.covers. : .FUNCTION
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder local I C D F K=0 L
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! "$(~covers:N=$(I:B))"
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder if F = "$(I:D:B:S=.pkg:T=F)"
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder if D = "$(F:T=I)"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder covers : $(I:B)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if L == ":COVERS:"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder elif L == ":*:"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder : $(.covers. $(L))
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder error $(--exec:?3?1?) $(I): unknown package $(I)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":COVERS:" : .MAKE .OPERATOR
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder if ! package.requires
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder : $(.covers. $(>))
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":DESCRIPTION:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder $(name).README := $(@:V)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":DETAILS:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder details.$(>:O=1) := $(@:V)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":EXPORT:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder export.$(style) := $(@:/$$("\n")/ /G)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":INDEX:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder index := $(>)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":INSTALL:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder local T S F X
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if "$(exe.$(style))" && "$(T)" == "bin/*([!./])"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder T := $(T).exe
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])"
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder S := $(S).exe
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder install.$(style) := $(install.$(style):V)$("\n")install : $$(ROOT)/$(T)$("\n")$$(ROOT)/$(T) : $$(ARCH)/$(S)$("\n\t")cp $< $@
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if strip && "$(T:N=*.exe)"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder install.$(style) := $(install.$(style):V)$("\n\t")strip $@ 2>/dev/null
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder X := $(PACKAGEROOT)/arch/$(CC.HOSTTYPE)/$(S)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if strip && "$(X:T=Y)" == "*/?(x-)(dll|exe)"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder F := filter $(STRIP) $(STRIPFLAGS) $(X)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder filter.$(style) := $(filter.$(style):V)$$("\n")
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires && ! license
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder license := $(>)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder postinstall.$(style) := $(@:V)
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder if ! package.requires
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder readme.$(style) := $(@:V)
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder.requires. : .FUNCTION
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder local I C D F K=0 L V T M=0
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder package.omit = -
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder requires : $(I:B)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder error 1 $(I): package should be written before $(P)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder let package.requires = package.requires + 1
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder let package.requires = package.requires - 1
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian Maeder error 1 $(I): package not found
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder : $(.requires. $(>))
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder if ! package.requires
b10d6cef708b7a659f2d3b367e8e0db0d03ae3f5Till Mossakowski if "$(exe.$(style))"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder T := $(T).exe
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder T := $$(PWD)/$$(ARCH)/$(T)
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@)
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maederbase delta : .MAKE .VIRTUAL .FORCE
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maederclosure : .MAKE .VIRTUAL .FORCE
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maedercyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder style := $(<)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maedersource : .source.init .source.gen .source.$$(style)
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder local A B D P V I
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder type := source
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder if ! "$(incremental)"
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder incremental = 1
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder if "$(source.$(name))"
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder : $(.init.$(style))
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder : $(details.$(style):V:R) :
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder A := $(source.list)
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder B := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F)
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder P := $(A:N=*.$(stamp).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F)
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder D := $(A:N=*.$(stamp).$(stamp).$(suffix):O=1:T=F)
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder if op == "delta"
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski error 3 delta requires a base archive
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder base := -z $(B)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder deltaversion := $(B:B:/$(name).//)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder let deltasince = $(deltaversion:/.*-//) + 1
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski deltasince := $(deltaversion:/[^-]*$/$(deltasince:F=%02d)/)
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski if "$(release)" != "$(stamp)"
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder release := $("":T=R%Y-%m-%d)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder source := $(B:D:B:S=.$(release).$(suffix))
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski version := $(source:B:B:/$(name).//)
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder elif B || op == "base"
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder if op == "base"
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder for I $(B) $(P)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder error 3 $(name): previous base $(old.version) is newer than $(version)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder if B == "$(source)"
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder if "$(B:D:B:B)" == "$(D:D:B:B)" && "$(B:B::S)" != "$(D:B::S)"
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S)
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian MaederBINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder [[ -d $(<) ]] || mkdir $(<)
5a9a06d23910b9521e1d1cd39865ac7912ccee4bChristian Maeder error 3 $(style): source package style not supported yet
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder if N == "*-*"
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder N := $(N:/[^-]*-//)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder N := $(N:/-//G)
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder .source.gen : .CLEAR $(*.source.gen:V:N!=*.html)
32562a567baac248a00782d2727716c13117dc4aChristian Maeder stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix)
e68f45f355ed9d4026ee9baff5aa75aa7c911cc2Christian Maeder binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder if [[ '$(~$(name))' ]]
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style))
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run:
e7ddd5495421698701a2bbc57a5b3390a11d12caChristian Maeder $(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:
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder The bin/package command provides a command line interface for all package
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder operations. The $(opt:/.$//) source and binary packages were generated by:
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder package write cyg base source version=$(version.original) $(name.original)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder package write cyg base binary version=$(version.original) $(name.original)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder using the $(org)-base package. To download and install the latest
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder $(org)-base source package in /opt/$(org) run:
32562a567baac248a00782d2727716c13117dc4aChristian Maeder package authorize "NAME" password "PASSWORD" setup flat source $("\\")
fa373bc327620e08861294716b4454be8d25669fChristian Maeder and export /opt/$(org)/bin in PATH to use. The NAME and PASSWORD signify your
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder agreement to the software license(s). All users get the same NAME and PASSWORD.
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder See $(url) for details. If multiple architectures may be built under
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder /opt/$(org) then drop "flat" and export /opt/$(org)/arch/`package`/bin in PATH
32562a567baac248a00782d2727716c13117dc4aChristian Maeder to use. To update previously downloaded packages from the same url simply run:
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder To download and install the latest $(org)-base binary package in
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder /opt/$(org) change "source" to "binary" and omit "package make".
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder echo ";;;$tmp/CYGWIN-README;CYGWIN-PATCHES/README"
3b70d8ee5c2927f843d5d907e6ef724f867f1b40Till Mossakowski cat > $(source:/-src.$(suffix)//).setup.hint <<'!'
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint"
fc033b8680245bf692c9c09723fd3046ff38971eChristian Maeder $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder echo ";;;$(PACKAGEGEN)/$(name.original).req"
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' .
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null )
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder do if [[ -d $j ]]
then (( m++ ))
then (( m++ ))
$(package.readme)
--local \
--local \
:MAKE:
$(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile
$(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1
$(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2
$(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1
$(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2
$(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3
do if [[ -f $(PACKAGESRC)/$i.$j ]]
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
} > $tmp/t
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)."
} | fmt
} > $tmp/t
hot=
if [[ $hot ]]
do echo $i
done |
$hot
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)."
case $# in
*) case $# in
echo .P
then {
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html
then (( o=m ))
then (( m++ ))
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam
then (( m++ ))
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam
$(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?)
$(package.readme)
--local \
then {
local A B D I P V
base := -z $(B)
binary := $(B)
$(package.readme)
--local \
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc-
--local \
do if [[ -d $(INSTALLROOT)/$i ]]
do if [[ -f $(PACKAGESRC)/$i.$j ]]
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
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)."
} | fmt
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc-
$(package.readme)
--local \
local A B D I P V
base := -z $(B)
runtime := $(B)
do if [[ -d $(INSTALLROOT)/$i ]]
do if [[ -f $(PACKAGESRC)/$i.$j ]]
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
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)."
} | fmt
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc-
$(package.readme)
--local \