Commit graph

24 commits

Author SHA1 Message Date
Mathieu Arnold
258800dd7b SC2046: Quote this to prevent word splitting.
When command expansions are unquoted, word splitting and globbing will
occur. This often manifests itself by breaking when filenames contain
spaces.

Trying to fix it by adding quotes or escapes to the data will not work.
Instead, quote the command substitution itself.

If the command substitution outputs multiple pieces of data, use a loop
instead.

Add an exception when using set -- where splitting is intended.

PR:             227109
Submitted by:   mat
Exp-run by:	antoine
Sponsored by:   Absolight
2018-06-08 09:26:20 +00:00
Mathieu Arnold
267d5b45d4 SC2163: Exporting an expansion rather than a variable.
export takes a variable name, but shellcheck has noticed that you give
it an expanded variable instead. The problematic code does not export
MYVAR but a variable called foo if any.

Add exception when using indirections where the variable to extract is
actually the value of the variable.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:39 +00:00
Mathieu Arnold
c9551e33bb SC2034: <some var> appears unused. Verify it or export it.
Variables not used for anything are often associated with bugs, so
ShellCheck warns about them.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:36 +00:00
Mathieu Arnold
d605296d6e SC2145: Argument mixes string and array. Use * or separate argument.
The behavior when concatenating a string and array is rarely intended.
The preceeding string is prefixed to the first array element, while the
succeeding string is appended to the last one. The middle array elements
are unaffected.

For example, with the parameters foo,bar,baz, "--flag=$@" is equivalent
to the three arguments "--flag=foo" "bar" "baz".

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:22 +00:00
Bryan Drewery
7b11b952b5 Add PORTS_ENV_VARS caching support to USES=objc.
Approved by:	portmgr (implicit)
2018-03-13 21:43:28 +00:00
Bryan Drewery
874f7991d2 Avoid double exporting PORTS_ENV.
Approved by:	portmgr (implicit)
2018-03-03 01:18:50 +00:00
Bryan Drewery
dc15d9f81f Add compiler.mk to PORTS_ENV.
This only handles the default CC=cc but is enough to significantly improve
INDEX/Poudriere ports var gathering due to reducing around a dozen cc
fork+exec for every port that all have the same result.  These values
are reused during the port build as well which reduces more fork+exec
contention there.

Approved by:	portmgr (implicit)
2018-02-28 19:34:05 +00:00
Bryan Drewery
ecec71a78a ports_env: Store list of variables to export in PORTS_ENV_VARS in mk files.
This will avoid renamed/removed variables being orphaned, and allows for
exporting variables in ports_env that are not wanted to be exported in
sub-makes via _EXPORTED_VARS.

Approved by:	portmgr (implicit)
2018-02-28 18:38:17 +00:00
Bryan Drewery
ef270f29a9 Chase r459584: Remove _PYTHON_DEFAULT_VERSION.
Approved by:	portmgr (implicit)
2018-02-28 18:34:31 +00:00
Bryan Drewery
7568613077 ports_env: Fix OPSYS not being exported.
This was causing excessive 'uname -s' executions during Poudriere dependency
calculations.  The reasoning is due to HAVE_COMPAT_IA32_KERN having a newline
quoted at the end of it as '\ ' by bmake:

  # make -f Mk/bsd.port.mk -V 'HAVE_COMPAT_IA32_KERN=${HAVE_COMPAT_IA32_KERN:Q}' | cat -v
  HAVE_COMPAT_IA32_KERN=YES\

This resulted in the following being executed:

  export HAVE_COMPAT_IA32_KERN="YES OPSYS=FreeBSD"

With hat:	portmgr
2017-02-17 22:22:27 +00:00
Tijl Coosemans
82a87de90c - Replace Mk/bsd.linux-apps.mk and Mk/bsd.linux-rpm.mk with
Mk/Uses/linux.mk.
- Replace USE_LINUX=yes with USES+=linux and USE_LINUX=(.*) with
  USES+=linux:\1 in all ports.
- Replace USE_LINUX_APPS with USE_LINUX in all ports.
- Use INSTALL_SCRIPT instead of INSTALL_PROGRAM to install scripts in some
  ports.
- When USE_LINUX_RPM is defined, simplify the way DISTFILES and EXTRACT_ONLY
  are defined.
- Remove BRANDELF_DIRS and BRANDELF_FILES handling.  In the very rare cases
  that it is still necessary ports can run ${BRANDELF} from post-patch.
- Remove AUTOMATIC_PLIST handling.  Only one port used it.
- Fix Linux MASTER_SITES.
- Replace OVERRIDE_LINUX_BASE_PORT and OVERRIDE_LINUX_NONBASE_PORTS with
  default versions framework.
