xbps-src: re-introduce etc/virtual.
The `etc/virtual` file declares the default package to be built for virtual dependencies declared as "virtual?foo" in $depends. Before this change, the run-time dependency was added as is to the final binary package but no pkg providing this virtual pkg was built. With this file we declare the *default* pkg to be built. NOTE: "virtual?foo" is only applicable to *run* time dependencies, i.e only those declared in $depends.
This commit is contained in:
parent
78c601e18e
commit
d2bac19750
4 changed files with 248 additions and 173 deletions
|
@ -118,6 +118,14 @@ Native and cross compiler/linker flags are set per architecture in `common/build
|
|||
and `common/cross-profiles` respectively. Ideally those settings are good enough by default,
|
||||
and there's no need to set your own unless you know what you are doing.
|
||||
|
||||
#### Virtual packages
|
||||
|
||||
The `etc/defaults.virtual` file contains the default replacements for virtual packages,
|
||||
used as dependencies in the source packages tree.
|
||||
|
||||
If you want to customize those replacements, copy `etc/defaults.virtual` to `etc/virtual`
|
||||
and edit it accordingly to your needs.
|
||||
|
||||
### Directory hierarchy
|
||||
|
||||
The following directory hierarchy is used with a default configuration file:
|
||||
|
|
|
@ -1,170 +1,181 @@
|
|||
# vim: set ts=4 sw=4 et:
|
||||
#
|
||||
# This hook executes the following tasks:
|
||||
# - Generates rdeps file with run-time dependencies for xbps-create(8)
|
||||
# - Generates shlib-requires file for xbps-create(8)
|
||||
# - Generates rdeps file with run-time dependencies for xbps-create(1)
|
||||
# - Generates shlib-requires file for xbps-create(1)
|
||||
|
||||
add_rundep() {
|
||||
local dep="$1" i= rpkgdep= _depname= _rdeps= found=
|
||||
local dep="$1" i= rpkgdep= _depname= _rdeps= found=
|
||||
|
||||
_depname="$($XBPS_UHELPER_CMD getpkgdepname ${dep} 2>/dev/null)"
|
||||
if [ -z "${_depname}" ]; then
|
||||
_depname="$($XBPS_UHELPER_CMD getpkgname ${dep} 2>/dev/null)"
|
||||
fi
|
||||
_depname="$($XBPS_UHELPER_CMD getpkgdepname ${dep} 2>/dev/null)"
|
||||
if [ -z "${_depname}" ]; then
|
||||
_depname="$($XBPS_UHELPER_CMD getpkgname ${dep} 2>/dev/null)"
|
||||
fi
|
||||
|
||||
for i in ${run_depends}; do
|
||||
rpkgdep="$($XBPS_UHELPER_CMD getpkgdepname $i 2>/dev/null)"
|
||||
if [ -z "$rpkgdep" ]; then
|
||||
rpkgdep="$($XBPS_UHELPER_CMD getpkgname $i 2>/dev/null)"
|
||||
fi
|
||||
if [ "${rpkgdep}" != "${_depname}" ]; then
|
||||
continue
|
||||
fi
|
||||
$XBPS_UHELPER_CMD cmpver "$i" "$dep"
|
||||
rval=$?
|
||||
if [ $rval -eq 255 ]; then
|
||||
run_depends="${run_depends/${i}/${dep}}"
|
||||
fi
|
||||
found=1
|
||||
done
|
||||
if [ -z "$found" ]; then
|
||||
run_depends+=" ${dep}"
|
||||
fi
|
||||
for i in ${run_depends}; do
|
||||
rpkgdep="$($XBPS_UHELPER_CMD getpkgdepname $i 2>/dev/null)"
|
||||
if [ -z "$rpkgdep" ]; then
|
||||
rpkgdep="$($XBPS_UHELPER_CMD getpkgname $i 2>/dev/null)"
|
||||
fi
|
||||
if [ "${rpkgdep}" != "${_depname}" ]; then
|
||||
continue
|
||||
fi
|
||||
$XBPS_UHELPER_CMD cmpver "$i" "$dep"
|
||||
rval=$?
|
||||
if [ $rval -eq 255 ]; then
|
||||
run_depends="${run_depends/${i}/${dep}}"
|
||||
fi
|
||||
found=1
|
||||
done
|
||||
if [ -z "$found" ]; then
|
||||
run_depends+=" ${dep}"
|
||||
fi
|
||||
}
|
||||
|
||||
store_pkgdestdir_rundeps() {
|
||||
if [ -n "$run_depends" ]; then
|
||||
: > ${PKGDESTDIR}/rdeps
|
||||
for f in ${run_depends}; do
|
||||
_curdep="$(echo "$f" | sed -e 's,\(.*\)?.*,\1,')"
|
||||
if [ -z "$($XBPS_UHELPER_CMD getpkgdepname ${_curdep} 2>/dev/null)" -a \
|
||||
-z "$($XBPS_UHELPER_CMD getpkgname ${_curdep} 2>/dev/null)" ]; then
|
||||
_curdep="${_curdep}>=0"
|
||||
fi
|
||||
printf "${_curdep} " >> ${PKGDESTDIR}/rdeps
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
hook() {
|
||||
local depsftmp f j tmplf mapshlibs sorequires
|
||||
local depsftmp f j tmplf mapshlibs sorequires _curdep
|
||||
|
||||
# Disable trap on ERR, xbps-uhelper cmd might return error... but not something
|
||||
# to be worried about because if there are broken shlibs this hook returns
|
||||
# error via msg_error().
|
||||
trap - ERR
|
||||
# Disable trap on ERR, xbps-uhelper cmd might return error... but not something
|
||||
# to be worried about because if there are broken shlibs this hook returns
|
||||
# error via msg_error().
|
||||
trap - ERR
|
||||
|
||||
mapshlibs=$XBPS_COMMONDIR/shlibs
|
||||
tmplf=$XBPS_SRCPKGDIR/$pkgname/template
|
||||
mapshlibs=$XBPS_COMMONDIR/shlibs
|
||||
tmplf=$XBPS_SRCPKGDIR/$pkgname/template
|
||||
|
||||
if [ -n "$noarch" -o -n "$noverifyrdeps" ]; then
|
||||
echo "$run_depends" > ${PKGDESTDIR}/rdeps
|
||||
sed 's,virtual?,,g' -i ${PKGDESTDIR}/rdeps
|
||||
return 0
|
||||
fi
|
||||
if [ -n "$noarch" -o -n "$noverifyrdeps" ]; then
|
||||
store_pkgdestdir_rundeps
|
||||
return 0
|
||||
fi
|
||||
|
||||
depsftmp=$(mktemp -t xbps_src_depstmp.XXXXXXXXXX) || return 1
|
||||
find ${PKGDESTDIR} -type f -perm -u+w > $depsftmp 2>/dev/null
|
||||
depsftmp=$(mktemp -t xbps_src_depstmp.XXXXXXXXXX) || return 1
|
||||
find ${PKGDESTDIR} -type f -perm -u+w > $depsftmp 2>/dev/null
|
||||
|
||||
exec 3<&0 # save stdin
|
||||
exec < $depsftmp
|
||||
while read f; do
|
||||
case "$(file -bi "$f")" in
|
||||
application/x-executable*|application/x-sharedlib*)
|
||||
for nlib in $($OBJDUMP -p "$f"|grep NEEDED|awk '{print $2}'); do
|
||||
if [ -z "$verify_deps" ]; then
|
||||
verify_deps="$nlib"
|
||||
continue
|
||||
fi
|
||||
for j in ${verify_deps}; do
|
||||
[ "$j" != "$nlib" ] && continue
|
||||
found_dup=1
|
||||
break
|
||||
done
|
||||
if [ -z "$found_dup" ]; then
|
||||
verify_deps="$verify_deps $nlib"
|
||||
fi
|
||||
unset found_dup
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
exec 0<&3 # restore stdin
|
||||
rm -f $depsftmp
|
||||
exec 3<&0 # save stdin
|
||||
exec < $depsftmp
|
||||
while read f; do
|
||||
case "$(file -bi "$f")" in
|
||||
application/x-executable*|application/x-sharedlib*)
|
||||
for nlib in $($OBJDUMP -p "$f"|grep NEEDED|awk '{print $2}'); do
|
||||
if [ -z "$verify_deps" ]; then
|
||||
verify_deps="$nlib"
|
||||
continue
|
||||
fi
|
||||
for j in ${verify_deps}; do
|
||||
[ "$j" != "$nlib" ] && continue
|
||||
found_dup=1
|
||||
break
|
||||
done
|
||||
if [ -z "$found_dup" ]; then
|
||||
verify_deps="$verify_deps $nlib"
|
||||
fi
|
||||
unset found_dup
|
||||
done
|
||||
;;
|
||||
esac
|
||||
done
|
||||
exec 0<&3 # restore stdin
|
||||
rm -f $depsftmp
|
||||
|
||||
#
|
||||
# Add required run time packages by using required shlibs resolved
|
||||
# above, the mapping is done thru the mapping_shlib_binpkg.txt file.
|
||||
#
|
||||
for f in ${verify_deps}; do
|
||||
unset _f j rdep _rdep rdepcnt soname _pkgname _rdepver found
|
||||
_f=$(echo "$f"|sed -E 's|\+|\\+|g')
|
||||
rdep="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|awk '{print $2}')"
|
||||
rdepcnt="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|awk '{print $2}'|wc -l)"
|
||||
if [ -z "$rdep" ]; then
|
||||
# Ignore libs by current pkg
|
||||
soname=$(find ${PKGDESTDIR} -name "$f")
|
||||
if [ -z "$soname" ]; then
|
||||
msg_red_nochroot " SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
|
||||
broken=1
|
||||
else
|
||||
echo " SONAME: $f <-> $pkgname (ignored)"
|
||||
fi
|
||||
continue
|
||||
elif [ "$rdepcnt" -gt 1 ]; then
|
||||
unset j found
|
||||
# Check if shlib is provided by multiple pkgs.
|
||||
for j in ${rdep}; do
|
||||
_pkgname=$($XBPS_UHELPER_CMD getpkgname "$j")
|
||||
# if there's a SONAME matching pkgname, use it.
|
||||
for x in ${pkgname} ${subpackages}; do
|
||||
if [ "${_pkgname}" = "${x}" ]; then
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -n "$found" ]; then
|
||||
_rdep=$j
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -z "${_rdep}" ]; then
|
||||
# otherwise pick up the first one.
|
||||
for j in ${rdep}; do
|
||||
[ -z "${_rdep}" ] && _rdep=$j
|
||||
done
|
||||
fi
|
||||
else
|
||||
_rdep=$rdep
|
||||
fi
|
||||
_pkgname=$($XBPS_UHELPER_CMD getpkgname "${_rdep}" 2>/dev/null)
|
||||
_rdepver=$($XBPS_UHELPER_CMD getpkgversion "${_rdep}" 2>/dev/null)
|
||||
if [ -z "${_pkgname}" -o -z "${_rdepver}" ]; then
|
||||
msg_red_nochroot " SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
|
||||
broken=1
|
||||
continue
|
||||
fi
|
||||
# Check if pkg is a subpkg of sourcepkg; if true, ignore version
|
||||
# in common/shlibs.
|
||||
_sdep="${_pkgname}>=${_rdepver}"
|
||||
for _subpkg in ${subpackages}; do
|
||||
if [ "${_subpkg}" = "${_pkgname}" ]; then
|
||||
_sdep="${_pkgname}-${version}_${revision}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
#
|
||||
# Add required run time packages by using required shlibs resolved
|
||||
# above, the mapping is done thru the mapping_shlib_binpkg.txt file.
|
||||
#
|
||||
for f in ${verify_deps}; do
|
||||
unset _f j rdep _rdep rdepcnt soname _pkgname _rdepver found
|
||||
_f=$(echo "$f"|sed -E 's|\+|\\+|g')
|
||||
rdep="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|awk '{print $2}')"
|
||||
rdepcnt="$(grep -E "^${_f}[[:blank:]]+.*$" $mapshlibs|awk '{print $2}'|wc -l)"
|
||||
if [ -z "$rdep" ]; then
|
||||
# Ignore libs by current pkg
|
||||
soname=$(find ${PKGDESTDIR} -name "$f")
|
||||
if [ -z "$soname" ]; then
|
||||
msg_red_nochroot " SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
|
||||
broken=1
|
||||
else
|
||||
echo " SONAME: $f <-> $pkgname (ignored)"
|
||||
fi
|
||||
continue
|
||||
elif [ "$rdepcnt" -gt 1 ]; then
|
||||
unset j found
|
||||
# Check if shlib is provided by multiple pkgs.
|
||||
for j in ${rdep}; do
|
||||
_pkgname=$($XBPS_UHELPER_CMD getpkgname "$j")
|
||||
# if there's a SONAME matching pkgname, use it.
|
||||
for x in ${pkgname} ${subpackages}; do
|
||||
if [ "${_pkgname}" = "${x}" ]; then
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -n "$found" ]; then
|
||||
_rdep=$j
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -z "${_rdep}" ]; then
|
||||
# otherwise pick up the first one.
|
||||
for j in ${rdep}; do
|
||||
[ -z "${_rdep}" ] && _rdep=$j
|
||||
done
|
||||
fi
|
||||
else
|
||||
_rdep=$rdep
|
||||
fi
|
||||
_pkgname=$($XBPS_UHELPER_CMD getpkgname "${_rdep}" 2>/dev/null)
|
||||
_rdepver=$($XBPS_UHELPER_CMD getpkgversion "${_rdep}" 2>/dev/null)
|
||||
if [ -z "${_pkgname}" -o -z "${_rdepver}" ]; then
|
||||
msg_red_nochroot " SONAME: $f <-> UNKNOWN PKG PLEASE FIX!\n"
|
||||
broken=1
|
||||
continue
|
||||
fi
|
||||
# Check if pkg is a subpkg of sourcepkg; if true, ignore version
|
||||
# in common/shlibs.
|
||||
_sdep="${_pkgname}>=${_rdepver}"
|
||||
for _subpkg in ${subpackages}; do
|
||||
if [ "${_subpkg}" = "${_pkgname}" ]; then
|
||||
_sdep="${_pkgname}-${version}_${revision}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${_pkgname}" != "${pkgname}" ]; then
|
||||
echo " SONAME: $f <-> ${_sdep}"
|
||||
sorequires+="${f} "
|
||||
else
|
||||
# Ignore libs by current pkg
|
||||
echo " SONAME: $f <-> ${_rdep} (ignored)"
|
||||
continue
|
||||
fi
|
||||
add_rundep "${_sdep}"
|
||||
done
|
||||
#
|
||||
# If pkg uses any unknown SONAME error out.
|
||||
#
|
||||
if [ -n "$broken" -a -z "$allow_unknown_shlibs" ]; then
|
||||
msg_error "$pkgver: cannot guess required shlibs, aborting!\n"
|
||||
fi
|
||||
if [ "${_pkgname}" != "${pkgname}" ]; then
|
||||
echo " SONAME: $f <-> ${_sdep}"
|
||||
sorequires+="${f} "
|
||||
else
|
||||
# Ignore libs by current pkg
|
||||
echo " SONAME: $f <-> ${_rdep} (ignored)"
|
||||
continue
|
||||
fi
|
||||
add_rundep "${_sdep}"
|
||||
done
|
||||
#
|
||||
# If pkg uses any unknown SONAME error out.
|
||||
#
|
||||
if [ -n "$broken" -a -z "$allow_unknown_shlibs" ]; then
|
||||
msg_error "$pkgver: cannot guess required shlibs, aborting!\n"
|
||||
fi
|
||||
|
||||
if [ -n "$run_depends" ]; then
|
||||
echo "$run_depends" > ${PKGDESTDIR}/rdeps
|
||||
fi
|
||||
if [ -s ${PKGDESTDIR}/rdeps ]; then
|
||||
sed 's,virtual?,,g' -i ${PKGDESTDIR}/rdeps
|
||||
fi
|
||||
for f in ${shlib_requires}; do
|
||||
sorequires+="${f} "
|
||||
done
|
||||
if [ -n "${sorequires}" ]; then
|
||||
echo "${sorequires}" > ${PKGDESTDIR}/shlib-requires
|
||||
fi
|
||||
store_pkgdestdir_rundeps
|
||||
|
||||
for f in ${shlib_requires}; do
|
||||
sorequires+="${f} "
|
||||
done
|
||||
if [ -n "${sorequires}" ]; then
|
||||
echo "${sorequires}" > ${PKGDESTDIR}/shlib-requires
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -17,15 +17,30 @@ setup_pkg_depends() {
|
|||
if [ -z "${_pkgdepname}" ]; then
|
||||
_pkgdepname="$($XBPS_UHELPER_CMD getpkgname ${_depname} 2>/dev/null)"
|
||||
fi
|
||||
if [ -z "${_pkgdepname}" ]; then
|
||||
_pkgdep="${_depname}>=0"
|
||||
else
|
||||
_pkgdep="${_depname}"
|
||||
if [ -s ${XBPS_DISTDIR}/etc/virtual ]; then
|
||||
_replacement=$(egrep "^${_pkgdepname:-${_depname}}[[:blank:]]" ${XBPS_DISTDIR}/etc/virtual|cut -d ' ' -f2)
|
||||
elif [ -s ${XBPS_DISTDIR}/etc/defaults.virtual ]; then
|
||||
_replacement=$(egrep "^${_pkgdepname:-${_depname}}[[:blank:]]" ${XBPS_DISTDIR}/etc/defaults.virtual|cut -d ' ' -f2)
|
||||
fi
|
||||
|
||||
if [ "${_rpkgname}" = "virtual" ]; then
|
||||
run_depends+=" virtual?${_pkgdep}"
|
||||
if [ -z "${_replacement}" ]; then
|
||||
msg_error "$pkgver: failed to resolve virtual dependency for '$j' (missing from etc/virtual)\n"
|
||||
fi
|
||||
_pkgdepname="$($XBPS_UHELPER_CMD getpkgdepname ${_replacement} 2>/dev/null)"
|
||||
if [ -z "${_pkgdepname}" ]; then
|
||||
_pkgdepname="$($XBPS_UHELPER_CMD getpkgname ${_replacement} 2>/dev/null)"
|
||||
fi
|
||||
if [ -z "${_pkgdepname}" ]; then
|
||||
_pkgdepname="${_replacement}>=0"
|
||||
fi
|
||||
run_depends+=" ${_depname}?${_pkgdepname}"
|
||||
#echo "Adding dependency virtual: ${_depname}?${_pkgdepname}"
|
||||
else
|
||||
if [ -z "${_pkgdepname}" ]; then
|
||||
_pkgdep="${_depname}>=0"
|
||||
else
|
||||
_pkgdep="${_depname}"
|
||||
fi
|
||||
run_depends+=" ${_pkgdep}"
|
||||
fi
|
||||
done
|
||||
|
@ -144,9 +159,9 @@ srcpkg_get_version() {
|
|||
local pkg="$1"
|
||||
# Run this in a sub-shell to avoid polluting our env.
|
||||
(
|
||||
unset XBPS_BINPKG_EXISTS
|
||||
setup_pkg $pkg || exit $?
|
||||
echo "${version}_${revision}"
|
||||
unset XBPS_BINPKG_EXISTS
|
||||
setup_pkg $pkg || exit $?
|
||||
echo "${version}_${revision}"
|
||||
) || msg_error "$pkgver: failed to transform dependency $pkg\n"
|
||||
}
|
||||
|
||||
|
@ -154,9 +169,9 @@ srcpkg_get_pkgver() {
|
|||
local pkg="$1"
|
||||
# Run this in a sub-shell to avoid polluting our env.
|
||||
(
|
||||
unset XBPS_BINPKG_EXISTS
|
||||
setup_pkg $pkg || exit $?
|
||||
echo "${sourcepkg}-${version}_${revision}"
|
||||
unset XBPS_BINPKG_EXISTS
|
||||
setup_pkg $pkg || exit $?
|
||||
echo "${sourcepkg}-${version}_${revision}"
|
||||
) || msg_error "$pkgver: failed to transform dependency $pkg\n"
|
||||
}
|
||||
|
||||
|
@ -165,7 +180,7 @@ srcpkg_get_pkgver() {
|
|||
#
|
||||
install_pkg_deps() {
|
||||
local pkg="$1" targetpkg="$2" target="$3" cross="$4" cross_prepare="$5"
|
||||
local rval _realpkg curpkgdepname pkgn iver
|
||||
local rval _realpkg _vpkg _curpkg curpkgdepname pkgn iver
|
||||
local i j found rundep repo
|
||||
|
||||
local -a host_binpkg_deps binpkg_deps host_missing_deps missing_deps missing_rdeps
|
||||
|
@ -259,10 +274,12 @@ install_pkg_deps() {
|
|||
#
|
||||
for i in ${run_depends}; do
|
||||
_realpkg="${i%\?*}"
|
||||
if [ "${_realpkg}" = "virtual" ]; then
|
||||
# ignore virtual dependencies
|
||||
echo " [runtime] ${i#*\?}: virtual dependency."
|
||||
continue
|
||||
_curpkg="${_realpkg}"
|
||||
_vpkg="${i#*\?}"
|
||||
if [ "${_realpkg}" != "${_vpkg}" ]; then
|
||||
_realpkg="${_vpkg}"
|
||||
else
|
||||
unset _curpkg
|
||||
fi
|
||||
pkgn=$($XBPS_UHELPER_CMD getpkgdepname "${_realpkg}")
|
||||
if [ -z "$pkgn" ]; then
|
||||
|
@ -282,15 +299,27 @@ install_pkg_deps() {
|
|||
set -- ${_props}
|
||||
$XBPS_UHELPER_CMD pkgmatch ${1} "${_realpkg}"
|
||||
if [ $? -eq 1 ]; then
|
||||
echo " [runtime] ${_realpkg}: found ($2)"
|
||||
if [ -n "${_curpkg}" ]; then
|
||||
echo " [runtime] ${_curpkg}:${_realpkg} (virtual dependency): found $1 ($2)"
|
||||
else
|
||||
echo " [runtime] ${_realpkg}: found $1 ($2)"
|
||||
fi
|
||||
shift 2
|
||||
continue
|
||||
else
|
||||
echo " [runtime] ${_realpkg}: not found."
|
||||
if [ -n "${_curpkg}" ]; then
|
||||
echo " [runtime] ${_curpkg}:${_realpkg} (virtual dependency): not found."
|
||||
else
|
||||
echo " [runtime] ${_realpkg}: not found."
|
||||
fi
|
||||
fi
|
||||
shift 2
|
||||
else
|
||||
echo " [runtime] ${_realpkg}: not found."
|
||||
if [ -n "${_curpkg}" ]; then
|
||||
echo " [runtime] ${_curpkg}:${_realpkg} (virtual dependency): not found."
|
||||
else
|
||||
echo " [runtime] ${_realpkg}: not found."
|
||||
fi
|
||||
fi
|
||||
missing_rdeps+=("${_realpkg}")
|
||||
done
|
||||
|
|
27
etc/defaults.virtual
Normal file
27
etc/defaults.virtual
Normal file
|
@ -0,0 +1,27 @@
|
|||
# --*-- shell --*--
|
||||
#
|
||||
# etc/defaults.virtual
|
||||
# default configuration of etc/virtual
|
||||
#
|
||||
# DO NOT EDIT THIS FILE DIRECTLY; IT MAY BE REPLACED DURING UPDATES,
|
||||
# EDIT etc/virtual INSTEAD.
|
||||
#
|
||||
# This file specifies a mapping between virtual packages and real packages
|
||||
# available in the source packages collection (srcpkgs).
|
||||
#
|
||||
# The format uses 2 arguments delimited by a blank: <vpkgname> <realpkgname>
|
||||
#
|
||||
# When building a package with "xbps-src", those dependencies declared like
|
||||
# "virtual?foo" will use the replacement package defined in `etc/virtual`.
|
||||
#
|
||||
# NOTE: this mapping is only there to be able to build a default package
|
||||
# to resolve the virtual package dependency later on with xbps-install(1).
|
||||
#
|
||||
# NOTE: Create your own etc/virtual file to override these defaults.
|
||||
|
||||
awk gawk
|
||||
java-environment openjdk
|
||||
java-runtime openjdk-jre
|
||||
ntp-daemon chrony
|
||||
xserver-abi-input xorg-server
|
||||
xserver-abi-video xorg-server
|
Loading…
Reference in a new issue