Commit graph

294 commits

Author SHA1 Message Date
Mathieu Arnold
c5f7a50a9d Fix fetch-list when running as a user.
The fetch-list target is used to generate a shell script that will more
or less replicates what do-fetch does. It allows one to do most things
as a regular user, and generate that script to run, say, on another
machine, if the one where you build things does not have access to the
internet, or has much slower access.

It was failing when DISTDIR was not writable by the current user, and
the port had a distribution file with a path in it. (Not using
DIST_SUBDIR, something else, like lang/rust does.) It was failing
because it was trying to create that subdirectory unconditionally,
instead of only creating the subdirectory if actually had to.  This also
fixes the bug that the generated script did not have the appropriate
mkdirs for those directories.

PR:		239293
Submitted by:	tobik (earlier version)
Reported by:	Ruslan Garipov
Differential Revision:	https://reviews.freebsd.org/D21112
2019-07-31 10:10:35 +00:00
Bryan Drewery
51409ae5ed Don't try splitting symbols out of .a archives.
Sponsored by:	DellEMC
2019-07-13 17:32:14 +00:00
Bryan Drewery
d64353f33f Fix handling of ports with *1* file.
Reported by:	glebius
Sponsored by:	DellEMC
2019-07-10 16:18:32 +00:00
Bryan Drewery
245e0379ee Reduce code duplication from r504140.
Suggested by:	cem
Sponsored by:	DellEMC
2019-06-30 23:02:44 +00:00
Bryan Drewery
9ba153d1d4 generate-symbols: Commit a working version.
This file originated from Isilon's codebase. When I upstreamed it
originally I refactored it to a broken version. This is now the
working version.

Debug files are purposely moved to LOCALBASE/lib/debug regardless
of what PREFIX is.

Sponsored by:	DellEMC
2019-06-26 01:19:00 +00:00
Bryan Drewery
6e992e91cb Revert r505129: I still have the wrong version. 2019-06-26 01:07:41 +00:00
Bryan Drewery
9ec378268c Allow generate-symbols.sh to actually work.
It splits out symbols to PREFIX as well not LOCALBASE. Fix
check-stagedir.sh for that.
2019-06-26 00:44:55 +00:00
Bryan Drewery
5211362c14 parse_plist: Avoid excess fork+exec inside the loop for stripping (mode) lines.
Need to do it still after stripping away @comment though.
The @dir handling could probably be improved as well somehow.
2019-06-13 22:22:06 +00:00
Bryan Drewery
6ced1c7607 Speedup ELF file detection almost 100%.
This uses the same pattern we have in qa.sh.  Rather than using file(1),
which reads the whole file and does too much magic, use readelf(1) which
bails out if the file lacks the proper ELF headers.

(This file is not yet used by anything)

Sponsored by:	DellEMC
2019-06-11 22:56:32 +00:00
Mathieu Arnold
bd94d2c38d Use UCL for pkg-message
Remain backward compatible but use ucl for the pkg-messages, which allows to:
- append messages one after the other
- only print message on delete, install, upgrade from a version to another

