svn commit: r345057 - head/share/man/man7
Harry Schmalzbauer
freebsd at omnilan.de
Tue Mar 12 11:48:18 UTC 2019
Am 12.03.2019 um 11:50 schrieb Alexey Dokuchaev:
> On Tue, Mar 12, 2019 at 11:17:58AM +0100, Harry Schmalzbauer wrote:
>> Am 12.03.2019 um 10:27 schrieb Mateusz Piotrowski:
>>> New Revision: 345057
>>> URL: https://svnweb.freebsd.org/changeset/base/345057
>>>
>>> Log:
>>> ports.7: Add an example of how to use flavors
>>
>> Since cem and dim seem to stumbled over the missing FLAVOR
>> documentation, I see my main objection against current FLAVOR
>> implementation confirmed: build stage must'nt silently chose a
>> default FLAVOR, but an OPTIONS-like dialog must inform the user
>> and she _must_ choose one.
>>
>> FLAVOR is a severe regression for ports usage to all FreeBSD
>> users imho. Users can't see if a port makes use of FLAVOR or not.
>> User won't get informed that default FLAVOR is in use. [...]
>
> Users who install packages that are built from a flavorized port
> are well informed which flavor they're about to install, I don't
> see how flavors cause a problem -- they must have unique PKGNAMEs.
>
> For users that are building ports by themselves, looking into a
> Makefile can be helpful, but then again -- don't we always do that?
> It might slip when building the dependencies, so yeah, some extra
> care is in order. I don't see what's a big deal here, and flavors
> are certainly less annoying and more flexible than slave ports.
>
> If you really want an OPTIONS-like dialog popup then perhaps you
> should've attached some patches to your complaints. :-)
You are right, I missed the patches...
Here's my local diff which works around some more recent regressions
which were breaking local ports tree usage.
Abusing IGNORE is not a solution, but helps my avoiding unexpected
results. I see no easy way to patch FLAVOR, so I preferred spending
time working around USE_PACKAGE_DEPENDS shortcomings. Unfortunately
very limited time, but I'm able to smart-compile packages.
I don't support teaching users using packages in favour of ports.
Ports is great for the ambitious users etc. and often the first
"isnsight" for newbies.
But it's much more time consuming (wasting) than using packages, due to
the brute force compile approach widley used.
USE_PACKAGE_DEPENDS virtually always leads to inconsitencies, since only
the first dependency is resolved with the ports tree, subsequent
dependencys are resolved by pkg - hence, if not
in-sync-brute-force-compiled, it's likely that previous built packages
have different dependency versions than your fresh built.
My tool handles that and generates a _consistent_ iso image repository.
Personally need/want that to maintain production environments with
sensible ammount of effort (my production environments don't have
compilers).
I still have to iron out bugs of all categories during usage, but it's
in use and saving me really a lot of time.
(It also handles OPTIONS mismatches between possibly existing packages
and current ports options settings – which can also save a lot of time
and points out possibly unwanted current settinges etc..)
I was also missing the ability to batch-package everything already
compiled in WRKDIRPREFIX, so I wrote a small Makefile, which acts as a
harvester. Simly to be called in the wanted PACKAGES directory. Happy
to share on request.
Index: /usr/ports/Mk/bsd.port.mk
===================================================================
--- /usr/ports/Mk/bsd.port.mk (revision 495299)
+++ /usr/ports/Mk/bsd.port.mk (working copy)
@@ -1051,8 +1051,8 @@
.if empty(FLAVOR) && !empty(.MAKEOVERRIDES:MFLAVOR)
.error FLAVOR may not be passed empty as a make argument.
.endif
-# Store env FLAVOR for later
-.if !defined(_FLAVOR)
+# Store cli FLAVOR for later
+.if !defined(_FLAVOR) && defined(.MAKEOVERRIDES) &&
!empty(.MAKEOVERRIDES:MFLAVOR)
_FLAVOR:= ${FLAVOR}
.endif
PORTS_FEATURES+= FLAVORS
@@ -1492,9 +1492,13 @@
. endif
.endif
-.if !empty(FLAVORS) && empty(FLAVOR)
-FLAVOR= ${FLAVORS:[1]}
+.if !empty(FLAVORS) && empty(_FLAVOR)
+.if empty(PY_FLAVOR)
+IGNORE= Missing FLAVOR definition! Possible flavors: ${FLAVORS} (Usage:
'make FLAVOR=${FLAVORS:[1]} ${.TARGETS}' e.g.)
+.else
+_FLAVOR:=${PY_FLAVOR}
.endif
+.endif
# Reorder FLAVORS so the default is first if set by the port.
.if empty(_FLAVOR) && !empty(FLAVORS) && !empty(FLAVOR)
@@ -1675,10 +1679,14 @@
.endif
.if empty(FLAVOR)
-_WRKDIR= work
+.ifdef WRKDIRPREFIX
+WRKDIR=${WRKDIRPREFIX}${.CURDIR:S,${PORTSDIR},,}/work
+.endif
.else
-_WRKDIR= work-${FLAVOR}
+.ifdef WRKDIRPREFIX
+WRKDIR=${WRKDIRPREFIX}${.CURDIR:S,${PORTSDIR},,}/work-${FLAVOR}
.endif
+.endif
WRKDIR?= ${WRKDIRPREFIX}${.CURDIR}/${_WRKDIR}
BINARY_LINKDIR= ${WRKDIR}/.bin
@@ -2578,7 +2586,6 @@
PKGREPOSITORYSUBDIR?= All
PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR}
.if exists(${PACKAGES})
-PACKAGES:= ${PACKAGES:S/:/\:/g}
_HAVE_PACKAGES= yes
PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX}
.else
@@ -3363,19 +3370,19 @@
# Package
.if defined(_HAVE_PACKAGES)
-_EXTRA_PACKAGE_TARGET_DEP+= ${PKGFILE}
-_PORTS_DIRECTORIES+= ${PKGREPOSITORY}
+_EXTRA_PACKAGE_TARGET_DEP+= ${PKGFILE:S/:/\:/g}
+_PORTS_DIRECTORIES+= ${PKGREPOSITORY:S/:/\:/g}
-${PKGFILE}: ${WRKDIR_PKGFILE} ${PKGREPOSITORY}
+${PKGFILE:S/:/\:/g}: ${WRKDIR_PKGFILE} ${PKGREPOSITORY:S/:/\:/g}
@${LN} -f ${WRKDIR_PKGFILE} ${PKGFILE} 2>/dev/null \
|| ${CP} -f ${WRKDIR_PKGFILE} ${PKGFILE}
. if ${PKGORIGIN} == "ports-mgmt/pkg" || ${PKGORIGIN} ==
"ports-mgmt/pkg-devel"
-_EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTREPOSITORY}
-_PORTS_DIRECTORIES+= ${PKGLATESTREPOSITORY}
-_EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTFILE}
+_EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTREPOSITORY:S/:/\:/g}
+_PORTS_DIRECTORIES+= ${PKGLATESTREPOSITORY:S/:/\:/g}
+_EXTRA_PACKAGE_TARGET_DEP+= ${PKGLATESTFILE:S/:/\:/g}
-${PKGLATESTFILE}: ${PKGFILE} ${PKGLATESTREPOSITORY}
+${PKGLATESTFILE:S/:/\:/g}: ${PKGFILE:S/:/\:/g}
${PKGLATESTREPOSITORY:S/:/\:/g}
${INSTALL} -l rs ${PKGFILE} ${PKGLATESTFILE}
. endif
Thanks,
-harry
More information about the svn-src-head
mailing list