Put ${PATCH_WRSKRC} within quotes so that expanding it works properly when it
contains spaces. This is required for `make makepatch' to work with
audio/quimup or any other port that has WRKSRC with spaces. Before the patch:
% make -dl makepatch
cd: too many arguments
cd: too many arguments
and the port would be left with an empty files/ directory.
Reviewed by: marino
Approved by: portmgr (mat)
Differential Revision: https://reviews.freebsd.org/D5011
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
There were two issues with the new smart_makepatch script.
1) use of "local" declaration
All function variables were declared "local" during the review. This
caused the script to break, at least on FreeBSD 9.2. Given that it's
not being seen on 9.3R or later, it might be a bug in Bourne shell that
has since been fixed.
e.g. This resulted in stderr error on second iteration:
local contains=$(grep "^+++ " ${existing_patch} | awk '{x++; print x}')
however, this works fine:
local contains
contains=$(grep "^+++ " ${existing_patch} | awk '{x++; print x}')
To be safe, all local variables are assigned with $(<shell cmd>) on
separate lines now.
2) The comment extraction was flawed for files that contain multiple
patches. It was not counting the hunk lines properly which caused some
portion of a patch to be considered as a comment for the next patch. The
hunk traversal algorithm has been fixed.
Since 1) involved the introduction of local declarations that broke the
script and since only Scripts/smart_makepatch.sh is touched, I will
piggy-back on the original approval. The fix was tested with devel/nspr,
the port listed in the PR, which uses multi-patch files.
Approved by: portmgr
Differential Revision: D4136
PR: 204725
This update to the "makepatch" target adds the following enhancements:
1) Conserves comments
If the existing patch has comments, they will be transferred to the
regenerated patch.
2) Supports multiple patches per file
If the patch file contains concatenated patches, the makepatch
target will keep these patches together. It may change the order
of the patches the first time, but every time after the multi-patch
will be assembled in the same order.
Behavioral changes:
A) The "old" patches are not overwritten, but rather archived at:
${WRKDIR}/makepatch-tmp/archived-patches
B) Any patch that was not replaced or renamed is deleted by makepatch
(but it is archived first, see paragraph above)
C) There regeneration messages for the user will show them which patches
are using "legacy" names formats.
D) Makepatch will do a great job at "cleaning" git patches; it removes
lines starting with "diff" and "index" in the comments section.
Notes:
E) Should a source file be modified by multiple patches (e.g. two separate
multi-patches), a composite patch will be generated. In the above
example of two multi-patches, one would get the full patch and the
other no longer patch the source file.
Approved by: portmgr (mat)
Differential Revision: D4136
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]
In some basic benchmarks this sped up 'all-depends-list' about 20%. x11/kde4
went from 52 seconds to 41 seconds. More improvement is expected once
more command executions are cached in the 'export_ports_env' function.
With hat: portmgr
This is only missing the bsd.port.mk pieces to hook it up fully. A blocker
for hooking that up has been sub-packages, even though some implementation
could be made without them. For now just commit what I have so it is not
forgotten.
Obtained from: OneFS
Sponsored by: EMC / Isilon Storage Division
With hat: portmgr
This has been slightly faster in my tests since readelf(1) will fail on the
file much quicker if it doesn't find the ELF headers. This also more directly
finds the symbol table.
With hat: portmgr
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
This database contains compiled terminfo entries and is merged from
a large part which comes with ncurses themselves and compiled
.terminfo files installed by other ports (currently only rxvt-unicode
and jfbterm)
- Now the database is always kept up to date, regardless of port
installation order (both ncurses installed before .terminfo files
and the other way around work as expected)
- All affected ports now support clean deinstallation and do not
produce stage-qa errors
- Affected ports are simplified, as they now only need to define
USES=terminfo
- rxvt-unicode no longer pulls in ncurses: the dependency is not
really needed for anything beside updating it's own database
- The patch contains Q/A test to check whether a port needs, or
needs not USES=terminfo
Approved by: portmgr (mat, bapt)
Differential Revision: D3747
You can now `make test' on any port to run test sequence, no-op by default.
If a port defines TEST_TARGET, it'll run sub-make with specified target,
usually `check' or `test', useful if upstream supports that. The port may
instead define custom do-test target, as well as usual satellite targets:
{pre,do,post}-test, {pre,do,post}-test-OPT, {pre,do,post}-test-OPT-off
`make test' builds and stages port first, so test may use both WRKDIR and
STAGEDIR, and both BUILD and RUN depends are available for test target.
Additionally, TEST_DEPENDS is now properly supported and may be used to
define additional depends specifically for testing.
Framework may define default tests for specific cases. For instance,
perl5.mk and cran.mk already provide default test target on their own.
This commit also converts my ports which have tests to this new framework.
Approved by: portmgr (bapt)
Differential Revision: D3680
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
Move inlined shell code into a proper script taking 2 args in arguments: full or
limited. The code I more simpler and understandable. The argument allows to
factorize the code between CLEAN-DEPENDS-FULL and CLEAN-DEPENDS-LIST
While here, make the code accept dependencies without ${PORTSDIR}
The benefice beside being more readable is to allow support for dependency line
without ${PORTSDIR}
This is also necessary to be able to easily hack on it for FLAVORS/SUBPACKAGE
support
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