original idea from jsyn@, discussed and first tests at c2k3
Warning!
- this commit is different from all patches sent around, please remove
them before updating
- due to a few bugs in systrace this is currently not ready for the casual
porter and several ports will fail to build, you've been warned
The idea of this patch is to help a porter when developing a new port.
With systrace the configure, build and fake stages are not allowed to
open network connections or write outside some well defined directories.
This way misbehaving programs will be noticed due to logfile entries in
/var/log/messages and the port can be fixed. There is generally no need
for endusers to use this, as the checksum ensures that ports in the
future will behave the same as they did when porting. :)
To activate systrace'd port building, set USE_SYSTRACE=Yes (e.g. in
/etc/mk.conf)
tested by some people, ok espie@
NO_DESCRIBE, NO_PACKAGE, FETCH_BEFORE_ARGS, FETCH_AFTER_ARGS, NO_WARNINGS
(is this used ?), VARNAME, FORCE_PACKAGE.
Make CKSUMFILES invisible from users.
Make sure repackage and reinstall go through normal clean targets.
Kill pre-clean, pre-distclean, pre-repackage.
Don't allow customization of distclean.
clashed with multiple names into MAINTAINER (separated with comma), now
that it is part of SUBST_VARS. '|' should be safer wrt all other
variables there; ok espie
and need the metaauto wrappers to work.
The metaauto wrapper does not run depend on any autoconf version, to allow
partial installations.
Tested and approved by naddy@
MODGCC3_ARCHES should be set to use this, as addition to MODULES=gcc3
MODGCC3_LANGS accepts C++ (C default) and adds proper dependencies, etc
(more languages can be added later on eventually.)
Those will start getting splattered around the tree as time goes now
that the support is there (sparc64 & alpha can make use)
tree / release in sync, and strictly managing it generates a lot
of useless effort.
Note that the support for NEED_VERSION is now gone, however ports
will get that line stripped from their Makefile as time progresses
with updates, gradually; there is no emergent need for it.
ok espie and others
inside a subdirectory of the working directory, instead of elsewhere.
Allows packages BULK=Yes to work correctly, and increase reproducibility
of builds.
tested by naddy@ through several incarnations.
Ports that use patch/configure/build dependencies must be adjusted for this.
Pleasingly enough, the adjusted version is often simpler.
The change uses an internal _MASTER variable to recall the list of ports
built during dependencies, for less confusion.
RUN_DEPENDS) to create a more accurate list of @dirrm.
Minor negative side-effect: up-to-date dependent packages must be present
for this to work. Not a problem, since this is only used by maintainers.
This improves the quality of generated plists for large packages with lots
of dependencies by a large amount (e.g., kde)
reviewed by pval@
LIB_DEPENDS are no longer part of ALWAYS_DEPEND for the new-depends code,
but use their own code.
The code does scan the list of libraries for dependent packages, and insert
corresponding @libdepend lines into the resulting package. There are a few
important consequences:
- no libdepend lines are inserted if only a static library is found. So
RUN_DEPENDS are now needed to supplement LIB_DEPENDS if a package requires
another package for something that isn't a library.
- dependency checking for installed stuff can go one step further, since
we have the major/minor number of the libraries used for the build.
At the moment, pkg resolve dependencies does nothing smart with the
inserted libdepends, but it will (soon). In fact, for most libdepends, if
the major/minor scheme are correct, no check on the installed pkgspec ought
to be necessary... which is why the `default pkgspec to check' is pkg-* for
libraries.
- resolving recursive run dependencies need to go one step further: a
RUN_DEPENDS pkg may have some LIB_DEPENDS, and the RUN_DEPENDS pkg will be
needed to explicitly write the required information into the resulting
package... Hence the necessity of being able to tune the list of libraries
to ask the uninstalled package (and to make sure the uninstalled package
is built).
This is only preliminary work. Currently, this doesn't yield any real
benefits to the old approach, as a few semantic details need to be
sharpened out. Also, there are now quite a few old targets that are a
complete mess and will need to be cleaned up/removed entirely.
Thanks to naddy@ for testing various preliminary versions of this patch
and helping me iron bugs out.
no longer relies on ldconfig, but rather on the path stored inside
LIB_DEPENDS. Introduce a lib_resolve_fragment that can be used to
resolve the libraries from a given list (e.g., listlibs).
To be used in the next patch.
Note that this check is currently more or less equivalent to the old
check, apart from the fact that:
- libs can't trust packages,
- lib-depends always resort to non-shared libraries, even on shared
architectures, if the shared check doesn't work.
individual port, introduce a new variable for bsd.port.mk, VMEM_WARNING.
By setting this variable to `Yes', the user is given a warning about the
virtual memory requirements just before the pre-build stage.
o Also give some examples for different shells for what to do about
it, and mention login.conf(5). bash, for example, has a confusing
-v flag to ulimit.
o Document this in bsd.port.mk.5
espie@ ok
Useful for modules support: now specific modules can require later
versions of bsd.port.mk.
Of course, ports using modules may need an update to 1.486 to use
this feature.
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)