[Bug 198045] Build tools hiding dependency issues
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Feb 25 22:18:23 UTC 2015
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=198045
Bug ID: 198045
Summary: Build tools hiding dependency issues
Product: Ports & Packages
Version: Latest
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: Ports Framework
Assignee: freebsd-ports-bugs at FreeBSD.org
Reporter: melvyn at magemana.nl
CC: portmgr at FreeBSD.org
The ports system can be used using `make -C ${PORTSDIR}/category/leafport
install`. This is the simplest way to use the ports system and it will compile
all dependencies that aren't installed yet.
With build tools ranging from portmaster to poudriere building their own
dependency tree and separating the build in it's own make process, a couple of
bugs are not uncovered by maintainers, because the top-level makefile is no
longer the leaf port being installed:
1. Exists checks:
.if !exists(/path/to/file/to/be/installed/by/dep)
BROKEN= Port needs foo with option bar
.endif
Case in point: x11-toolkits/pango.
Fails when: dependency is not installed
Fails because: exists check is done in top-level Makefile result not
re-evaluated after dependency is installed.
Fix: use if [ ! -f ] in sh, rather then make's version.
2. Ports with different version of interpreter in upwards dependencies
DEFAULT_VERSIONS= python=3.3
Upwards dependency forces python=2.7.
Case in point: graphics/qt4-opengl => graphics/libGL => py27-libxml:build =>
setuptools
Fail symptom: pkg complains about /usr/local/bin/easy_install
Fails because: not entirely sure, but I suspect that the DEFAULT_PYTHON_VERSION
is being mangled downstream, causing the unversioned easy_install to be
installed again.
3. Versions obtained from parsing output of != statements
BUILD_DEPENDS+= foo:${PORTSDIR}/misc/foo
FOO_VERSION!= ${LOCALBASE}/bin/foo -V
PLIST_SUB+= FOO_VERSION=${FOO_VERSON}
pkg-plist: lib/bar-foo-%%FOO_VERSION%%.so.1
Case in point: used to be in bsd.xorg.mk for Xorg Server. Don't know if this is
still in a different incarnation used elsewhere
Fail symptom: package install fails with files not being present
Fail reason: FOO_VERSION is empty at evaluation time and not reevaluated when
dependency is installed. Upstream build/install system does however pick up the
right version at build time of leaf port resulting in packing list looking for
lib/bar-foo-.so.1 and lib/bar-foo-1.0.so.1 being in STAGEDIR.
All these are hidden by recommended test tools used by maintainers because of
above mentioned reasons, yet it should be the installation mechanism that
should always work.
So this bugreport is two-fold:
1. Is `make -C ${PORTSDIR}/category/leafport install` still considered to be
fully suported and always working?
2a. If 1) is yes, can the above be fixed and can a test tool be used that does
not separate build stages?
2b. If 1) is no, is The Project pushing binary upgrades or ports-mgmt tools to
end users and as such should docs be updated:
http://www.freebsd.org/doc/en/books/handbook/ports-using.html
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-ports-bugs
mailing list