Commit Graph

20 Commits

Author SHA1 Message Date
Mathieu Arnold f916081e1c Add set pipefail in most framework scripts.
set pipefail changes the pipeline return status from being the return
status of the last command to the last non 0 exit status of any command
in the pipeline.  This is needed to make sure all the commands in a
pipeline did actually return a non 0 status and not only the last one.

PR:		250723
Exp-run by:	antoine
Reviewed by:	bapt
Approved by:	bapt
Differential Revision:	https://reviews.freebsd.org/D27007
2020-11-11 13:29:52 +00:00
Mathieu Arnold aeda355b1b Backout r554139. 2020-11-05 16:51:30 +00:00
Mathieu Arnold e9b2078c6c Add set pipefail in most framework scripts.
set pipefail changes the pipeline return status from being the return
status of the last command to the last non 0 exit status of any command
in the pipeline.  This is needed to make sure all the commands in a
pipeline did actually return a non 0 status and not only the last one.
2020-11-05 16:42:35 +00:00
Mathieu Arnold 653dab23f7 Fix overlays when using flavors.
Move FLAVOR processing before the overlays processing so that flavors
can be used with overlays.

PR:		247741
Submitted by:	mikael
2020-07-06 11:10:16 +00:00
Bryan Drewery b74622b8ed Don't show private variable name in user message. 2020-04-10 23:28:56 +00:00
Baptiste Daroussin 7610a280b5 Add support for overlays
overlays are a way to help users to integrate their own ports tree
with the official ports tree without having to maintain clone of the
official tree and remerge on regular basis.

The ports tree will lookup in the overlays (in the order the are listed in
OVERLAY variable) for the dependencies and the USES. It will use the first
found.

in order to use it the user have to declare his overlays that way in their
make.conf:
OVERLAYS= overlay1 overlay2 overlay3

Reviewed by:	manu
Approved by:	swills
Differential Revision:	https://reviews.freebsd.org/D21468
2019-09-03 14:36:00 +00:00
Mathieu Arnold 13a7d55681 Force ports depending on a fetch target to actually run checksum.
This prevents an improbable MITM attack on dependencies where the target
is "fetch" and the port is built manuallt.  (Which means a port depends
on a dependency being fetched, but not built or anything else.)  In this
case, as the target is only "fetch", the distribution files of the
dependency are not checked against the dependency's distinfo file.  One
could, in theory, impersonate the dependency's master site and provide a
malicious distribution file.

The ports that could in theory be affected are russian/gd, ukrainian/gd,
and ukrainian/webalizer.  They are only affected when building manually,
as when building with poudriere, the *-depends target do not have
network access, and the build would fail if the distribution files are
not already present.  (From the dependencies being built normally, where
checksum would have ran.)

The detail is described here:
https://www.reddit.com/r/BSD/comments/br62hm/freebsd_cryptographic_bypass_and_mitmbased/

Reported by:	emaste (on IRC)
Reviewed by:	swills emaste antoine
MFH:		2019Q3
Differential Revision:	https://reviews.freebsd.org/D21230
2019-08-13 10:31:18 +00:00
Bryan Drewery 15714bc164 Fix 'make -j'.
- Pass MAKEFLAGS down into do-depends properly.
- Remove redundant dependencies, run-depends and lib-depends, from
  targets that already depend on earlier targets that depend on
  the needed targets.

Reported by:	emaste
With hat:	portmgr
2017-12-07 01:51:00 +00:00
Mathieu Arnold e2e97eb2bc Implement basic flavors.
**Do not start migrating any ports, a hook will prevent it**

This has been a long awaiting feature, most of the work has been done by
bapt, bdrewery and antoine, I am just the one actually doing the commit.

All this informations, and more to come are in the first link to our wiki
in the bottom block. A roadmap is in the second link.

To define a different flavors in a port, before any include, set:

FLAVORS=  flavor1 flavor2 [...]

The first flavor in the list will be the default.

You can then check for flavors after includ'ing bsd.port.options.mk with:

.if ${FLAVOR} == flavor2
[some stuff]
.endif

To build flavor2, simply run:

make FLAVOR=flavor2

To depend on a specific flavor, write @<flavor> at the end of the depend
string, like:

RUN_DEPENDS=	something:origin@foo

