package.mk revision 3f54fd611f536639ec30dd53c48e5ec1897cc7d9
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder/*
57221209d11b05aa0373cc3892d5df89ba96ebf9Christian Maeder * source and binary package support
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder *
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * @(#)package.mk (AT&T Research) 2012-02-14
e6d40133bc9f858308654afb1262b8b483ec5922Till Mossakowski *
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski * usage:
98890889ffb2e8f6f722b00e265a211f13b5a861Corneliu-Claudiu Prodescu *
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * cd $INSTALLROOT/lib/package
3f69b6948966979163bdfe8331c38833d5d90ecdChristian Maeder * nmake -f name [closure] [cyg|exp|lcl|pkg|rpm|tgz] [base|delta] type
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder *
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder * where:
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maeder *
e6d40133bc9f858308654afb1262b8b483ec5922Till Mossakowski * name package description file or component
1549f3abf73c1122acff724f718b615c82fa3648Till Mossakowski *
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 *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * NOTE: $(PACKAGEDIR) is in the lowest view and is shared among all views
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * generated archive member files are $(PACKAGEROOT) relative
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * main assertions:
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
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:
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * readme lines
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :EXPORT:
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * name=value
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * target :INSTALL: [ source ]
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * option variables, shown with default values
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * format=tgz
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * archive format
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * version=YYYY-MM-DD
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * package base version (overrides current date)
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * release=YYYY-MM-DD
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * package delta release (overrides current date)
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * license=type.class
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * :LICENSE: type.class pattern override
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * notice=1
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * include the conspicuous empty notice file
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * copyright=0
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * do not prepend source file copyright notice
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * strip=0
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder * don't strip non-lcl binary package members
351391e0e3226210e7ffb183b334da9f96de36eaChristian Maeder *
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder * variants=pattern
f8b715ab2993083761c0aedb78f1819bcf67b6ccChristian Maeder * include variants matching pattern in binary packages
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder *
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
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder *
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski * NOTE: the Makerules.mk :PACKAGE: operator defers to :package: when
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang * a target is specified
23a00c966f2aa8da525d7a7c51933c99964426c0Christian Maeder */
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder/* these are ast centric -- we'll parameterize another day */
8e9c3881fb6e710b1e08bf5ac8ff9d393df2e74eChristian Maeder
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wangorg = ast
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maederurl = http://www.research.att.com/sw/download
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder/* generic defaults */
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowskibase =
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maedercategory = utils
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian Maederchecksum = md5
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maederclosure =
90c174bac60a72ffd81bc3bf5ae2dd9a61943b8bChristian Maedercopyright = 1
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian Maederdelta =
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus Luettichformat = tgz
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maederincremental =
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus Luettichindex =
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maederinit = INIT
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowskilicense =
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maederlicenses = $(org)
c7e03d0708369f944b6f235057b39142a21599f2Mihai Codescumamfile = 1
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maederopt =
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maedername =
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maedernotice =
8e80792f474d154ff11762fac081a422e34f1accChristian Maederrelease =
03136b84a0c70d877e227444f0875e209506b9e4Christian Maederstrip = 0
03136b84a0c70d877e227444f0875e209506b9e4Christian Maederstyle = tgz
03136b84a0c70d877e227444f0875e209506b9e4Christian Maedersuffix = tgz
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maedertype =
03136b84a0c70d877e227444f0875e209506b9e4Christian Maedervariants = !(cc-g)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maedervendor =
16e124196c6b204769042028c74f533509c9b5d3Christian Maederversion = $("":T=R%Y-%m-%d)
4c7f058cdd19ce67b2b5d4b7f69703d0f8a21e38Christian Maeder
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian MaederSUM = sum
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maederpackage.notice = ------------ NOTICE -- LICENSED SOFTWARE -- SEE README FOR DETAILS ------------
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maederpackage.readme = $(@.package.readme.)
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder.package.readme. :
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder This is a package root directory $PACKAGEROOT. Source and binary
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder packages in this directory tree are controlled by the command
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder $()
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder bin/package
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder $()
e6dccba746efe07338d3107fed512e713fd50b28Christian Maeder Binary files may be in this directory or in the install root directory
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder $()
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder INSTALLROOT=$PACKAGEROOT/arch/`bin/package`
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder $()
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder For more information run
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder $()
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder bin/package help
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder $()
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.
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder $()
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder Each package is covered by one of the license files
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder $()
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder $(PACKAGELIB)/LICENSES/<license>
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder $()
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
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder refers to this URL. For details run
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder $()
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder bin/package license [<package>]
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder $()
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)?.?)
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder.package.licenses. : .FUNCTION
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder local I F L R T all save text
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder L := $(%)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder while L == "--*"
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder I := $(L:O=1)
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder if I == "--all"
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder all = 1
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder elif I == "--save"
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder save = 1
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder elif I == "--text"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder text = 1
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder end
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder L := $(L:O>1)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder end
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder if "$(L)" == "*-*"
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder L += $(L:/[^-]*-//) $(L:/-.*//)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder end
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder L += $(licenses)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder for I $(L:U)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder if I == "gpl"
6a22b2854c3bc9cb4877cb7d29049d6559238639Christian Maeder I = gnu
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder all =
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder end
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski if F = "$(I:D=$(PACKAGESRC):B:S=.lic:T=F)"
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder R += $(F)
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski if save || text
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski T := $(.FIND. lib/package .lic $(F):P=W,query=type)
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski R += $(T:D=$(PACKAGESRC)/LICENSES:B)
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder end
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder if save
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder R += $(F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F)
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder elif ! all
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder break
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder end
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder end
4601edb679f0ba530bbb085b25d82a411cd070aaChristian Maeder end
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder return $(R)
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder/*
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder * glob(3) doesn't handle / in alternation -- should it?
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder */
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder.package.glob. : .FUNCTION
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder local A D I P S
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder for I $(%)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if I == "*/*"
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder D := $(I:C,/.*,,)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if ! "$(A:N=$(D))"
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder local S.$(D)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder A += $(D)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder end
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder S.$(D) += $(I:C,[^/]*/,,)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder else
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder P := $(P)$(S)$(I)
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder end
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski S = |
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder end
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder if P == "*\|*"
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder P := ($(P))
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder end
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder for I $(A)
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder P += $(I)/$(.package.glob. $(S.$(I)))
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder end
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder return $(P)
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder
b2026c46f0e4c6a05931f1bf0ab2e84ce884c814Christian Maeder.MAKEINIT : .package.init
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder.package.init : .MAKE .VIRTUAL .FORCE
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder local V
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder V := $(VROOT:T=F:P=L*)
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder if ! PACKAGEROOT
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder PACKAGEROOT := $(V:N!=*/arch/+([!/]):O=1)
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder end
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder if V == "$(PACKAGEROOT)"
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder V :=
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder end
ef60398f3b9f24614b074f8f0f1349ab527e1c77Christian Maeder V += $(INSTALLROOT) $(PACKAGEROOT)
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz PACKAGEVIEW := $(V:H=RU)
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz INSTALLOFFSET := $(INSTALLROOT:C%$(PACKAGEROOT)/%%)
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz if license
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz license := $(license)|none.none
bdf2e01977470bedcb4425e2dadabc9e9f6ba149Ewaryst Schulz end
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederPACKAGELIB = lib/package
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederPACKAGESRC = $(PACKAGEROOT)/$(PACKAGELIB)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederPACKAGEBIN = $(INSTALLROOT)/$(PACKAGELIB)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederPACKAGEDIR = $(PACKAGESRC)/$(style)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederINSTALLOFFSET = $(INSTALLROOT:C%$(PACKAGEROOT)/%%)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maederpackage.omit = -|*/$(init)
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)?)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder
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))
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederpackage.bin = $(PACKAGEBIN)/$(name).ini
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maeder
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
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maeder
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maederop = current
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 Maeder
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>)
4e144aa4be1f50519f8fa377a7883edfbc76d406Christian Maeder
568da6120906d5283c4322114eee10f24ea8dd6dChristian Maedersource.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz.c":T=F)
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maederbinary.ratz = $("$(INSTALLROOT)/src/cmd/$(init)/ratz":T=F)
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder$(init) : .VIRTUAL $(init)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maederpackage.requires = 0
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder":package:" : .MAKE .OPERATOR
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder local P I R V
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder P := $(<:O=1)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder $(P) : $(>:V)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder if ! package.requires
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder if ! name
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder name := $(P)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder .PACKAGE. := $(P)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder if name == "$(init)"
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder package.omit = -
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder package.src += $(package.ini:C,^,$(PACKAGEROOT)/bin/,) $(PACKAGESRC)/package.mk
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder else
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder $(P) : $(package.init)
8cceb39f451593f3904acbf9d64bea6af9860b57Christian Maeder end
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski for I $(<:O>1)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if I == "*=*"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder eval
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder $(I)
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder else
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder version := $(I)
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder end
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder end
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder LICENSEFILEDEFAULT := $(.package.licenses. $(name):@/ /:/G)
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder export LICENSEFILEDEFAULT
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if "$(>)"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder for I $(>:V)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder $(I) : .VIRTUAL
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if I == "/*"
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder package.dir += $(I:V)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder end
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder end
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder end
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder if "$(@)"
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder $(P).README := $(@)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder else
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder $(P).README := This is the $(P) package.
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder end
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder end
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder":AUXILIARY:" : .MAKE .OPERATOR
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder package.auxiliary.$(style) += $(>:N=/*:T=F) $(>:N!=/*:C%^%$(INSTALLROOT)/%:T=F)
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder":CATEGORY:" : .MAKE .OPERATOR
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder if ! package.requires
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder category := $(>)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder end
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder.covers. : .FUNCTION
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder local I C D F K=0 L
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder for I $(%)
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)
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder for L $(D)
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder if L == ":COVERS:"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder K = 1
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder elif L == ":*:"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if K
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder break
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder end
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder elif K
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder : $(.covers. $(L))
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder else
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder error $(--exec:?3?1?) $(I): unknown package $(I)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder end
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder end
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":COVERS:" : .MAKE .OPERATOR
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder if ! package.requires
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder : $(.covers. $(>))
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":DESCRIPTION:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder $(name).README := $(@:V)
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder end
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":DETAILS:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder details.$(>:O=1) := $(@:V)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":EXPORT:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder export.$(style) := $(@:/$$("\n")/ /G)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":INDEX:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder index := $(>)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":INSTALL:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder local T S F X
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder S := $(>)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder T := $(<)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if "$(exe.$(style))" && "$(T)" == "bin/*([!./])"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder T := $(T).exe
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder end
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder if ! "$(S)"
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder S := $(T)
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder elif "$(exe.$(style))" && "$(S)" == "bin/*([!./])"
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder S := $(S).exe
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
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 end
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 end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if "$(filter.$(style):V)"
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder filter.$(style) := $(filter.$(style):V)$$("\n")
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder filter.$(style) := $(filter.$(style):V);;$(F);$(X);usr/$(T)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder":LICENSE:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires && ! license
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder license := $(>)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":OMIT:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder package.omit := $(package.omit)|$(>:C,^,*/,:/ /|/G)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder":POSTINSTALL:" : .MAKE .OPERATOR
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder if ! package.requires
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder postinstall.$(style) := $(@:V)
d6c6b2543c509ec7f6213e4cba675d96304a7fd6Christian Maeder end
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder":README:" : .MAKE .OPERATOR
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder if ! package.requires
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder readme.$(style) := $(@:V)
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder end
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder.requires. : .FUNCTION
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder local I C D F K=0 L V T M=0
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder for I $(%)
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder if ! "$(~requires:N=$(I:B))"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder if F = "$(I:D:B:S=.pkg:T=F)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder if I == "$(init)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder package.omit = -
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder else
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder requires : $(I:B)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder end
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder if V = "$(I:D:B=gen/$(I:B):S=.ver:T=F)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder req : $(I:B)
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder else
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder error 1 $(I): package should be written before $(P)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder end
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder let package.requires = package.requires + 1
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder include "$(F)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder let package.requires = package.requires - 1
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder else
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian Maeder error 1 $(I): package not found
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder end
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder end
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder end
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder":REQUIRES:" : .MAKE .OPERATOR
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder : $(.requires. $(>))
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder":TEST:" : .MAKE .OPERATOR
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder if ! package.requires
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder local T
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder T := $(>)
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder if "$(T)" == "bin/*([!./])"
b10d6cef708b7a659f2d3b367e8e0db0d03ae3f5Till Mossakowski if "$(exe.$(style))"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder T := $(T).exe
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder end
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder T := $$(PWD)/$$(ARCH)/$(T)
d5833d2ee7bafcbf2fdd2bdfd9a728c769b100c7Christian Maeder end
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder test.$(style) := $(test.$(style):V)$("\n")test : $(T:V)$("\n\t")$(@)
a23e572c8f957cc051a1b0831abd6fe9380d45c7Christian Maeder end
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maederbase delta : .MAKE .VIRTUAL .FORCE
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder op := $(<)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maederclosure : .MAKE .VIRTUAL .FORCE
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $(<) := 1
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maedercyg exp lcl pkg rpm tgz : .MAKE .VIRTUAL .FORCE
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder style := $(<)
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maedersource : .source.init .source.gen .source.$$(style)
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder.source.init : .MAKE
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder local A B D P V I
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder type := source
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder if ! "$(incremental)"
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder incremental = 1
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder end
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder if "$(source.$(name))"
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder suffix = c
4072adb8c5d2c86123e8e1c1918263968f187829Christian Maeder end
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"
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder if ! B
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski error 3 delta requires a base archive
74d9a385499bf903b24848dff450a153f525bda7Christian Maeder end
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)
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder end
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 V := $(I:B:/$(name)\.\([^.]*\).*/\1/)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder if V == "$(stamp)" && V != "$(version)"
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder old.version := $(V)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder old.source := $(I)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder if "$(old.version)" >= "$(version)"
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder error 3 $(name): previous base $(old.version) is newer than $(version)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder end
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder break
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder end
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder end
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder else
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder source := $(B)
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder end
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 end
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder error 1 $(B:B:S): replacing current base
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder end
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder version := $(source:B:S:/^$(name).\(.*\).$(suffix)$/\1/)
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder end
be98c516a8ff1d496fcdeb9b8be8c5f4b908ab95Christian Maeder PACKAGEGEN := $(PACKAGESRC)/gen
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder.source.gen : $$(PACKAGEDIR) $$(PACKAGEGEN) $$(PACKAGEGEN)/SOURCE.html $$(PACKAGEGEN)/BINARY.html $$(PACKAGEGEN)/DETAILS.html
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian MaederBINPACKAGE := $(PATH:/:/ /G:X=package:T=F:O=1)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder$$(PACKAGEDIR) $$(PACKAGEGEN) : .IGNORE
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder [[ -d $(<) ]] || mkdir $(<)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder$$(PACKAGEGEN)/SOURCE.html : $(BINPACKAGE)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder $(*) html source > $(<)
d058429727dd696a0327cdc28cadd268c34c36baChristian Maeder
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder$$(PACKAGEGEN)/BINARY.html : $(BINPACKAGE)
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski $(*) html binary > $(<)
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder$$(PACKAGEGEN)/DETAILS.html : $(BINPACKAGE)
d058429727dd696a0327cdc28cadd268c34c36baChristian Maeder $(*) html intro > $(<)
d058429727dd696a0327cdc28cadd268c34c36baChristian Maeder
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder.source.exp .source.pkg .source.rpm : .MAKE
5a9a06d23910b9521e1d1cd39865ac7912ccee4bChristian Maeder error 3 $(style): source package style not supported yet
5a9a06d23910b9521e1d1cd39865ac7912ccee4bChristian Maeder
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maederexe.cyg = .exe
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maedervendor.cyg = gnu
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski.name.cyg : .FUNCTION
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder local N
2feea92963a4b1b7482a4b72ee85148d842d9ad6Christian Maeder N := $(%)
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder if N == "*-*"
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder vendor := $(N:/-.*//)
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder if vendor == "$(vendor.cyg)"
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder vendor :=
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder N := $(N:/[^-]*-//)
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder end
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder N := $(N:/-//G)
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder end
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder return $(N)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder.init.cyg : .FUNCTION
b0442fc87b3d8a47626543df44e4227d6933f8bdChristian Maeder local N O
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian Maeder closure = 1
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder init = .
a7be28e157e9ceeec73a8fd0e642c36ea29d4218Christian Maeder strip = 1
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski suffix = tar.bz2
32562a567baac248a00782d2727716c13117dc4aChristian Maeder format = tbz
32562a567baac248a00782d2727716c13117dc4aChristian Maeder vendor := $(licenses:N!=$(vendor.cyg):O=1)
32562a567baac248a00782d2727716c13117dc4aChristian Maeder package.ini := $(package.ini)
32562a567baac248a00782d2727716c13117dc4aChristian Maeder package.src.pat := $(package.src.pat)
32562a567baac248a00782d2727716c13117dc4aChristian Maeder package.src := $(package.src)
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder package.bin := $(package.bin)
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder .source.gen : .CLEAR $(*.source.gen:V:N!=*.html)
fa373bc327620e08861294716b4454be8d25669fChristian Maeder name.original := $(name)
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder name := $(.name.cyg $(name))
fa373bc327620e08861294716b4454be8d25669fChristian Maeder if name != "$(name.original)"
fa373bc327620e08861294716b4454be8d25669fChristian Maeder $(name) : $(~$(name.original))
fa373bc327620e08861294716b4454be8d25669fChristian Maeder O := $(~covers)
fa373bc327620e08861294716b4454be8d25669fChristian Maeder covers : .CLEAR
fa373bc327620e08861294716b4454be8d25669fChristian Maeder for N $(O)
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder covers : $(.name.cyg $(N))
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder end
32562a567baac248a00782d2727716c13117dc4aChristian Maeder end
32562a567baac248a00782d2727716c13117dc4aChristian Maeder stamp = [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]
32562a567baac248a00782d2727716c13117dc4aChristian Maeder version.original := $(version)
fa373bc327620e08861294716b4454be8d25669fChristian Maeder version := $(version:/-//G)-1
fa373bc327620e08861294716b4454be8d25669fChristian Maeder if opt
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder opt := $(opt)/$(vendor)/
7857a35e3af533dfbd0f0e18638ebd211e6358a0Christian Maeder else
746440cc1b984a852f5864235b8fa3930963a081Christian Maeder opt := $(name)-$(version)/
32562a567baac248a00782d2727716c13117dc4aChristian Maeder end
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder if type == "source"
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder version := $(version)-src
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder source = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder else
e68f45f355ed9d4026ee9baff5aa75aa7c911cc2Christian Maeder binary = $(PACKAGEDIR)/$(name)-$(version)$(release:?.$(release)??).$(suffix)
e68f45f355ed9d4026ee9baff5aa75aa7c911cc2Christian Maeder end
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder.source.cyg :
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder if [[ '$(~$(name))' ]]
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder then tmp=/tmp/pkg$(tmp)
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder mkdir $tmp
4aa35aadcb28f8a962096efc70d3bdb58ab7d9faChristian Maeder {
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder integer m=0 o
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder cat > $tmp/configure <<'!'
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder echo "you didn't have to do that"
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder !
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder chmod +x $tmp/configure
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder echo ";;;$tmp/configure;configure"
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder cat > $tmp/Makefile0 <<'!'
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder HOSTTYPE := $$(shell bin/package)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder ROOT = ../..
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder ARCH = arch/$$(HOSTTYPE)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder all :
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder PACKAGEROOT= CYGWIN="$$CYGWIN ntsec binmode" bin/package make $(export.$(style))
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder install : all
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $(install.$(style):V)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $(test.$(style):V)
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder !
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder echo ";;;$tmp/Makefile0;Makefile"
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder cat > $tmp/CYGWIN-README <<'!'
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $(readme.$(style):@?$$(readme.$$(style))$$("\n\n")??)To build binaries from source into the ./arch/`bin/package` tree run:
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $()
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder make
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $()
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:
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $()
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder make install
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder $()
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 $()
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 $()
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder using the $(org)-base package. To download and install the latest
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder $(org)-base source package in /opt/$(org) run:
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian Maeder $()
e7ddd5495421698701a2bbc57a5b3390a11d12caChristian Maeder PATH=/opt/$(org)/bin:$PATH
e7ddd5495421698701a2bbc57a5b3390a11d12caChristian Maeder cd /opt/$(org)
32562a567baac248a00782d2727716c13117dc4aChristian Maeder package authorize "NAME" password "PASSWORD" setup flat source $("\\")
32562a567baac248a00782d2727716c13117dc4aChristian Maeder $(url) $("\\")
32562a567baac248a00782d2727716c13117dc4aChristian Maeder $(org)-base
fa373bc327620e08861294716b4454be8d25669fChristian Maeder package make
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder $()
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:
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski $()
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder cd /opt/$(org)
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder package setup
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder package make
3c8d067accf18572352351ec42ff905c7297a8a5Christian Maeder $()
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".
812ee1f62e0e0e7235f3c05b41a0b173497b54ffChristian Maeder !
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)
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder requires: cygwin
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder sdesc: "$(index)"
3b70d8ee5c2927f843d5d907e6ef724f867f1b40Till Mossakowski ldesc: "$($(name.original).README)"
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder !
2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4Christian Maeder echo ";;;$(source:/-src.$(suffix)//).setup.hint;CYGWIN-PATCHES/setup.hint"
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder echo ";;;$(BINPACKAGE);bin/package"
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder cat > $tmp/Makefile <<'!'
ca732bc259f74cb4f3f725daab7fe80fc7e1d9a0Till Mossakowski :MAKE:
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder !
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder echo ";;;$tmp/Makefile;src/Makefile"
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder echo ";;;$tmp/Makefile;src/cmd/Makefile"
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder echo ";;;$tmp/Makefile;src/lib/Makefile"
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder if [[ '$(mamfile)' == 1 ]]
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder then cat > $tmp/Mamfile1 <<'!'
2766ec926fcf3faf72248b10c3305b715b8c3249Christian Maeder info mam static
ca732bc259f74cb4f3f725daab7fe80fc7e1d9a0Till Mossakowski note source level :MAKE: equivalent
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang make install
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang make all
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS}
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder done all virtual
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski done install virtual
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder !
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder echo ";;;$tmp/Mamfile1;src/Mamfile"
fc033b8680245bf692c9c09723fd3046ff38971eChristian Maeder cat > $tmp/Mamfile2 <<'!'
2b2f3b72e82e28b34db9c69af2d1ec38f228272eChristian Maeder info mam static
2b2f3b72e82e28b34db9c69af2d1ec38f228272eChristian Maeder note component level :MAKE: equivalent
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder make install
5824312cc0cfccce61f195fbe92307a21a467049Christian Maeder make all
2b2f3b72e82e28b34db9c69af2d1ec38f228272eChristian Maeder exec - ${MAMAKE} -r '*' ${MAMAKEARGS}
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder done all virtual
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder done install virtual
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder !
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder echo ";;;$tmp/Mamfile2;src/cmd/Mamfile"
2b2f3b72e82e28b34db9c69af2d1ec38f228272eChristian Maeder echo ";;;$tmp/Mamfile2;src/lib/Mamfile"
fc033b8680245bf692c9c09723fd3046ff38971eChristian Maeder fi
fc033b8680245bf692c9c09723fd3046ff38971eChristian Maeder $(package.src:U:T=F:/.*/echo ";;;&"$("\n")/)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder echo ";;;$(PACKAGEGEN)/$(name.original).req"
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder set -- $(package.closure)
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder for i
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder do cd $(INSTALLROOT)/$i
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' .
2b2f3b72e82e28b34db9c69af2d1ec38f228272eChristian Maeder then if [[ '$(mamfile)' == 1 ]]
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wang then (( o=m ))
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null )
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder if [[ $s ]]
0ccfc8f86bd6518556ef09e367a0ce2bd1a69c91Christian Maeder then for j in $s
7830e8fa7442fb7452af7ecdba102bc297ae367eChristian Maeder do if [[ -d $j ]]
then cd $j
if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' .
then (( m++ ))
$(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam
echo ";;;$tmp/$m.mam;$i/$j/Mamfile"
fi
cd $(INSTALLROOT)/$i
fi
done
if (( o != m ))
then (( m++ ))
cat > $tmp/$m.mam <<'!'
info mam static
note subcomponent level :MAKE: equivalent
make install
make all
exec - ${MAMAKE} -r '*' ${MAMAKEARGS}
done all virtual
done install virtual
!
echo ";;;$tmp/$m.mam;$i/Mamfile"
fi
else (( m++ ))
$(MAKE) $(package.mam) $(export.$(style):Q) > $tmp/$m.mam
echo ";;;$tmp/$m.mam;$i/Mamfile"
fi
fi
$(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q)
fi
done
set -- $(package.dir:P=G)
for i
do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);"
done
} |
{
: > $tmp/HEAD
cat > $tmp/README <<'!'
$(package.readme)
!
echo ";;;$tmp/README;README"
sort -t';' -k5,5 -u
: > $tmp/TAIL
[[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)"
} |
$(PAX) --filter=- \
--to=ascii \
--format=$(format) \
--local \
-wvf $(source) $(base) \
$(PACKAGEVIEW:C%.*%-s",^&/,,"%) \
$(vendor:?-s",^[^/],$(opt)&,"??)
$(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum))
rm -rf $tmp
fi
.source.lcl :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
integer m=0 o
$(package.src:U:T=F:/.*/echo ";;;&"$("\n")/)
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
$(MAKE) --noexec $(-) $(=) .FILES.+=Mamfile recurse list.package.local
done
set -- $(package.dir:P=G)
for i
do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);"
done
} |
sort -t';' -k5,5 -u |
$(PAX) --filter=- \
--to=ascii \
$(op:N=delta:??--format=$(format)?) \
--local \
-wvf $(source) $(base) \
$(op:N=delta:?--format=gzip??) \
$(PACKAGEVIEW:C%.*%-s",^&/,,"%)
rm -rf $tmp
fi
.source.tgz :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
integer m=0 o
if [[ '$(init)' == '$(name)' ]]
then cat > $tmp/Makefile <<'!'
:MAKE:
!
$(CMP) $(CMPFLAGS) $tmp/Makefile $(PACKAGEROOT)/src/Makefile && touch -r $(PACKAGEROOT)/src/Makefile $tmp/Makefile
echo ";;;$tmp/Makefile;src/Makefile"
cp $tmp/Makefile $tmp/Makefile1
$(CMP) $(CMPFLAGS) $tmp/Makefile1 $(PACKAGEROOT)/src/cmd/Makefile && touch -r $(PACKAGEROOT)/src/cmd/Makefile $tmp/Makefile1
echo ";;;$tmp/Makefile1;src/cmd/Makefile"
cp $tmp/Makefile $tmp/Makefile2
$(CMP) $(CMPFLAGS) $tmp/Makefile2 $(PACKAGEROOT)/src/lib/Makefile && touch -r $(PACKAGEROOT)/src/lib/Makefile $tmp/Makefile2
echo ";;;$tmp/Makefile2;src/lib/Makefile"
if [[ '$(mamfile)' == 1 ]]
then cat > $tmp/Mamfile1 <<'!'
info mam static
note source level :MAKE: equivalent
make install
make all
exec - ${MAMAKE} -r '*/*' ${MAMAKEARGS}
done all virtual
done install virtual
!
$(CMP) $(CMPFLAGS) $tmp/Mamfile1 $(PACKAGEROOT)/src/Mamfile && touch -r $(PACKAGEROOT)/src/Mamfile $tmp/Mamfile1
echo ";;;$tmp/Mamfile1;src/Mamfile"
cat > $tmp/Mamfile2 <<'!'
info mam static
note component level :MAKE: equivalent
make install
make all
exec - ${MAMAKE} -r '*' ${MAMAKEARGS}
done all virtual
done install virtual
!
$(CMP) $(CMPFLAGS) $tmp/Mamfile2 $(PACKAGEROOT)/src/cmd/Mamfile && touch -r $(PACKAGEROOT)/src/cmd/Mamfile $tmp/Mamfile2
echo ";;;$tmp/Mamfile2;src/cmd/Mamfile"
cp $tmp/Mamfile2 $tmp/Mamfile3
$(CMP) $(CMPFLAGS) $tmp/Mamfile3 $(PACKAGEROOT)/src/lib/Mamfile && touch -r $(PACKAGEROOT)/src/lib/Mamfile $tmp/Mamfile3
echo ";;;$tmp/Mamfile3;src/lib/Mamfile"
fi
fi
$(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%)
if [[ '$(~covers)' ]]
then for i in $(~covers)
do for j in lib pkg
do if [[ -f $(PACKAGESRC)/$i.$j ]]
then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
for j in ver req
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
done
for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S)
do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i"
done
fi
if [[ '$(PACKAGEDIR:B)' == '$(style)' ]]
then echo $(name) $(version) $(release|version) 1 > $tmp/t
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).ver || cp $tmp/t $(PACKAGEGEN)/$(name).ver
echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver"
sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $tmp/t
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).req || cp $tmp/t $(PACKAGEGEN)/$(name).req
echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req"
{
echo "name='$(name)'"
echo "index='$(index)'"
echo "covers='$(~covers)'"
echo "requires='$(~req)'"
} > $tmp/t
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).inx || cp $tmp/t $(PACKAGEGEN)/$(name).inx
{
{
echo '$($(name).README)'
if [[ '$(~covers)' ]]
then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)."
fi
if [[ '$(~requires)' ]]
then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).'
fi
} | fmt
package help source
package release $(name)
} > $tmp/t
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).README || cp $tmp/t $(PACKAGEGEN)/$(name).README
echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README"
{
echo '.xx title="$(name) package"'
echo '.xx meta.description="$(name) package"'
echo '.xx meta.keywords="software, package"'
echo '.MT 4'
echo '.TL'
echo '$(name) package'
echo '.H 1 "$(name) package"'
echo '$($(name).README)'
set -- $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F:D::B)
hot=
for i
do hot="$hot -e s/\\(\\<$i\\>\\)/\\\\h'0*1'\\1\\\\h'0'/"
done
set -- $(package.closure:B)
if (( $# ))
then echo 'Components in this package:'
echo '.P'
echo '.TS'
echo 'center expand;'
echo 'l l l l l l.'
if [[ $hot ]]
then hot="sed $hot"
else hot=cat
fi
for i
do echo $i
done |
pr -6 -t -s' ' |
$hot
echo '.TE'
fi
echo '.P'
if [[ '$(~covers)' ]]
then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)."
fi
if [[ '$(~requires)' ]]
then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).'
fi
set -- $(.package.licenses. --all $(name))
case $# in
0) ;;
*) case $# in
1) echo 'The software is covered by this license:' ;;
*) echo 'The software is covered by these licenses:' ;;
esac
echo .BL
for j
do i=$( $(PROTO) -l $j -p -h -o type=usage /dev/null | sed -e 's,.*\[-license?\([^]]*\).*,\1,' )
echo .LI
echo ".xx link=\"$i\""
done
echo .LE
echo 'Individual components may be covered by separate licenses;'
echo 'refer to the component source and/or binaries for more information.'
echo .P
;;
esac
echo 'A recent'
echo '.xx link="release change log"'
echo 'is also included.'
cat $(package.closure:C,.*,$(INSTALLROOT)/&/PROMO.mm,:T=F) < /dev/null
echo '.H 1 "release change log"'
echo '.xx index'
echo '.nf'
package release $(name) |
sed -e 's/:::::::: \(.*\) ::::::::/.fi\$("\n").H 1 "\1 changes"\$("\n").nf/'
echo '.fi'
} |
$(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t
$(STDED) $(STDEDFLAGS) $tmp/t <<'!'
/^<!--LABELS-->$/,/^<!--\/LABELS-->$/s/ changes</</
/^<!--LABELS-->$/,/^<!--\/LABELS-->$/m/<A name="release change log">/
w
q
!
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).html || cp $tmp/t $(PACKAGEGEN)/$(name).html
echo ";;;$(PACKAGEGEN)/$(name).html;$(PACKAGELIB)/$(name).html"
if [[ '$(deltasince)' ]]
then {
echo '.xx title="$(name) package"'
echo '.xx meta.description="$(name) package $(version) delta $(release)"'
echo '.xx meta.keywords="software, package, delta"'
echo '.MT 4'
echo '.TL'
echo '$(name) package $(deltaversion) delta $(release)'
echo '.H 1 "$(name) package $(deltaversion) delta $(release) changes"'
echo '.nf'
package release $(deltasince) $(name) |
sed -e 's/:::::::: \(.*\) ::::::::/.H 2 \1/'
echo '.fi'
} |
$(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $tmp/t
$(CMP) $(CMPFLAGS) $tmp/t $(PACKAGEGEN)/$(name).$(release).html || cp $tmp/t $(PACKAGEGEN)/$(name).$(release).html
echo ";;;$(PACKAGEGEN)/$(name).$(release).html;$(PACKAGELIB)/$(name).$(release).html"
fi
fi
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' .
then if [[ '$(mamfile)' == 1 ]]
then (( o=m ))
s=$( $(MAKE) --noexec --recurse=list recurse 2>/dev/null )
if [[ $s ]]
then for j in $s
do if [[ -d $j ]]
then cd $j
if [[ ! '$(license)' ]] || $(MAKE) --noexec --silent 'exit $$(LICENSECLASS:N=$(license):?0?1?)' .
then (( m++ ))
$(MAKE) $(package.mam) > $tmp/$m.mam
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/$j/Mamfile && touch -r $(PACKAGEROOT)/$i/$j/Mamfile $tmp/$m.mam
echo ";;;$tmp/$m.mam;$i/$j/Mamfile"
fi
cd $(INSTALLROOT)/$i
fi
done
if (( o != m ))
then (( m++ ))
cat > $tmp/$m.mam <<'!'
info mam static
note subcomponent level :MAKE: equivalent
make install
make all
exec - ${MAMAKE} -r '*' ${MAMAKEARGS}
done all virtual
done install virtual
!
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam
echo ";;;$tmp/$m.mam;$i/Mamfile"
fi
else (( m++ ))
$(MAKE) $(package.mam) > $tmp/$m.mam
$(CMP) $(CMPFLAGS) $tmp/$m.mam $(PACKAGEROOT)/$i/Mamfile && touch -r $(PACKAGEROOT)/$i/Mamfile $tmp/$m.mam
echo ";;;$tmp/$m.mam;$i/Mamfile"
fi
fi
$(MAKE) --noexec $(-) $(=) recurse list.package.$(type) package.license.class=$(license:Q) $(copyright:N=1:??LICENSE=?)
fi
done
set -- $(package.dir:P=G)
for i
do tw -d $i -e "action:printf(';;;%s;%s\n',path,path);"
done
} |
{
: > $tmp/HEAD
[[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)"
cat > $tmp/README <<'!'
$(package.readme)
!
echo ";;;$tmp/README;README"
$(CMP) $(CMPFLAGS) $tmp/README $(PACKAGEROOT)/README && touch -r $(PACKAGEROOT)/README $tmp/README
sort -t';' -k5,5 -u
: > $tmp/TAIL
[[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)"
} |
$(PAX) --filter=- \
--to=ascii \
$(op:N=delta:??--format=$(format)?) \
--local \
-wvf $(source) $(base) \
$(op:N=delta:?--format=gzip??) \
$(PACKAGEVIEW:C%.*%-s",^&/,,"%)
$(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum))
echo local > $(source:D:B=$(name):S=.tim)
if [[ '$(incremental)' == 1 && '$(old.source)' ]]
then $(PAX) -rf $(source) -wvf $(old.new.source) -z $(old.source)
$(SUM) -x $(checksum) < $(old.new.source) > $(old.new.source:D:B:S=.$(checksum))
fi
rm -rf $tmp
else if [[ '$(old.source)' ]] && $(CMP) $(CMPFLAGS) $(source.$(name)) $(source)
then : $(name) is up to date
else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver
: > $(PACKAGEGEN)/$(name).req
{
echo "name='$(name)'"
echo "index='$(index)'"
echo "covers='$(~covers)'"
echo "requires='$(~req)'"
} > $(PACKAGEGEN)/$(name).inx
{
echo '.xx title="$(name) package"'
echo '.xx meta.description="$(name) package"'
echo '.xx meta.keywords="software, package"'
echo '.MT 4'
echo '.TL'
echo '$(name) package'
echo '.H 1'
echo '$($(name).README)'
} |
$(MM2HTML) $(MM2HTMLFLAGS) -o nohtml.ident > $(PACKAGEGEN)/$(name).html
if [[ '$(source.$(name))' ]]
then {
echo '$($(name).README)'
package help source
} > $(PACKAGEGEN)/$(name).README
cp $(source.$(name)) $(source)
$(SUM) -x $(checksum) < $(source) > $(source:D:B:S=.$(checksum))
fi
echo local > $(source:D:B=$(name):S=.tim)
fi
fi
binary : .binary.init .binary.gen .binary.$$(style)
.binary.init : .MAKE
local A B D I P V
type := binary
if ! "$(incremental)"
incremental = 0
end
if ! "$(~$(name))"
if name == "ratz"
suffix = exe
else
suffix = gz
end
end
: $(.init.$(style)) :
: $(details.$(style):V:R) :
A := $(binary.list)
B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F)
P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F)
D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F)
if op == "delta"
if ! B
error 3 delta requires a base archive
end
base := -z $(B)
if "$(release)" != "$(stamp)"
release := $("":T=R%Y-%m-%d)
end
binary := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/)
version := $(binary:B:B:/$(name).//)
elif B || op == "base"
if op == "base"
for I $(B) $(P)
V := $(I:B:/$(name)\.\([^.]*\).*/\1/)
if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)"
old.version := $(V)
old.binary := $(I)
if "$(old.version)" >= "$(version)"
error 3 $(name): previous base $(old.version) is newer than $(version)
end
break
end
end
else
binary := $(B)
end
if B == "$(binary)"
if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)"
error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S)
end
error 1 $(B:B:S): replacing current base
end
version := $(binary:B:/$(name).//:/\..*//)
end
PACKAGEGEN := $(PACKAGEBIN)/gen
.binary.gen : $$(PACKAGEDIR) $$(PACKAGEGEN)
.binary.exp .binary.pkg .binary.rpm : .MAKE
error 3 $(style): binary package style not supported yet
.binary.cyg :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
integer m=0 o
{
echo '$($(name.original).README)' | fmt
cat <<'!'
$(readme.$(style):@?$$("\n")$$(readme.$$(style))??)
!
} > $tmp/README1
echo ";;;$tmp/README1;usr/share/doc/Cygwin/$(opt:/.$//).README"
{
echo '$($(name.original).README)' | fmt
cat <<'!'
$()
The remainder of this file is the README from the source package
that was used to generate this binary package. It describes
the source build hierarchy, not the current directory.
$()
$(package.readme)
!
} > $tmp/README2
echo ";;;$tmp/README2;usr/share/doc/$(opt)README"
package release $(name.original) > $tmp/RELEASE
echo ";;;$tmp/RELEASE;usr/share/doc/$(opt)RELEASE"
cat > $(binary:/.$(suffix)//).setup.hint <<'!'
category: $(category:/\(.\).*/\1/U)$(category:/.\(.*\)/\1/L)
requires: cygwin
sdesc: "$(index)"
ldesc: "$($(name.original).README)"
!
set -- $(.package.licenses. --text $(name.original):N!=*.lic)
for i
do echo ";;;${i};usr/share/doc/$(opt)LICENSE-${i##*/}"
done
cat <<'!'
$(filter.$(style))
!
if [[ '$(postinstall.$(style):V:O=1:?1??)' ]]
then cat >$tmp/postinstall <<'!'
$("#")!/bin/sh
$(postinstall.$(style))
!
echo ";;;$tmp/postinstall;etc/postinstall/$(name).sh"
fi
} |
{
: > $tmp/HEAD
[[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)"
sort -t';' -k5,5 -u
: > $tmp/TAIL
[[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)"
} |
$(PAX) --filter=- \
--to=ascii \
--format=$(format) \
--local \
-wvf $(binary)
$(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum))
rm -rf $tmp
fi
.binary.lcl :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
$(package.src:U:T=F:/.*/echo ";;;&"$("\n")/)
$(package.bin:U:T=F:/.*/echo ";;;&"$("\n")/)
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) recurse list.package.$(type) package.license.class=$(license:Q) cc-
done
} |
$(PAX) --filter=- \
--to=ascii \
$(op:N=delta:??--format=$(format)?) \
--local \
--checksum=md5:$(PACKAGEGEN)/$(name).sum \
--install=$(PACKAGEGEN)/$(name).ins \
-wvf $(binary) $(base) \
$(op:N=delta:?--format=gzip??) \
-s",^$tmp/,$(INSTALLOFFSET)/," \
$(PACKAGEROOT:C%.*%-s",^&/,,"%)
$(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum))
echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim)
rm -rf $tmp
fi
.binary.tgz :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
if [[ '$(init)' == '$(name)' ]]
then for i in lib32 lib64
do if [[ -d $(INSTALLROOT)/$i ]]
then echo ";physical;;$(INSTALLROOT)/$i"
fi
done
fi
$(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%)
$(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%)
$(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%)
if [[ '$(PACKAGEDIR:B)' == '$(style)' ]]
then echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver
echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver"
if [[ '$(~covers)' ]]
then for i in $(~covers)
do for j in lic pkg
do if [[ -f $(PACKAGESRC)/$i.$j ]]
then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
for j in ver req
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
done
for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S)
do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i"
done
fi
sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req
echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req"
{
echo "name='$(name)'"
echo "index='$(index)'"
echo "covers='$(~covers)'"
echo "requires='$(~req)'"
} > $(PACKAGEGEN)/$(name).inx
{
{
echo '$($(name).README)'
if [[ '$(~covers)' ]]
then echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)."
fi
if [[ '$(~requires)' ]]
then echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).'
fi
} | fmt
package help binary
package release $(name)
} > $(PACKAGEGEN)/$(name).README
echo ";;;$(PACKAGEGEN)/$(name).README;$(PACKAGELIB)/$(name).README"
fi
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc-
done
} |
{
: > $tmp/HEAD
[[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)"
cat > $tmp/README <<'!'
$(package.readme)
!
echo ";;;$tmp/README;README"
sort -t';' -k5,5 -u
: > $tmp/TAIL
[[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)"
} |
$(PAX) --filter=- \
--to=ascii \
$(op:N=delta:??--format=$(format)?) \
--local \
--checksum=md5:$(PACKAGEGEN)/$(name).sum \
--install=$(PACKAGEGEN)/$(name).ins \
-wvf $(binary) $(base) \
$(op:N=delta:?--format=gzip??) \
-s",^$tmp/,$(INSTALLOFFSET)/," \
$(PACKAGEROOT:C%.*%-s",^&/,,"%)
echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
$(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum))
echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim)
if [[ '$(incremental)' == 1 && '$(old.binary)' ]]
then $(PAX) -rf $(binary) -wvf $(old.new.binary) -z $(old.binary)
echo $(old.new.binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
$(SUM) -x $(checksum) < $(old.new.binary) > $(old.new.binary:D:B:S=.$(checksum))
echo $(old.new.binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
fi
rm -rf $tmp
else if [[ '$(binary.$(name))' ]]
then exe=$(binary.$(name))
else exe=$(INSTALLROOT)/bin/$(name)
fi
if [[ '$(old.binary)' ]] && $(CMP) $(CMPFLAGS) $exe $(binary)
then : $(name) is up to date
else echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver
: > $(PACKAGEGEN)/$(name).req
{
echo "name='$(name)'"
echo "index='$(index)'"
echo "covers='$(~covers)'"
echo "requires='$(~req)'"
} > $(PACKAGEGEN)/$(name).inx
{
echo '$($(name).README)'
package help binary
} > $(PACKAGEGEN)/$(name).README
case "$(binary)" in
*.gz) gzip < $exe > $(binary) ;;
*) cp $exe $(binary) ;;
esac
$(SUM) -x $(checksum) < $(binary) > $(binary:D:B:S=.$(checksum))
echo local > $(binary:D:B=$(name):S=.$(CC.HOSTTYPE).tim)
fi
echo $(binary) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
echo $(binary:D:B:S=.$(checksum)) >> $(binary:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
fi
runtime : .runtime.init .runtime.gen .runtime.$$(style)
.runtime.init : .MAKE
local A B D I P V
type := runtime
if ! "$(incremental)"
incremental = 0
end
if ! "$(~$(name))"
if name == "ratz"
suffix = exe
else
suffix = gz
end
end
: $(.init.$(style)) :
: $(details.$(style):V:R) :
A := $(runtime.list)
B := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=1:T=F)
P := $(A:N=*.$(stamp).$(CC.HOSTTYPE).$(suffix):N!=*.$(stamp).$(stamp).*:O=2:T=F)
D := $(A:N=*.$(stamp).$(stamp).$(CC.HOSTTYPE).$(suffix):O=1:T=F)
if op == "delta"
if ! B
error 3 delta requires a base archive
end
base := -z $(B)
if "$(release)" != "$(stamp)"
release := $("":T=R%Y-%m-%d)
end
runtime := $(B:/$(CC.HOSTTYPE).$(suffix)$/$(release).&/)
version := $(runtime:B:B:/$(name).//)
elif B || op == "base"
if op == "base"
for I $(B) $(P)
V := $(I:B:/$(name)-run\.\([^.]*\).*/\1/)
if V == "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" && V != "$(version)"
old.version := $(V)
old.runtime := $(I)
if "$(old.version)" >= "$(version)"
error 3 $(name): previous base $(old.version) is newer than $(version)
end
break
end
end
else
runtime := $(B)
end
if B == "$(runtime)"
if "$(B:D:B)" == "$(D:D:B)" && "$(B:S)" != "$(D:S)"
error 3 $(B:B:S): base overwrite would invalidate delta $(D:B:S)
end
error 1 $(B:B:S): replacing current base
end
version := $(runtime:B:/$(name)-run.//:/\..*//)
end
PACKAGEGEN := $(PACKAGESRC)/gen
.runtime.gen : $$(PACKAGEDIR) $$(PACKAGEGEN)
.runtime.cyg .runtime.exp .runtime.lcl .runtime.pkg .runtime.rpm : .MAKE
error 3 $(style): runtime package style not supported yet
.runtime.tgz :
if [[ '$(~$(name))' ]]
then tmp=/tmp/pkg$(tmp)
mkdir $tmp
{
if [[ '$(init)' == '$(name)' ]]
then for i in lib32 lib64
do if [[ -d $(INSTALLROOT)/$i ]]
then echo ";physical;;$(INSTALLROOT)/$i"
fi
done
fi
$(package.src:U:T=F:C%^$(PACKAGEROOT)/%%:C%.*%echo ";;;$(PACKAGEROOT)/&;&"$("\n")%)
$(package.bin:U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%)
$(package.auxiliary.$(style):U:T=F:C%^$(INSTALLROOT)/%%:C%.*%echo ";;;$(INSTALLROOT)/&;&"$("\n")%)
echo $(name) $(version) $(release|version) 1 > $(PACKAGEGEN)/$(name).ver
echo ";;;$(PACKAGEGEN)/$(name).ver;$(PACKAGELIB)/$(name).ver"
if [[ '$(~covers)' ]]
then for i in $(~covers)
do for j in lic pkg
do if [[ -f $(PACKAGESRC)/$i.$j ]]
then echo ";;;$(PACKAGESRC)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
for j in ver req
do if [[ -f $(PACKAGEGEN)/$i.$j ]]
then echo ";;;$(PACKAGEGEN)/$i.$j;$(PACKAGELIB)/$i.$j"
fi
done
done
for i in $(~covers:D=$(PACKAGESRC):B:S=.lic:T=F:T=I:N=*.def:D=$(PACKAGESRC):B:S:T=F:B:S)
do echo ";;;$(PACKAGESRC)/$i;$(PACKAGELIB)/$i"
done
fi
sed 's,1$,0,' $(~req:D=$(PACKAGEGEN):B:S=.ver:T=F) < /dev/null > $(PACKAGEGEN)/$(name).req
echo ";;;$(PACKAGEGEN)/$(name).req;$(PACKAGELIB)/$(name).req"
{
echo "name='$(name)'"
echo "index='$(index)'"
echo "covers='$(~covers)'"
echo "requires='$(~req)'"
} > $(PACKAGEGEN)/$(name).inx
{
{
echo '$($(name).README)'
if [[ '$(~covers)' ]]
then echo
echo "This package is a superset of the following package$(~covers:O=2:?s??): $(~covers); you won't need $(~covers:O=2:?these?this?) if you download $(name)."
fi
if [[ '$(~requires)' ]]
then echo
echo 'It requires the following package$(~requires:O=2:?s??): $(~requires).'
fi
echo
echo "To install this $(type) package read the tarball into a directory"
echo "suitable for containing bin and lib subdirectories, and run the"
echo "$(PACKAGELIB)/gen/$(name)-run.ins script to fix up permissions."
echo
echo "To use the package export the bin directory in PATH. The commands and"
echo "libraries use \$PATH to locate dynamic libraries and related data files."
echo
} | fmt
} > $(PACKAGEGEN)/$(name)-run.README
echo ";;;$(PACKAGEGEN)/$(name)-run.README;$(PACKAGELIB)/$(name)-run.README"
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
$(MAKE) --noexec $(-) --variants=$(variants:Q) $(=) package.strip=$(strip) recurse list.package.$(type) package.license.class=$(license:Q) cc-
done
} |
{
: > $tmp/HEAD
[[ '$(notice)' ]] && echo ";;;$tmp/HEAD;$(package.notice)"
cat > $tmp/README <<'!'
$(package.readme)
!
echo ";;;$tmp/README;README"
sort -t';' -k5,5 -u
: > $tmp/TAIL
[[ '$(notice)' ]] && echo ";;;$tmp/TAIL;$(package.notice)"
} |
$(PAX) --filter=- \
--to=ascii \
$(op:N=delta:??--format=$(format)?) \
--local \
--checksum=md5:$(PACKAGEGEN)/$(name)-run.sum \
--install=$(PACKAGEGEN)/$(name)-run.ins \
-wvf $(runtime) $(base) \
$(op:N=delta:?--format=gzip??) \
-s",^$tmp/,$(INSTALLOFFSET)/," \
$(PACKAGEROOT:C%.*%-s",^&/,,"%)
echo $(runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
$(SUM) -x $(checksum) < $(runtime) > $(runtime:D:B:S=.$(checksum))
echo $(runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
echo local > $(runtime:D:B=$(name)-run:S=.$(CC.HOSTTYPE).tim)
if [[ '$(incremental)' == 1 && '$(old.runtime)' ]]
then $(PAX) -rf $(runtime) -wvf $(old.new.runtime) -z $(old.runtime)
echo $(old.new.runtime) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
$(SUM) -x $(checksum) < $(old.new.runtime) > $(old.new.runtime:D:B:S=.$(checksum))
echo $(old.new.runtime:D:B:S=.$(checksum)) >> $(runtime:D:B=PACKAGE:S=.$(CC.HOSTTYPE).lst)
fi
rm -rf $tmp
fi
list.installed list.manifest :
set -- $(package.closure)
for i
do cd $(INSTALLROOT)/$i
ignore $(MAKE) --noexec $(-) $(=) $(<)
done