2014-04-09 16:40:27 +02:00
|
|
|
# vim: set ts=4 sw=4 et:
|
2014-03-22 12:31:42 +01:00
|
|
|
#
|
2014-09-05 11:10:07 +02:00
|
|
|
setup_pkg_depends() {
|
2019-07-10 19:48:54 +02:00
|
|
|
local pkg="$1" out="$2" j _rpkgname _depname _pkgname foo _deps
|
2014-09-05 11:10:07 +02:00
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ $pkg ]]; then
|
2014-09-05 11:10:07 +02:00
|
|
|
# subpkg
|
|
|
|
if declare -f ${pkg}_package >/dev/null; then
|
|
|
|
${pkg}_package
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
for j in ${depends}; do
|
|
|
|
_rpkgname="${j%\?*}"
|
|
|
|
_depname="${j#*\?}"
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${_rpkgname} == virtual ]]; then
|
|
|
|
_pkgname=$(xbps-uhelper getpkgname $_depname 2>/dev/null)
|
|
|
|
[ -z "$_pkgname" ] && _pkgname="$_depname"
|
|
|
|
if [ -s ${XBPS_DISTDIR}/etc/virtual ]; then
|
|
|
|
foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/virtual|cut -d ' ' -f2)
|
|
|
|
elif [ -s ${XBPS_DISTDIR}/etc/defaults.virtual ]; then
|
|
|
|
foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/defaults.virtual|cut -d ' ' -f2)
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
if [ -z "$foo" ]; then
|
|
|
|
msg_error "$pkgver: failed to resolve virtual dependency for '$j' (missing from etc/virtual)\n"
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
_deps+="$foo "
|
2014-09-05 11:10:07 +02:00
|
|
|
else
|
2019-07-10 19:48:54 +02:00
|
|
|
foo="$($XBPS_UHELPER_CMD getpkgdepname ${_depname} 2>/dev/null)"
|
|
|
|
if [ -z "$foo" ]; then
|
|
|
|
foo="$($XBPS_UHELPER_CMD getpkgname ${_depname} 2>/dev/null)"
|
|
|
|
[ -z "$foo" ] && foo="${_depname}"
|
2016-04-27 20:16:59 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
_deps+="$foo "
|
2014-09-05 11:10:07 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
run_depends+="${_depname} "
|
2014-09-05 11:10:07 +02:00
|
|
|
done
|
2019-07-10 19:48:54 +02:00
|
|
|
|
|
|
|
[[ $out && $_deps ]] && echo "$_deps"
|
|
|
|
return 0
|
2014-09-05 11:10:07 +02:00
|
|
|
}
|
|
|
|
|
2014-03-22 12:31:42 +01:00
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
# Install required package dependencies, like:
|
|
|
|
#
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
# xbps-install -Ay <pkgs>
|
2019-07-10 19:48:54 +02:00
|
|
|
#
|
|
|
|
# -A automatic mode
|
|
|
|
# -y yes
|
2014-03-22 12:31:42 +01:00
|
|
|
#
|
|
|
|
# Returns 0 if package already installed or installed successfully.
|
|
|
|
# Any other error number otherwise.
|
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
# SUCCESS (0): package installed successfully.
|
|
|
|
# ENOENT (2): package missing in repositories.
|
|
|
|
# ENXIO (6): package depends on invalid dependencies.
|
|
|
|
# EAGAIN (11): package conflicts.
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
# EBUSY (16): package 'xbps' needs to be updated.
|
2019-07-10 19:48:54 +02:00
|
|
|
# EEXIST (17): file conflicts in transaction (XBPS_FLAG_IGNORE_FILE_CONFLICTS unset)
|
|
|
|
# ENODEV (19): package depends on missing dependencies.
|
|
|
|
# ENOTSUP (95): no repositories registered.
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
# -1 (255): unexpected error.
|
|
|
|
|
2014-03-22 12:31:42 +01:00
|
|
|
install_pkg_from_repos() {
|
2019-07-10 19:48:54 +02:00
|
|
|
local cross="$1" rval tmplogf cmd
|
|
|
|
shift
|
|
|
|
|
|
|
|
[ $# -eq 0 ] && return 0
|
2014-04-09 16:40:27 +02:00
|
|
|
|
2015-03-28 04:49:18 +01:00
|
|
|
mkdir -p $XBPS_STATEDIR
|
2015-03-03 10:45:34 +01:00
|
|
|
tmplogf=${XBPS_STATEDIR}/xbps_${XBPS_TARGET_MACHINE}_bdep_${pkg}.log
|
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
cmd=$XBPS_INSTALL_CMD
|
|
|
|
[[ $cross ]] && cmd=$XBPS_INSTALL_XCMD
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
$cmd -Ay "$@" >$tmplogf 2>&1
|
2014-04-09 16:40:27 +02:00
|
|
|
rval=$?
|
2019-07-10 19:48:54 +02:00
|
|
|
|
2019-06-21 18:46:14 +02:00
|
|
|
case "$rval" in
|
2019-06-26 12:52:59 +02:00
|
|
|
0) # success, check if there are errors.
|
2019-06-21 18:46:14 +02:00
|
|
|
errortmpf=$(mktemp) || exit 1
|
|
|
|
grep ^ERROR $tmplogf > $errortmpf
|
|
|
|
[ -s $errortmpf ] && cat $errortmpf
|
|
|
|
rm -f $errortmpf
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
[ -z "$XBPS_KEEP_ALL" ] && remove_pkg_autodeps
|
|
|
|
msg_red "$pkgver: failed to install '$1' dependency! (error $rval)\n"
|
|
|
|
cat $tmplogf
|
|
|
|
rm -f $tmplogf
|
|
|
|
msg_error "Please see above for the real error, exiting...\n"
|
|
|
|
;;
|
|
|
|
esac
|
2019-06-26 12:52:59 +02:00
|
|
|
rm -f $tmplogf
|
2014-04-09 16:40:27 +02:00
|
|
|
return $rval
|
2014-03-22 12:31:42 +01:00
|
|
|
}
|
|
|
|
|
2014-04-10 11:58:06 +02:00
|
|
|
#
|
|
|
|
# Returns 0 if pkgpattern in $1 is installed and greater than current
|
|
|
|
# installed package, otherwise 1.
|
|
|
|
#
|
|
|
|
check_installed_pkg() {
|
|
|
|
local pkg="$1" cross="$2" uhelper= pkgn= iver=
|
|
|
|
|
|
|
|
[ -z "$pkg" ] && return 2
|
|
|
|
|
|
|
|
pkgn="$($XBPS_UHELPER_CMD getpkgname ${pkg})"
|
|
|
|
[ -z "$pkgn" ] && return 2
|
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
uhelper=$XBPS_UHELPER_CMD
|
|
|
|
[[ $cross ]] && uhelper=$XBPS_UHELPER_XCMD
|
2014-04-10 11:58:06 +02:00
|
|
|
iver="$($uhelper version $pkgn)"
|
|
|
|
if [ $? -eq 0 -a -n "$iver" ]; then
|
|
|
|
$XBPS_CMPVER_CMD "${pkgn}-${iver}" "${pkg}"
|
|
|
|
[ $? -eq 0 -o $? -eq 1 ] && return 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2014-03-22 12:31:42 +01:00
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
# Build all dependencies required to build and run.
|
2014-03-22 12:31:42 +01:00
|
|
|
#
|
|
|
|
install_pkg_deps() {
|
2015-03-23 12:42:35 +01:00
|
|
|
local pkg="$1" targetpkg="$2" target="$3" cross="$4" cross_prepare="$5"
|
2019-07-10 19:48:54 +02:00
|
|
|
local _vpkg curpkgdepname
|
|
|
|
local i j found style
|
2019-09-29 19:15:44 +02:00
|
|
|
local templates=""
|
2014-04-09 16:40:27 +02:00
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
local -a host_binpkg_deps binpkg_deps
|
|
|
|
local -a host_missing_deps missing_deps missing_rdeps
|
2014-04-09 16:40:27 +02:00
|
|
|
|
|
|
|
[ -z "$pkgname" ] && return 2
|
2019-07-10 19:48:54 +02:00
|
|
|
[ -z "$XBPS_CHECK_PKGS" ] && unset checkdepends
|
|
|
|
[[ $build_style ]] && style=" [$build_style]"
|
2018-01-16 05:31:32 +01:00
|
|
|
|
2019-01-25 23:59:36 +01:00
|
|
|
for s in $build_helper; do
|
|
|
|
style+=" [$s]"
|
|
|
|
done
|
|
|
|
|
2015-03-14 07:50:05 +01:00
|
|
|
if [ "$pkg" != "$targetpkg" ]; then
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
msg_normal "$pkgver: building${style} (dependency of $targetpkg) for $XBPS_TARGET_MACHINE...\n"
|
2015-03-14 07:50:05 +01:00
|
|
|
else
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
msg_normal "$pkgver: building${style} for $XBPS_TARGET_MACHINE...\n"
|
2015-03-14 07:50:05 +01:00
|
|
|
fi
|
|
|
|
|
2014-04-09 16:40:27 +02:00
|
|
|
#
|
|
|
|
# Host build dependencies.
|
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${hostmakedepends} ]]; then
|
2019-09-29 19:15:44 +02:00
|
|
|
templates=""
|
2019-07-10 19:48:54 +02:00
|
|
|
# check validity
|
|
|
|
for f in ${hostmakedepends}; do
|
2019-09-29 19:15:44 +02:00
|
|
|
if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
|
|
|
|
templates+=" $f"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
local _repourl=$($XBPS_QUERY_CMD -R -prepository "$f" 2>/dev/null)
|
|
|
|
if [ "$_repourl" ]; then
|
|
|
|
echo " [host] ${f}: found (${_repourl})"
|
|
|
|
host_binpkg_deps+=("$f")
|
|
|
|
continue
|
2015-03-28 03:22:07 +01:00
|
|
|
fi
|
2019-09-29 19:15:44 +02:00
|
|
|
msg_error "$pkgver: host dependency '$f' does not exist!\n"
|
2019-07-10 19:48:54 +02:00
|
|
|
done
|
|
|
|
while read -r _depname _deprepover _depver _subpkg _repourl; do
|
|
|
|
_vpkg=${_subpkg}-${_depver}
|
|
|
|
# binary package found in a repo
|
|
|
|
if [[ ${_depver} == ${_deprepover} ]]; then
|
|
|
|
echo " [host] ${_vpkg}: found (${_repourl})"
|
|
|
|
host_binpkg_deps+=("${_vpkg}")
|
2019-07-05 12:08:45 +02:00
|
|
|
continue
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
|
|
|
# binary package not found
|
|
|
|
if [[ $_depname != $_subpkg ]]; then
|
|
|
|
# subpkg, check if it's a subpkg of itself
|
|
|
|
found=0
|
|
|
|
for f in ${subpackages}; do
|
|
|
|
if [[ ${_subpkg} == ${f} ]]; then
|
|
|
|
found=1
|
|
|
|
break
|
2019-04-17 16:29:53 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
done
|
2019-10-15 18:58:01 +02:00
|
|
|
if [[ $found -eq 1 ]] && [[ -z "$cross" ]]; then
|
2019-07-10 19:48:54 +02:00
|
|
|
echo " [host] ${_vpkg}: not found (subpkg, ignored)"
|
|
|
|
else
|
|
|
|
echo " [host] ${_vpkg}: not found"
|
|
|
|
host_missing_deps+=("$_vpkg")
|
2019-04-15 12:38:36 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
else
|
|
|
|
echo " [host] ${_vpkg}: not found"
|
|
|
|
host_missing_deps+=("$_vpkg")
|
2014-04-09 16:40:27 +02:00
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
done < <($XBPS_CHECKVERS_CMD -D $XBPS_DISTDIR -sm $templates)
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
2014-04-09 16:40:27 +02:00
|
|
|
|
2017-02-23 22:03:31 +01:00
|
|
|
#
|
|
|
|
# Host check dependencies.
|
|
|
|
#
|
2020-01-01 19:34:35 +01:00
|
|
|
if [[ ${checkdepends} ]] && [[ $XBPS_CHECK_PKGS ]] && [ -z "$XBPS_CROSS_BUILD" ]; then
|
2019-09-29 19:15:44 +02:00
|
|
|
templates=""
|
2019-07-10 19:48:54 +02:00
|
|
|
# check validity
|
|
|
|
for f in ${checkdepends}; do
|
2019-09-29 19:15:44 +02:00
|
|
|
if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
|
|
|
|
templates+=" $f"
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
local _repourl=$($XBPS_QUERY_CMD -R -prepository "$f" 2>/dev/null)
|
|
|
|
if [ "$_repourl" ]; then
|
|
|
|
echo " [host] ${f}: found (${_repourl})"
|
|
|
|
host_binpkg_deps+=("$f")
|
|
|
|
continue
|
2017-02-23 22:03:31 +01:00
|
|
|
fi
|
2019-09-29 19:15:44 +02:00
|
|
|
msg_error "$pkgver: check dependency '$f' does not exist!\n"
|
2019-07-10 19:48:54 +02:00
|
|
|
done
|
|
|
|
while read -r _depname _deprepover _depver _subpkg _repourl; do
|
|
|
|
_vpkg=${_subpkg}-${_depver}
|
|
|
|
# binary package found in a repo
|
|
|
|
if [[ ${_depver} == ${_deprepover} ]]; then
|
|
|
|
echo " [check] ${_vpkg}: found (${_repourl})"
|
|
|
|
host_binpkg_deps+=("${_vpkg}")
|
2019-07-05 12:08:45 +02:00
|
|
|
continue
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
|
|
|
# binary package not found
|
|
|
|
if [[ $_depname != $_subpkg ]]; then
|
|
|
|
# subpkg, check if it's a subpkg of itself
|
|
|
|
found=0
|
|
|
|
for f in ${subpackages}; do
|
|
|
|
if [[ ${_subpkg} == ${f} ]]; then
|
|
|
|
found=1
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [[ $found -eq 1 ]]; then
|
|
|
|
echo " [check] ${_vpkg}: not found (subpkg, ignored)"
|
|
|
|
else
|
|
|
|
echo " [check] ${_vpkg}: not found"
|
|
|
|
host_missing_deps+=("$_vpkg")
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
else
|
|
|
|
echo " [check] ${_vpkg}: not found"
|
|
|
|
host_missing_deps+=("$_vpkg")
|
2017-02-23 22:03:31 +01:00
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
done < <($XBPS_CHECKVERS_CMD -D $XBPS_DISTDIR -sm ${templates})
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
2017-02-23 22:03:31 +01:00
|
|
|
|
2014-04-09 16:40:27 +02:00
|
|
|
#
|
|
|
|
# Target build dependencies.
|
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${makedepends} ]]; then
|
2019-09-29 19:15:44 +02:00
|
|
|
templates=""
|
2019-07-10 19:48:54 +02:00
|
|
|
# check validity
|
|
|
|
for f in ${makedepends}; do
|
2019-09-29 19:15:44 +02:00
|
|
|
if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
|
|
|
|
templates+=" $f"
|
|
|
|
continue
|
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
local _repourl=$($XBPS_QUERY_XCMD -R -prepository "$f" 2>/dev/null)
|
2019-09-29 19:15:44 +02:00
|
|
|
if [ "$_repourl" ]; then
|
|
|
|
echo " [target] ${f}: found (${_repourl})"
|
|
|
|
binpkg_deps+=("$f")
|
|
|
|
continue
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
2019-09-29 19:15:44 +02:00
|
|
|
msg_error "$pkgver: target dependency '$f' does not exist!\n"
|
2019-07-05 12:08:45 +02:00
|
|
|
done
|
2019-07-10 19:48:54 +02:00
|
|
|
while read -r _depname _deprepover _depver _subpkg _repourl; do
|
|
|
|
_vpkg=${_subpkg}-${_depver}
|
|
|
|
# binary package found in a repo
|
|
|
|
if [[ ${_depver} == ${_deprepover} ]]; then
|
|
|
|
echo " [target] ${_vpkg}: found (${_repourl})"
|
|
|
|
binpkg_deps+=("${_vpkg}")
|
2015-03-28 03:22:07 +01:00
|
|
|
continue
|
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
# binary package not found
|
|
|
|
if [[ $_depname != $_subpkg ]]; then
|
|
|
|
# subpkg, check if it's a subpkg of itself
|
|
|
|
found=0
|
|
|
|
for f in ${subpackages}; do
|
|
|
|
if [[ ${_subpkg} == ${f} ]]; then
|
|
|
|
found=1
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [[ $found -eq 1 ]]; then
|
2019-10-15 19:51:39 +02:00
|
|
|
msg_error "[target] ${_vpkg}: target dependency '${_subpkg}' is a subpackage of $pkgname\n"
|
2019-07-10 19:48:54 +02:00
|
|
|
else
|
|
|
|
echo " [target] ${_vpkg}: not found"
|
|
|
|
missing_deps+=("$_vpkg")
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
2019-07-10 19:48:54 +02:00
|
|
|
else
|
|
|
|
echo " [target] ${_vpkg}: not found"
|
|
|
|
missing_deps+=("$_vpkg")
|
2015-03-27 10:50:40 +01:00
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
done < <($XBPS_CHECKVERS_XCMD -D $XBPS_DISTDIR -sm $templates)
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
2015-03-27 10:50:40 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# Target run time dependencies
|
|
|
|
#
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${depends} ]]; then
|
2019-09-29 19:15:44 +02:00
|
|
|
templates=""
|
|
|
|
local _cleandeps=$(setup_pkg_depends "" 1) || exit 1
|
|
|
|
for f in ${_cleandeps}; do
|
|
|
|
if [ -f $XBPS_SRCPKGDIR/$f/template ]; then
|
|
|
|
templates+=" $f"
|
|
|
|
continue
|
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
local _repourl=$($XBPS_QUERY_XCMD -R -prepository "$f" 2>/dev/null)
|
2019-09-29 19:15:44 +02:00
|
|
|
if [ "$_repourl" ]; then
|
|
|
|
echo " [target] ${f}: found (${_repourl})"
|
|
|
|
continue
|
2019-07-03 19:36:22 +02:00
|
|
|
fi
|
2019-09-29 19:15:44 +02:00
|
|
|
msg_error "$pkgver: target dependency '$f' does not exist!\n"
|
2019-07-05 12:08:45 +02:00
|
|
|
done
|
2019-07-10 19:48:54 +02:00
|
|
|
while read -r _depname _deprepover _depver _subpkg _repourl; do
|
|
|
|
_vpkg=${_subpkg}-${_depver}
|
|
|
|
# binary package found in a repo
|
|
|
|
if [[ ${_depver} == ${_deprepover} ]]; then
|
|
|
|
echo " [runtime] ${_vpkg}: found (${_repourl})"
|
2019-07-05 12:08:45 +02:00
|
|
|
continue
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
|
|
|
# binary package not found
|
|
|
|
if [[ $_depname != $_subpkg ]]; then
|
|
|
|
# subpkg, check if it's a subpkg of itself
|
|
|
|
found=0
|
|
|
|
for f in ${subpackages}; do
|
|
|
|
if [[ ${_subpkg} == ${f} ]]; then
|
|
|
|
found=1
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if [[ $found -eq 1 ]]; then
|
|
|
|
echo " [runtime] ${_vpkg}: not found (subpkg, ignored)"
|
2019-07-05 12:08:45 +02:00
|
|
|
else
|
2019-07-10 19:48:54 +02:00
|
|
|
echo " [runtime] ${_vpkg}: not found"
|
|
|
|
missing_rdeps+=("$_vpkg")
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
|
|
|
else
|
2019-07-10 19:48:54 +02:00
|
|
|
echo " [runtime] ${_vpkg}: not found"
|
|
|
|
missing_rdeps+=("$_vpkg")
|
2019-07-05 12:08:45 +02:00
|
|
|
fi
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
done < <($XBPS_CHECKVERS_XCMD -D $XBPS_DISTDIR -sm $templates)
|
2019-07-10 19:48:54 +02:00
|
|
|
fi
|
2014-04-09 16:40:27 +02:00
|
|
|
|
2017-11-20 15:17:34 +01:00
|
|
|
if [ -n "$XBPS_BUILD_ONLY_ONE_PKG" ]; then
|
2017-09-04 04:08:25 +02:00
|
|
|
for i in ${host_missing_deps[@]}; do
|
|
|
|
msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
|
|
|
|
done
|
|
|
|
for i in ${missing_rdeps[@]}; do
|
|
|
|
msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
|
|
|
|
done
|
|
|
|
for i in ${missing_deps[@]}; do
|
|
|
|
msg_error "dep ${i} not found: -1 passed: instructed not to build\n"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
2017-02-23 22:03:31 +01:00
|
|
|
# Missing host dependencies, build from srcpkgs.
|
2014-04-09 16:40:27 +02:00
|
|
|
for i in ${host_missing_deps[@]}; do
|
2015-03-14 07:50:05 +01:00
|
|
|
# packages not found in repos, install from source.
|
|
|
|
(
|
2015-03-27 10:50:40 +01:00
|
|
|
curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
|
2014-04-09 16:40:27 +02:00
|
|
|
setup_pkg $curpkgdepname
|
2015-05-23 08:54:14 +02:00
|
|
|
exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 \
|
xbps-src: base-chroot-v2 (reduce artifacts/deps)
This patchset contains multiple changes to xbps-src and
its required package "base-chroot" for building packages
via chroot.
- moved xbps.d(5) conf files to `etc/xbps.d`.
- renamed xbps.d(5) repository files to `etc/xbps.d/repos-{local,remote}*`.
- do not set `--repository` to any xbps command that supports it,
xbps-src now simply populates `rootdir/etc/xbps.d` with correct
settings (taking care of CHROOT_READY/IN_CHROOT).
- Unless `-C` is set (to preserve builddir/destdir/autodeps), when
entering to the chroot (if CHROOT_READY is set), xbps-src will
clean up the masterdir and then perform a system update to always
use a constant set of packages for that exact date.
- Improved some normal/error msgs.
- Includes support for `xbps>=0.58`.
- common/hooks: switch to bsdtar.
- base-chroot:
- base-chroot-musl is gone, now unified for glibc/musl.
- deps removed: gettext, mpfr, readline, texinfo, which, xz.
- deps changed: tar -> bsdtar.
Effectively this reduces dependencies in `base-chroot`, makes
it unified for musl and glibc, switches xbps-src to use `bsdtar`
rather than GNU `tar` and `xz`, gets rid of useless host dependencies
like GNU gettext, texinfo, etc.
I've been testing these changes for 1 month or so already,
I was able to build from scratch `base-system` for both native
and multiple targets, i.e `./xbps-src -a target -Nt pkg base-system`
2020-01-01 11:15:35 +01:00
|
|
|
$XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross_prepare || exit $?
|
2020-01-05 10:48:13 +01:00
|
|
|
) || exit $?
|
2015-03-14 07:50:05 +01:00
|
|
|
host_binpkg_deps+=("$i")
|
2014-04-09 16:40:27 +02:00
|
|
|
done
|
|
|
|
|
2017-02-23 22:03:31 +01:00
|
|
|
# Missing target dependencies, build from srcpkgs.
|
2014-04-09 16:40:27 +02:00
|
|
|
for i in ${missing_deps[@]}; do
|
|
|
|
# packages not found in repos, install from source.
|
2015-03-14 07:50:05 +01:00
|
|
|
(
|
2019-04-15 12:38:36 +02:00
|
|
|
|
2015-03-27 10:50:40 +01:00
|
|
|
curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
|
2014-04-09 16:40:27 +02:00
|
|
|
setup_pkg $curpkgdepname $cross
|
2015-05-02 03:40:52 +02:00
|
|
|
exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 \
|
|
|
|
$XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross $cross_prepare || exit $?
|
2020-01-05 10:48:13 +01:00
|
|
|
) || exit $?
|
2015-03-14 07:50:05 +01:00
|
|
|
binpkg_deps+=("$i")
|
2014-04-09 16:40:27 +02:00
|
|
|
done
|
|
|
|
|
2015-03-27 10:50:40 +01:00
|
|
|
# Target runtime missing dependencies, build from srcpkgs.
|
|
|
|
for i in ${missing_rdeps[@]}; do
|
|
|
|
# packages not found in repos, install from source.
|
|
|
|
(
|
|
|
|
curpkgdepname=$($XBPS_UHELPER_CMD getpkgdepname "$i" 2>/dev/null)
|
|
|
|
if [ -z "$curpkgdepname" ]; then
|
|
|
|
curpkgdepname=$($XBPS_UHELPER_CMD getpkgname "$i" 2>/dev/null)
|
|
|
|
if [ -z "$curpkgdepname" ]; then
|
|
|
|
curpkgdepname="$i"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
setup_pkg $curpkgdepname $cross
|
2015-05-02 03:40:52 +02:00
|
|
|
exec env XBPS_DEPENDENCY=1 XBPS_BINPKG_EXISTS=1 \
|
|
|
|
$XBPS_LIBEXECDIR/build.sh $sourcepkg $pkg $target $cross $cross_prepare || exit $?
|
2020-01-05 10:48:13 +01:00
|
|
|
) || exit $?
|
2015-03-27 10:50:40 +01:00
|
|
|
done
|
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${host_binpkg_deps} ]]; then
|
|
|
|
if [ -z "$XBPS_QUIET" ]; then
|
|
|
|
# normal messages in bold
|
|
|
|
[[ $NOCOLORS ]] || printf "\033[1m"
|
|
|
|
echo "=> $pkgver: installing host dependencies: ${host_binpkg_deps[@]} ..."
|
|
|
|
[[ $NOCOLORS ]] || printf "\033[m"
|
|
|
|
fi
|
|
|
|
install_pkg_from_repos "" "${host_binpkg_deps[@]}"
|
2014-04-09 16:40:27 +02:00
|
|
|
fi
|
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
if [[ ${binpkg_deps} ]]; then
|
|
|
|
if [ -z "$XBPS_QUIET" ]; then
|
|
|
|
# normal messages in bold
|
|
|
|
[[ $NOCOLORS ]] || printf "\033[1m"
|
|
|
|
echo "=> $pkgver: installing target dependencies: ${binpkg_deps[@]} ..."
|
|
|
|
[[ $NOCOLORS ]] || printf "\033[m"
|
|
|
|
fi
|
|
|
|
install_pkg_from_repos "$cross" "${binpkg_deps[@]}"
|
|
|
|
fi
|
2019-07-05 12:08:45 +02:00
|
|
|
|
2019-07-10 19:48:54 +02:00
|
|
|
return 0
|
2014-03-22 12:31:42 +01:00
|
|
|
}
|