Submitted by:	bapt, bdrewery, antoine
Reviewed by:	portmgr
More infos:	https://wiki.freebsd.org/Ports/FlavorsMigration
Todo List:	https://wiki.freebsd.org/Ports/FlavorsAndSubPackages
With hat:	portmgr
Differential Revision: https://reviews.freebsd.org/D10327
2017-09-26 14:14:44 +00:00
Bryan Drewery 5851a354c5 Don't truncate DEPENDS_ARGS here.
This code seems unused though since bsd.port.mk has its own handling
for clean-depends.

PR:		212273
With hat:	portmgr
2016-10-31 20:54:50 +00:00
Bryan Drewery c203addf6d Fix package depends install not respecting DEPENDS_ARGS for the PKGFILE lookup.
This also optimizes the PKGBASE/PKGFILE lookup with the new port_var_fetch(),
which passes in the known DEPENDS_ARGS.
2016-06-24 05:04:33 +00:00
Bryan Drewery 97587b1a48 Show proper variable in error.
With hat:	portmgr
2016-06-24 04:53:45 +00:00
Mathieu Arnold f69e8567aa Ease debugging of Mk/Scripts scripts.
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D6474
2016-05-20 19:01:59 +00:00
Bryan Drewery baf3ba05d0 Use normal PORTSDIR rather than dp_PORTSDIR so it is passed around properly.
This fixes errors when PORTSDIR is not set and /usr/ports is not used.  The
/usr/share/bsd.port.mk logic will auto set PORTSDIR, but this was not being
passed into children in the dependency scripts.

With hat:	portmgr
Reported by:	bapt
2015-12-04 22:18:29 +00:00
Bryan Drewery 56bd3649b5 - Only consider missing dependency origins to be fatal if they were not
satisfied and needed to be installed.  This restores older behavior of
  allowing a partial checkout where dependencies are already installed. [1]
- Delay fatal errors show that all can be shown at once.

With hat:	portmgr
Reported by:	lev [1]
2015-11-13 18:00:34 +00:00
Baptiste Daroussin 8f2fe367d2 Fix error message when not finding a package 2015-09-02 21:23:47 +00:00
Mathieu Arnold f08b36d14d Split LIB_DEPENDS and the other _DEPENDS types.
Reviewed by:	bapt, pgolluci
Exp-run by:	mat
Approved by:	bapt
With hat:	portmgr
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D3150
2015-07-24 10:11:18 +00:00
Baptiste Daroussin 65dcc9c127 Factorize the function to validate env
Reviewed by:	antoine
Differential Revision:	https://reviews.freebsd.org/D2966
2015-07-01 20:08:26 +00:00
Baptiste Daroussin ab8c1339c4 Add PATH environment when trying to find libraries this fixes building under
qemu emulation

Reported by:	Sylvain Garrigues (via #poudriere)
Tested by:	Sylvain Garrigues (via #poudriere)
2015-06-30 19:54:23 +00:00
Baptiste Daroussin a974ccd864 Refactor dependency checks and installation
This is an important step to prepare the ports tree for VARIANTS(aka flavours)
and subpackage by making the dependency code easier to deal with.

Change:
- Externalize in a proper shell script the code that was an inlined shell script
- Add better validation on the syntaxe used
- test after the dependency has been installed that it actually really fulfill
  the pattern searched (improving QA)
- Unify lib-depends with other dependency checks
- Make ${PORTSDIR} not mandatory anymore in _DEPENDS lines:
  aka pattern:${PORTSDIR}/category/port can now be written pattern:category/port
  /!\ Please to not use this syntax yet! poudriere have received a fix to be
  able to handle this new syntax (but no new release of poudriere has it yet)
  portmaster/portupgrade hasn't been checked. if one cares about those last 2 it
  would be really nice to provide patches to them!
- Remove _DEPENDS_ALWAYS it has half broken for a while and did not really make
  sense.
- Keep STRICT_DEPENDS for now it might not be necessary anymore given all the
  new checks added, but until someone confirms it is worth keeping it.

Note that all the env passed are prefixed by 'dp_' to avoid polluting children
make

Differential Revision:	https://reviews.freebsd.org/D2897
Reviewed by:	antoine
Exp-run by:	antoine
2015-06-28 18:50:37 +00:00