Commit graph

2039 commits

Author SHA1 Message Date
rillig
026854da4d mk: move locking.mk from internal to misc
Locking is not really internal since it has user-settable variables.
2020-05-10 06:52:49 +00:00
rillig
7b6dd6a591 mk/bsd.pkg.mk: improve documentation 2020-05-03 10:34:00 +00:00
rillig
df9c05e64b mk/bsd.pkg.mk: fix typos in documentation 2020-05-03 09:22:16 +00:00
jperkin
071d314936 mk: Support undefined UNLIMIT_RESOURCES.
Currently virtualsize is only defined for NetBSD, breaking builds that use it
on any other platform.  Adding defaults for all other platforms should be done
at some point, this at least unbreaks package builds for now and provides a
safer default for any future additions.
2020-03-26 12:23:54 +00:00
rillig
3d253ab785 mk/bsd.pkg.mk: support spaces in PATH directories
Fixes PR pkg/53959.
2020-02-09 22:39:20 +00:00
kamil
ca614b1505 Allow USE_X11=weak that allows X11 paths without having them reachable
Useful in certain packages (python) where X11 paths are needed in wrappers,
but optional in build and runtime.
2020-01-21 10:56:54 +00:00
rillig
c18ce611ff mk: make BROKEN a list of lines, like PKG_FAIL_REASON
Packages defined the variable BROKEN inconsistently. Some added quotes,
like they are required in PKG_FAIL_REASON, some omitted them.

Now all packages behave the same, and pkglint will flag future mistakes.
2019-11-04 17:47:29 +00:00
rillig
d13d7ca81c mk/bsd.pkg.mk: prevent the WRKDIR path from containing symlinks
This is the same underlying issue as in bootstrap/bootstrap from
2019-05-01.

See https://mail-index.netbsd.org/pkgsrc-users/2019/08/18/msg029207.html
2019-08-18 21:58:51 +00:00
rillig
072f2096f3 mk/bsd.pkg.mk: include PKGVERSION in show-all target 2018-05-28 20:37:47 +00:00
joerg
e97fae9138 Introduce TEST_DEPENDS.
Place them in ALL_DEPENDS iff PKGSRC_RUN_TESTS is set, so that bulk
builds will pick them up.
2018-01-13 12:48:56 +00:00
maya
7cfd815255 Remove traces of crypto restrictions.
ok for idea riastradh
2018-01-02 05:49:44 +00:00
khorben
42bd86cfb0 Add initial support for building packages reproducibly
It currently tackles two problems:
- gcc(1) hard-coding full paths in debugging information (with one
  caveat at the moment)
- ar(1) hard-coding user IDs in archive headers

This allows packages built from the same tree and options to produce
identical results bit by bit. This option should be combined with ASLR
and PKGSRC_MKPIE to avoid predictable address offsets for attackers
attempting to exploit security vulnerabilities.

This is still disabled by default, and only supports NetBSD so far.

As discussed on tech-pkg@
2017-11-12 13:34:14 +00:00
wiz
694ba19af5 mk: remove import target
While it would be useful, the current implementation has not been
updated even to use 'cvs add' instead of 'cvs import' (policy change
in 2012). Use the import-package.sh script currently residing in wip/
instead.
2017-09-16 09:34:25 +00:00
jlam
825762cd05 Toggle using pkgsrc/mk/smf.mk based on ${_USE_NEW_PKGINSTALL}.
Missing change from initial commit to provide the toggle for using
the new frameworks to replace pkgsrc/mk/pkginstall.
2017-06-01 03:41:44 +00:00
jlam
0a676f1f26 Provide switch to activate new frameworks to replace "pkginstall".
If ${_USE_NEW_PKGINSTALL} is "yes", then use the new "pkgtasks",
"init", and "pkgformat/pkg"-scripts frameworks instead of the
existing "pkginstall" framework.
2017-06-01 02:15:10 +00:00
jlam
207904f706 Document PRE_CMD.su-<target> and simplify its use in "su-target".
This avoids needing to use a shell command to test whether
${PRE_CMD.su-<target>} is empty before executing it.
2017-05-31 22:56:41 +00:00
jlam
b110ad9dac Move detection of shared library type into the platform file.
Only four platforms, all BSDs, need to resolve "ELF/a.out" into
either ELF or a.out.  Calculate it directly in the platform file
and return the value in ${_OPSYS_SHLIB_TYPE} and export that value
in bsd.prefs.mk as ${SHLIB_TYPE}.