- bsd.port.mk:
  - Move Linux related bits to Uses/linux.mk, except USE_LINUX_PREFIX.
  - Put USE_LINUX_PREFIX handling after USES processing.
  - Define DOCSDIR, DATADIR, etc. after handling USE_LINUX_PREFIX so it can
    give these variables a different default value.
  - When a package needs to run Linux ldconfig check before installation if
    Linux support is enabled.
- emulators/linux_base-*:
  - Use USES=linux and remove duplication.
  - Remove files/lp.  FreeBSD or CUPS lp(1) should work.
  - Remove files/yp.conf.  No longer seems to be used.
  - Remove pkg-deinstall and move pkg-install into pkg-plist.
  - Update pkg-descr and pkg-message.
  - Fix handling of ldconfig cache in pkg-plist.
- devel/fb-adb: Use a Linux shell to run a Linux script but patch the script
  to use FreeBSD mkdir so mkdir -p $path creates $path and not
  /compat/linux/$path.

PR:		211645
Exp-run by:	antoine
Approved by:	portmgr (antoine)
2016-09-05 19:23:42 +00:00
Bryan Drewery
5061f450c8 Add a function port_var_fetch() for fetching multiple variables from a port.
This is taken from Poudriere (uncommitted)
2016-06-24 05:03:34 +00:00
Baptiste Daroussin
c4407c70ba Fix make check-plist with new @xmlcatmgr keyword 2016-05-25 18:46:58 +00:00
Mathieu Arnold
3255095c16 Extract the larger bsd.port.mk targets into separate scripts.
Refactor all the fetch code so that there are not 6 slightly different
versions of it but one that does it all.

The targets that have been extracted are:
- check-vulnerable
- do-fetch
- fetch-list
- fetch-url-list-int
- fetch-urlall-list
- checksum.
- makesum.
- check-checksum-algorithms

Run the fetch code directly from make makesum instead of calling make
fetch, this is because some port change the options with OPTIONS_*_FORCE
when make(makesum) to be able to add all distfiles in one go, which was
a nice, non working, idea.

PR:		208916
Submitted by:	mat
Exp-run by:	antoine
With hat:	portmgr
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D5997
2016-05-25 15:58:31 +00:00
Antoine Brodin
c6ef4747ef Do not cache PYTHON_PORTVERSION, it is not invariant between ports 2015-12-25 21:55:34 +00:00
Bryan Drewery
ab43229f76 Fix partial tree checkouts with 'all-depends-list', 'make clean', etc, after
inclusion of the ports_env feature into that handling around r399791.

With hat:	portmgr
Reported by:	ian, lev
2015-11-09 18:52:19 +00:00
Bryan Drewery
95e25b27ad Avoid redundantly looking up python command executions for dependency calculation.
This gets all-depends-list in x11/kde4 down to 30 seconds after the 52->41
second improvement in r399703.

With hat:	portmgr
2015-10-19 21:10:56 +00:00
Bryan Drewery
ef91c74363 Avoid redundantly looking up perl version when looking up dependencies or in sub-makes.
With hat:	portmgr
2015-10-19 20:53:15 +00:00
Bryan Drewery
481f66bd21 Follow-up r399170 with a script, ports_env.sh, that can be used for the purpose.
This will allow Poudriere to know if it is possible to use the feature or not
by the existence of the file.

Also fix quoting issues.

With hat:	portmgr
2015-10-13 00:03:10 +00:00
Bryan Drewery
6221392fff Add a function to export vars that bsd.port.mk generates from fork/exec.
This will be useful in Poudriere to avoid needless fork/exec for every
port when gathering dependencies.

Example usage:

  MAKE=make sh -c '. Mk/Scripts/functions.sh; export_index_env; export PACKAGE_BUILDING=1; truss -f make -C sysutils/zfstools -V BUILD_DEPENDS 2>&1' | grep exec

This eliminates 14 exec/fork calls for this example, when PACKAGE_BUILDING
is also set during -V.

Care should be taken with UID not being passed down into actual builds as it
may conflict with non-root builds.

With hat:	portmgr
2015-10-12 23:41:36 +00:00
Dmitry Marakasov
7d137fe741 Use -r flag for read command, this fixes handling of paths containing
backslashes, and, in result, stage-qa for archivers/deco

Approved by:	portmgr (antoine)
Differential Revision:	D3862
2015-10-12 13:33:18 +00:00
Baptiste Daroussin
5adc8a9faa Extend @sample to accept arguments
Maintainers can now use @sample sample_file target_file for all cases
that does not fall into the usual @sample something.sample

Reviewed by:	antoine
Differential Revision:	https://reviews.freebsd.org/D3734
2015-09-26 12:13:23 +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
Bryan Drewery
de0b44a025 - Move parse_plist() into a new file, functions.sh.
With hat:	portmgr
2015-01-08 04:04:55 +00:00