The chroot is needed to avoid having ldd pick up dependent libraries
that come from a package variant and are actually not needed as
dependencies.
Scan /usr, /usr/X11R6 for system libraries, and WRKINST for packaged
libraries.
Some testsuites use HOME to test their getenv function. Which seems
to be reasonable. But we definitely don't want to allow HOME into
MAKE_ENV by default.
the maintainer made a mistake, and turn everything to No.
Record it as _BAD_LICENSING for describe purpose.
Yep, having this as ERRORS is obnoxious.
Then, we can rely on PERMIT_* always being defined.
Rewrite ftp-packages/cdrom-packages to use more current rules. Fixes
naddy's issue of ignoring IGNORE. Use a .for loop, since those rules
are basically identical.
No longer use them to try and record port logging, as we have a much better
script to do that.
`Enhance' bulk-packages to do ftp-packages/cdrom-packages linking as well,
so that one single sweep of the tree should be enough for everything.
(to deal with a common shared Cygnus configure)
Move MODGNU_configure definition to gnu.port.mk. Should have done that on
creation.
Typo in brad's hack (to be superseded shortly anyways)
This can speed up some iterations, as a dependency won't be checked more
than once. This also allows for make extract NO_DEPENDS=Yes, then later
to have the dependencies pulled in at configure stage (even though this
might not work all the time, as some dependencies may be needed earlier
but then you'll certainly notice).
- allow for several libraries, separated by commas.
- try to heed dependency most closely. Notably, make sure the spec
stops at a sensible place. This may break some ill-formed dependencies.
Turns out this can be done based on target, directly, instead of
relying on /nonexistent.
One step closer to turning TRUST_PACKAGES=Yes on by default...
This is work-in-progress. Supplemental hooks will be added when they
become necessary.
The goal is to permit separate subsystems to tweak the package building
process slightly. This should help e.g., python or qt2, for instance.
Documentation will come when it's tested more thoroughly...
work-* is too long, because we want to include the PKGNAME in the dir name
(so that PKGNAME changes are less likely to work with old work directories)
Change the way clean works, so that you can say
make clean='dist depends packages' and have it do what you think it should
do.
Common fragment to _create_wrkobjdir.
Put some info into PACKAGING (name of subpackage being built)
Since those are mostly infrastructure-side, making SUBPACKAGE transparent
only adds to the confusion, so don't interpolate SUBPACKAGE into
FULLPKGNAME, hiding it into _FULLPKGNAME, but rather let FULLPKGNAME
tag the main package, and use FULLPKGNAME-foo for subpackage -foo.
This will simplify some other stuff...
- define _FULLPKGNAME* and _PKGFILE*. Use _PKGFILE* as package cookie
instead of package_done.
- use ${PKG_DBDIR}/${_FULLPKGNAME${SUBPACKAGE}/+CONTENTS as install cookie.
- BIN_PACKAGES variable. If set to yes, remove coupling between
PACKAGE_COOKIE and dependencies, so that binary packages exist
independently of working directories.
- mark packages as precious.
- change all refs to PKGFILE to _PKGFILE${SUBPACKAGE}.
- add bulk-packages target.
Note that BIN_PACKAGES and TRUST_PACKAGES are off by default.
This interface is likely to change. The name bulk-packages will probably
change as well.
We will probably get rid of the old PKGFILE/FULLPKGNAME (taking SUBPACKAGE
into account) and use the new PKGFILE/FULLPKGNAME
PKGFILE-foo/FULLPKGNAME-foo instead (with explicit subpackage information).
This is less confusing and simpler.
- back substitute VAR_SUBST (hence swap ARCH/MACHINE_ARCH)
- pass PKGDIR to make-plist.
- don't create PLIST-auto/PFRAG.shared-auto. Move originals around, and
create new ones directly (guard against accidentally deleting old ones).
Todo: add regexp to dispatch stuff to fragments automatically, based on
MULTI_PACKAGES.
Allow for MACHINE_ARCH specific files or patches, if no such files
for ARCH found.
Put compiled packages in MACHINE_ARCH directory, instead of ARCH.
All of this to improve support for compound architectures, mainly
m68k-based architectures at this time.
While there, mention mvme88k does not have shared libraries, to be
sure this isn't forgotten when mvme88k gets back in shape.
ok'ed by espie@
- allow Makefile to distinguish packaging steps, since SUBPACKAGE can now
be set for various reasons.
- EXTRA_LIBDIRS for architectures without shared libraries.
- let USE_MOTIF be sensible: any, openmotif, lesstif.
any triggers a lesstif flavor.
- show=name as a shortcut.
- package-dir-depends to check that packages are okay.
- error message for non-existent dirs.
- save subdir into package, that's what is useful, since the name is
already there.
- check that SUBPACKAGE is a member of MULTI_PACKAGES.
Make make SUBDIR=misc/fileutils,-ls work without error.
Use it where we can, including WRKOBJDIR `real' names.
NOTE: if you are using WRKOBJDIR, *all* flavored builds directories
will change names, from work-no_x11 to work,no_x11
dir-depends: list of SUBDIRS this port depends on (with flavors, subpackages),
to use with tsort.
build-depends-list, run-depends-list: list of pkgspec:dir needed for this
port, no recursion. To use for INDEX.
- move FLAVOR_EXT up so that WRK* are correct when they're needed for
dependencies.
- build a list of _PACKAGE_COOKIES, one for each subpackage.
- let package go through an indirection:
package: ${_PACKAGE_COOKIES}
_PACKAGE_COOKIE_${SUB}:
SUBPACKAGE=${SUB} ${MAKE} _package
so that all packages are `flat', and subpackages can depend on each other
freely.
don't work, as they propagate down subdirs.
Use `FLAVOR=a make' (sh) or `env FLAVOR=a make' (csh) instead.
Error out with a useful error message if old usage is encountered.
always define _ALWAYS_DEP, _BUILD_DEP, _RUN_DEP and test for emptiness
instead of definedness, so that the code is still optimized away when
dependency lists are defined, but empty.
Use eval to simplify passing those to submakes.
Note that the preferred separator is ',', not ':'.
(Because ':' can't be used unambiguously in *_DEPENDS, whereas ',' can)
NetBSD did this a while ago, this is a natural idea. It just took me
some time to figure out how to do that in a MULTI_PACKAGE context,
while maintaining compatibility with existing stuff.
* pull every dependency under the same rule, using specialized fragments.
* re-check after the dependency is expanded, unless earlyexit is true.
* explicitly recognize /nonexistent as a specific way to have always
triggered dependencies, use it to handle DEPENDS in a uniform way.
* parse dependencies fully. Note that we know have a pkg variable that will
be used.
Thanks to naddy@ for useful tweaks.
This is probably not quite perfect yet, stuff may break. Other stuff that
remain to be done:
- handle library dependencies better, so that lib.10 will match only
lib.10.x and not lib.100.
- handle default FLAVORS correctly. This involves not
passing FLAVOR='', but rearranging ${MAKE} ${_DEPEND_THRU} to remove
FLAVOR from the environment and from MAKEFLAGS (yucky).
The cleaner fix would be to create the package to stdout under SUDO
and redirect it, but that junk (pkg_create) is actively fighting that.
God, I've got to rewrite it and retire that crap.
it's so seldom used now).
Remove a few targets that are not really needed (mirror-distfiles, use
mirror-maker instead).
More changes to fake to come, once they've been properly tested.
this is stupid (BATCH is only there to skip IS_INTERACTIVE ports).
Make PATCH_CHECK_ONLY a Yes/No switch.
Let it be a slightly better no-op, e.g., skip creating the cookies
in checkpatch operation.
Use some weird code to allow backward compatibility.
Rely on distfiles suffixes and a case statement (with matching variable
EXTRACT_CASES) to allow distinct extraction rules for multiple distfiles.
incompatibility with NetBSD).
This patch rearranges code so that PKGPATH is maintained
- when recursing into subdirs,
- when computing dependencies.
So that this reduces the number of `pwd` calls overall.
Should be especially noticeable for mirror-maker.
WRKPKG should seldom be changed, unless it conflicts with the port's
actual naming conventions (default is ${WRKBUILD}/pkg).
Substitute stuff in INSTALL/DEINSTALL script as well.
The only drawback is that those LOOK like shell variables, but are actually
simple sed substitution.
Preconise a style such as
prefix=${PREFIX}
(then use ${prefix}) to avoid confusion.
invocations. This works around a bug in autoconf-generated scripts that
is present up to autoconf 2.13.
In recursive configure, INSTALL is re-set from ac_given_INSTALL, to handle
relative paths correctly. However, sometimes ac_given_INSTALL hasn't been
set yet, and we end up with a `BSD compatible INSTALL' of ../
- the PLIST, MESSAGE, DESCR variables refer to the sources.
- files are generated under ${WRKBUILD}, always.
- SUBST_VARS refer to the variables being substituted. ARCH,
HOMEPAGE, PREFIX are always substituted.
Use $\{VAR} to escape substitution.
Plus ${FLAVORS} -> -flavor1-flavor2 for PLIST.
- the %%FRAG%% and %%!FRAG%% notations are always used for PLIST.
- SED_PLIST can be augmented if needed.
Plus some compatibility kludges with the current situation.
use _DEPEND_THRU uniformously.
Note that this actually needs something very similar to what is used
in bsd.port.subdir.mk to work.
In particular `default' FLAVORs not being empty is probably a bad idea,
and won't work uniformously.
The right way to set a default flavor is probably to:
- not have empty as a valid flavor.
- do things in two steps:
FLAVOR?=default
.if empty(FLAVOR)
FLAVOR:=default
.endif
so that flavor always gets set correctly.
This is somewhat orthogonal to FLAVORS.
Principle: one port may build several packages in one go.
For instance, egcs will build all compilers, and package stuff as
base, C++, Fortran, etc.
This simplifies some japanese ports greatly, e.g., one Canna port that
builds libs/server/app packages.
How to use:
just set
MULTI_PACKAGES=-ext1 -ext2...
in the Makefile.
Then make package will invoke itself recursively with SUBPACKAGE set to
-ext1, -ext2.
The SUBPACKAGE will fetch package info as PLIST-ext1, COMMENT-ext1,
DESCR-ext1, etc.
The port Makefile itself can test the value of SUBPACKAGE if things differ.
Some problems:
- there still is a main package (with PLIST, DESCR, etc), and it's built
last, so you can't add RUN_DEPENDS=main_package to subpackages, you have
to encode them explicitly in the PLIST for now.
- other ports can't depend on subpackages yet. This is usually not a
problem, it's just a question of choosing the `right' main package (e.g.,
for Canna, it will be canna-lib).
- PLIST.sed recognize @FLAVOR@, which is extended to the current flavor,
so that a subpackage may depend on the corresponding main package in
explicit ways.
describe is also invoked recursively, so that all subpackages appear in
the INDEX.