Instead of requiring the file(1) tool, we can expect the base
system of those BSDs to have /usr/bin/file, so make use of it
directly.
2017-05-31 22:55:01 +00:00
joerg
df836cad8d Simplify PATH handling. Use full pkgsrc path for cwrappers, but skip the
cwrapper directory itself.
2017-05-04 18:30:56 +00:00
joerg
b33b40aeb1 Explicitly unset CONFIG_SITE. Some Linux distributions like SuSE set it
in the default environment and provide a config.site overriding the
default libdir settings. This breaks havoc with our PLISTs and expected
library paths, so kill it.
2016-08-26 16:51:56 +00:00
rillig
077f4537d6 Improved documentation of show-var and show-vars. 2016-06-11 12:41:30 +00:00
khorben
169865dfeb Import mini-framework for paxctl(8) on NetBSD/{amd64,i386}
This allows setting flags for PaX on select binaries. Two new variables
are introduced for packages: NOT_PAX_ASLR_SAFE and NOT_PAX_MPROTECT_SAFE.
They both expect a list of binaries are known to not support PaX ASLR
and/or PaX MPROTECT, respectively.

"Please commit" wiz@
2016-05-26 16:03:04 +00:00
jperkin
13d4067905 Move handling for PKG_SUPPORTED_OPTIONS and PKG_SUGGESTED_OPTIONS as
OPSYSVARS to bsd.options.mk as they affect tests against PKG_OPTIONS
before bsd.pkg.mk is parsed.

Approved for commit during the freeze by agc@.
2016-03-23 11:50:01 +00:00
jperkin
a6c8139ccc Add MAKE_FLAGS to the default list of OPSYSVARS, it's used enough times. 2016-02-26 11:38:37 +00:00
jperkin
499492952d Expand the default list of OPSYSVARS to include those commonly used
already, plus those that are most used in OPSYS-specific sections.
2016-02-25 08:20:25 +00:00
richard
f373158641 Make sure FAKEHOMEDIR is created when WRKDIR is.
Add fgrep to default USE_TOOLS for good measure.
2015-12-13 06:05:25 +00:00
jperkin
7002b040bb Remove mk/find-prefix.mk and its usage from the mk infrastructure.
The find-prefix infrastructure was required in a pkgviews world where
packages installed from pkgsrc could have different installation
prefixes, and this was a way for a dependency prefix to be determined.

Now that pkgviews has been removed there is no longer any need for the
overhead of this infrastructure.  Instead we use BUILDLINK_PREFIX.pkg
for dependencies pulled in via buildlink, or LOCALBASE/PREFIX where the
dependency is coming from pkgsrc.

Provides a reasonable performance win due to the reduction of `pkg_info
-qp` calls, some of which were redundant anyway as they were duplicating
the same information provided by BUILDLINK_PREFIX.pkg.
2015-11-25 13:05:47 +00:00
jperkin
1a2757e82f Introduce _USE_CWRAPPERS logic to ensure consistency, USE_CWRAPPERS could
differ between a package and user setting, resulting in incorrect WRAPPER_*
values being set from wrapper-defs.mk.
2015-04-29 14:23:23 +00:00
jperkin
d040a0e7c5 Split cwrappers from legacy wrappers. We no longer generate the legacy
wrappers when USE_CWRAPPERS is enabled, saving a reasonable amount of
I/O during builds, mostly due to avoiding the transform/untransform sed
file generations.

WRAPPER_DIR and WRAPPER_BINDIR are used by various packages to override
or point to specific wrappers, and these now point to the cwrappers
directory when enabled, removing the need for CWRAPPERS_BIN_DIR
duplication and fixing packages which previously were using legacy
wrappers by accident.