If pkg-message starts with a [ we consider it should be a valid ucl file

The format is the following:
[
{ message: "Always print" },
{ message: "package being removed", type: remove },
{ message: "package being installed", type: install },
{ message: "package is being upgraded", type: upgrade },
{ message: "Upgrading from lower than 1.0", maximum_version: "1.0", type: upgrade },
{ message: "Upgrading from higher than 1.0", minimum_version: "1.0", type: upgrade  },
{ message: "Upgrading from >1.0 < 3.0", maximum_version: "3.0", minimum_version: "1.0",
]

Because it is ucl one can use some sugar like:
[
{ message = <<EOD
formatted
message 'with fancy things'
EOD
},
}

Submitted by:	bapt
Reviewed by:	bapt, mat
Differential Revision:	https://reviews.freebsd.org/D19310
2019-06-03 12:57:44 +00:00
Antoine Brodin
fa22bcefd1 Add lang/julia to the blacklist of ports that other ports must not depend upon.
With hat:	portmgr
2019-05-28 09:44:05 +00:00
Baptiste Daroussin
127e896f23 Improve vulnerability checking
Use the return value of the pkg audit command instead of parsing its output
The output will change in the next version of pkg

Approved by:	mat (portmgr)
Reviewed by:	mat (portmgr)
Differential Revision:	https://reviews.freebsd.org/D20376
2019-05-27 13:02:05 +00:00
Mathieu Arnold
7551edfa4b Have makepatch ignore "C function prototype".
This will reduce the churn when base system diff subtly changes what is
put in that field.
2019-05-20 13:04:03 +00:00
Rene Ladan
dfd801cad1 Remove esound support from the ports tree, as audio/esound expired. 2019-05-08 12:54:13 +00:00
Tobias C. Berner
c5584049b0 qa.sh: update KDE components
- synchronize the list of components
- update the comment on how to generate the components for the now kde- prefixed names
- remove the now unnecessary part about Qt4

Reviewed by:	yuri
Approved by:	portmgr (rene)
Differential Revision:	https://reviews.freebsd.org/D19894
2019-04-13 17:05:45 +00:00
Mathieu Arnold
a29c880f74 Add a blacklist of ports that other ports must not depend upon.
Those ports are meta ports, and are only there to improve the user's
experience, in which, if they want, say, python or gcc, they do not have
to figure out what version they should be installing, they simply
install python or gcc.

Reviewed by:	antoine
Approved by:	adamw
Differential Revision:	https://reviews.freebsd.org/D19562
2019-03-18 15:59:13 +00:00
Bryan Drewery
f4320c83f5 Respect UID_FILES.
Reported by:	dvl
Tested by:	dvl
Approved by:	portmgr (implicit)
2019-03-09 18:38:18 +00:00
Antoine Brodin
ab1485c33a Fix leftover detection when ccache is not used
With hat:	portmgr
2019-03-01 20:26:11 +00:00
Tobias Kortkamp
69fbf6bed7 Mk/Scripts/qa.sh: Remove glib12 and gtk12
Approved by:	portmgr (bapt)
Differential Revision:	https://reviews.freebsd.org/D19055
2019-02-01 16:43:37 +00:00
Mathieu Arnold
3642a3436f Fix proxydeps QA check when multiple flavor of a package are installed.
Previously it would do this:

$ pkg which -q -o /usr/local/lib/libphonon4qt5.so
multimedia/phonon
$ pkg pkg annotate -q -S multimedia/phonon flavor
qt4
qt5

And that would break things in an interesting way.

This changes makes it use the package name of the required file, which
is unique.

Note that this problem would probably only ever happen on a live system.
I was not able to find a single port that would trigger this it in a
clean environment (poudriere testport).

PR:		231332
Submitted by:	dbn
2019-01-11 12:50:51 +00:00
Mathieu Arnold
dc820c0194 Remove obsolete qa check. 2018-12-17 14:29:41 +00:00
Gerald Pfeifer
c906745e9d Add share/info/*/dir to those files in STAGEDIR to ignore when checking
for orphans, i.e., files in STAGEDIR that are not covered by plist.

This is a follow-up to revision 484628 after which texinfo files are
now installed into ${PREFIX}/share/info. (A file "dir" is then created
and maintained by the tooling.)

Approved by:	portmgr (antoine)
2018-11-10 23:55:42 +00:00
Mathieu Arnold
35326f1a97 security/openssl-devel was removed, but there is a security/openssl111 now. 2018-11-10 10:09:48 +00:00
Antoine Brodin
32617460e5 Use full path to file(1) from base as sysutils/file is buggy
PR:		231554
2018-10-06 08:19:19 +00:00
Sunpoet Po-Chuan Hsieh
6dd23db065 Fix typo
Differential Revision:	https://reviews.freebsd.org/D17263
Approved by:	bapt (portmgr)
2018-09-22 16:45:47 +00:00
Mathieu Arnold
a48e2eda88 Extract PLIST_SUB substitutions into a sed script.
This fixes PLIST_SUB being too big and PLIST_SUB_SED getting bigger than
_POSIX2_LINE_MAX.

PR:		222355
Reported by:	asomers
Reviewed by:	asomers, mfechner
Sponsored by:	Absolight
Differential Revision:	 https://reviews.freebsd.org/D14014
2018-07-26 11:09:46 +00:00
Mathieu Arnold
7256d8f2f7 Tell people who disabled LICENSE processing that it then cannot be
checked.

Reported by:	mfechner
Approved by:	bapt
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D16450
2018-07-26 10:37:36 +00:00
Mathieu Arnold
1e5af0bf74 Have the license qa check actually work.
Pointy hat:	mat
Sponsored by:	Absolight
2018-07-18 11:33:24 +00:00
Mathieu Arnold
f305cacf3a Add a license qa check to tell porters when their ports will be mostly
useless.

Reviewed by:	antoine
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D16103
2018-07-18 11:13:06 +00:00
Mathieu Arnold
1ac9d4e91f Convert to readelf.
objdump is being removed from HEAD, make sure everything still works
when this happens.

PR:		229049
Reported by:	emaste
Sponsored by:	Absolight
Differential Revision:	https://reviews.freebsd.org/D15904
2018-06-30 08:37:33 +00:00
Mathieu Arnold
c0e3ff3da9 Remove dead code.
Sponsored by:	Absolight
2018-06-30 08:36:50 +00:00
Tobias C. Berner
b1a1d38bf9 Replace bsd.qt.mk by Uses/qt.mk and Uses/qt-dist.mk
From now on, ports that depend on Qt4 will have to set
	USES=		qt:4
	USE_QT=		foo bar
ports depending on Qt5 will use
	USES=		qt:5
	USE_QT=		foo bar

PR:		229225
Exp-run by:	antoine
Reviewed by:	mat
Approved by:	portmgr (antoine)
Differential Revision:	→https://reviews.freebsd.org/D15540
2018-06-28 17:39:53 +00:00
Mathieu Arnold
b19fe1e937 SC1004: This backslash+linefeed is literal. Break outside single quotes if you just want to break the line.
You have a single quoted string containing a backslash followed by a
linefeed (newline). Unlike double quotes or unquoted strings, this has
no special meaning. The string will contain a literal backslash and a
linefeed.

If you wanted to break the line but not add a linefeed to the string,
stop the single quote, break the line, and reopen it.

PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:41 +00:00
Mathieu Arnold
49b7fa03ac SC2035: Use ./*glob* or -- *glob* so names with dashes won't become options.
Since files and arguments are strings passed the same way, programs
can't properly determine which is which, and rely on dashes to determine
what's what.

A file named -f (touch -- -f) will not be deleted by the problematic
code. It will instead be interpreted as a command line option, and rm
will even report success.

Using ./* will instead cause the glob to be expanded into ./-f, which no
program will treat as an option.

It is not possible to use `-f *` because -f only forces the next
argument to be a directory, a later directory named -delete would mess
things up.

PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:38 +00:00
Mathieu Arnold
b234bfd716 SC2162: read without -r will mangle backslashes.
By default, read will interpret backslashes before spaces and line
feeds, and otherwise strip them. This is rarely expected or desired.

Normally you just want to read data, which is what read -r does. You
should always use -r unless you have a good reason not to.

PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:34 +00:00
Mathieu Arnold
ac5e64ba02 SC2015: Note that A && B || C is not if-then-else. C may run when A is true.
It's common to use A && B to run B when A is true, and A || C to run C
when A is false.

However, combining them into A && B || C is not the same as if A then B
else C.

In this case, if A is true but B is false, C will run.

If an if clause is used instead, this problem is avoided.

PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:31 +00:00
Mathieu Arnold
e2bee271c6 Don't exec with a pipe afterwards, it is weird.
PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:28 +00:00
Mathieu Arnold
52abedae74 SC2185: Some finds don't have a default path. Specify '.' explicitly.
(false positive, split flags to avoid triggering it.)

PR:             227109
Submitted by:   mat
Sponsored by:   Absolight
2018-06-08 09:26:25 +00:00
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
bf064c8390 SC2006: Use $(..) instead of legacy ...
Backtick command substitution `STATEMENT` is legacy syntax with several
issues.

 - It has a series of undefined behaviors related to quoting in POSIX.
 - It imposes a custom escaping mode with surprising results.
 - It's exceptionally hard to nest.

$(STATEMENT) command substitution has none of these problems, and is
therefore strongly encouraged.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:54 +00:00
Mathieu Arnold
473030b0ea SC2155: Declare and assign separately to avoid masking return values.
In the original code, the return value of mycmd is ignored, and export
will instead always return true. This may prevent conditionals, set -e
and traps from working correctly.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:51 +00:00
Mathieu Arnold
ccbfedd88c SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
cd can fail for a variety of reasons: misspelled paths, missing
directories, missing permissions, broken symlinks and more.

If/when it does, the script will keep going and do all its operations in
the wrong directory. This can be messy, especially if the operations
involve creating or deleting a lot of files.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:48 +00:00
Mathieu Arnold
2364943f9d SC2153: Possible misspelling: PORTNAME may not be assigned, but portname is.
ShellCheck has noticed that you reference a variable that is not
assigned in the script, which has a name remarkably similar to one that
is explicitly assigned. You should verify that the variable name is
spelled correctly.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:45 +00:00
Mathieu Arnold
644b6c731d SC2091: Remove surrounding $() to avoid executing output.
ShellCheck has detected that you have a command that just consists of a
command substitution.

This is typically done in order to try to get the shell to execute a
command, because $(..) does indeed execute commands. However, it's also
replaced by the output of that command.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:42 +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
6675b402ba SC2198: Arrays don't work as operands in [ ]. Use a loop (or concatenate with * instead of @).
Array expansions become a series of words in [ .. ]. Operators expect
single words only.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:33 +00:00
Mathieu Arnold
9035fb8956 SC2221 & SC2222: This pattern always overrides a later/previous one.
You have specified multiple patterns in a case statement, where one will
always override the other. The pattern being overridden is indicated
with a SC2222 warning.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:29 +00:00
Mathieu Arnold
c71660dad5 SC2068: Double quote array expansions to avoid re-splitting elements.
Double quotes around $@ prevents globbing and word splitting of
individual elements, while still expanding to multiple separate
arguments.

Add exceptions when splitting is the intended behavior.

PR:		227109
Submitted by:	mat
Sponsored by:	Absolight
2018-06-01 16:20:26 +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