A number of targets are now duplicated between bsd.wrapper.mk and
cwrappers.mk, the intention being that the legacy wrappers will be
deprecated once cwrappers is verified on all supported platforms.  If
that turns out to take longer than expected, we will probably want to
introduce a wrapper.mk to abstract them away before loading the
appropriate back-end.
2015-04-27 19:59:07 +00:00
tnn
c9632aa0f3 Address issues raised by agc@ to make the github master site handling
more pkgsrcesque.

1) turn _USE_GITHUB into an internal infrastructure variable
2) put back MASTER_SITES in packages' Makefiles.
3) encode the account in the master site URL, remove GH_ACCOUNT
4) rename GH_PROJECT to GITHUB_PROJECT
5) rename GH_TAGNAME to GITHUB_TAG and allow it to accept commit hash
   as well as tag. GH_COMMIT is gone.
6) turn on this functionality when MASTER_SITES matches a predefined github
   pattern instead of via explicit USE_GITHUB setting.
2015-03-07 21:14:32 +00:00
tnn
a5c5eb95d9 Adopt USE_GITHUB from FreeBSD ports to make github MASTER_SITE
handling less painful.
See: https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/makefile-distfiles.html#makefile-master_sites-github

To use, set in Makefile:

DISTNAME=	exampleproject-1.2
USE_GITHUB=	YES

The following variables alter USE_GITHUB behavior:

GH_ACCOUNT	defaults to PKGBASE
GH_PROJECT	defaults to PKGBASE
GH_TAGNAME	defaults to PKGVERSION_NOREV
		(sometimes you want to override with v${PKGVERSION_NOREV})
GH_COMMIT	explicit commit hash if no tag is available
GH_RELEASE	default empty, may be set to ${DISTNAME} for example
GH_TYPE		overrides the autodetected MASTER_SITE URL scheme
2015-03-07 14:17:51 +00:00
dholland
2a00e7b840 Use PKG_SKIP_REASON instead of PKG_FAIL_REASON for some cases where
the problem is either situational (e.g. the various RESTRICTED-like
cases) or unfixable in pkgsrc (no pthreads, ipv6, etc. on platform).

Conversely, if the wrong version of mysql is installed, that's a
PKG_FAIL_REASON.
2015-01-01 07:51:47 +00:00
dholland
de73f20ecb Add support for BROKEN_ON_PLATFORM and BROKEN_EXCEPT_ON_PLATFORM, as per
discussion on tech-pkg.

BROKEN_ON_PLATFORM and NOT_FOR_PLATFORM are the same, except that
(now) BROKEN_ON_PLATFORM sets PKG_FAIL_REASON and NOT_FOR_PLATFORM
sets PKG_SKIP_REASON. BROKEN_EXCEPT_FOR_PLATFORM and ONLY_FOR_PLATFORM
correspond in the same way.

The idea is that going forward we will distinguish unbuildable
packages that theoretically ought to be fixed (these are BROKEN) from
packages where it doesn't make sense to build (these are NOT_FOR)...
examples of the former include most non-64-bit-clean packges; examples
of the latter include OS-specific language bindings.

A general review of the uses of NOT_FOR_PLATFORM and ONLY_FOR_PLATFORM
(converting many of them to BROKEN...) is coming up.

Similarly, a general review of the uses of PKG_FAIL_REASON and
PKG_SKIP_REASON is coming up.

For this to become useful, pbulk needs to be taught to report failing
and skipped packages differently - the idea is that failing packages
should be reported up front and skipped packages don't need to be. This
has not been done yet, but one set of things at a time...
2015-01-01 06:06:06 +00:00
wiz
627d407a75 Remove pkg_views support, second part: infrastructure. 2014-12-30 15:13:19 +00:00
joerg
6f8622bb33 mk/buildlink3/* (via mk/wrapper/bsd.wrapper.mk") must be included before
mk/cwrappers.mk, so fix include order.
2014-11-25 18:27:17 +00:00
joerg
516b42831c Add cwrappers glue as developed during Google's Summer of Code 2007. 2014-11-24 00:32:31 +00:00
joerg
c6e1b83d1b Simplify PKG_DEVELOPER checks. 2014-10-12 23:39:17 +00:00
wiz
e8647fedbb Remove SVR4_PKGNAME, per discussion on tech-pkg. 2014-10-09 13:44:32 +00:00
riz
3ab8e30838 Make package cross-compiling work through su-target as
well as it does for unprivileged builds.  From riastradh.
2014-08-28 22:29:37 +00:00
jperkin
aec701da4b Split SMF handling across bsd.pkg.mk and bsd.prefs.mk. Should fix issues
with packages which include bsd.prefs.mk before setting SMF variables.
2014-08-14 11:08:37 +00:00
wiz
c9122e82ab Remove old bulk build code. Use pbulk. 2014-06-02 10:24:05 +00:00
jperkin
5329420146 Move INIT_SYSTEM to bsd.prefs.mk, allowing it to be tested in
package Makefiles when packages perform custom rc.d handling.
2014-05-06 14:48:06 +00:00
wiz
8c640bc103 Remove DEBUG_FLAGS variable that occurs exactly once in pkgsrc -- here.
Set INSTALL_UNSTRIPPED if you want the behaviour it affected.
2014-04-15 18:55:18 +00:00
jperkin
e393ce6d94 Introduce infrastructure support for SMF.
SMF is the Service Management Facility, the default init system in
Solaris and derivatives since version 10.  This adds "smf" to the list
of supported INIT_SYSTEM types, and makes it the default init system on
platforms where it is available.

Packages can introduce SMF support by providing a manifest file, by
default located in ${FILESDIR}/smf/manifest.xml but manifests under
${WRKSRC} can be used too if the package source includes one.

SMF method scripts are supported too if required, using SMF_METHODS in a
similar manner to RCD_SCRIPTS.

Many parts of the SMF infrastructure are configurable, see mk/smf.mk for
the full details.
2014-03-11 14:07:04 +00:00
jperkin
b3106a0b77 Add initial support for alternative init systems.
This commit introduces an INIT_SYSTEM variable which will determine the
type of init system to be used on the target system, supporting "rc.d"
at this time.

The pkginstall infrastructure is changed to only install RCD_SCRIPTS if
INIT_SYSTEM is set to "rc.d", and PLIST entries for rc.d scripts are
now handled automatically based on RCD_SCRIPTS.
2014-03-11 13:45:07 +00:00
obache
7c1e3ef362 Use PKGNAME_NOREV as a part of default WRKSRC if DISTNAME is not defined. 2014-03-03 03:21:16 +00:00
obache
b2f380436c loose mandantory DISTNAME. 2014-03-02 08:54:41 +00:00
christos
0399286bdf Reset MAKELEVEL=0 to fix bad gmake/bsdmake interactions.
Our make(1) now sets $MAKELEVEL. While this should cause no harm, gmake
detects a non-zero $MAKELEVEL and automatically sets "w" in $MAKEFLAGS
for subordinate makes, in order to print the entry and exit directories.
Our make, does not understand -w, so it prints an error message and exits.

In order to catch this everywhere (since cmake for example can invoke
either our make or gmake depending on how it feels), we reset the variable
for any top level command. This effectively reverts to the behavior of
our make not setting $MAKELEVEL.
2013-07-15 20:22:15 +00:00
tron
65964dec38 Revert change to "PKG_SETENV":
1.) It breaks the build of "www/firefox" which gets upset if "SHELL" is
    not defined in the environment. There are probably more packages
    which similar problems.
2.) It breaks established use case like this one:

	export ALLOW_VULNERABLE_PACKAGES=yes
	cd pkgsrc/multimedia/ffmpeg2theora
	bmake install

    In this case the value of "ALLOW_VULNERABLE_PACKAGES" will not be
    passed to the build of "pkgsrc/multimedia/ffmpeg". And the build of
    this package will fail due to known vulnerabilities.
2013-06-05 08:19:57 +00:00
riastradh
d872ff9ca8 Make PKGSRC_SETENV sanitize the environment. 2013-06-03 23:27:14 +00:00
obache
add5c36964 drop `file' command from default USE_TOOLS list.
It is used in limited case, and does not exist by default on some platforms.
proposed at over 30 months ago, and no negative feedback (only one request).
2013-05-12 06:17:50 +00:00