rpm-build/scripts/symlinks.req.in
Arseny Maslennikov 76fa8b1172 Rename find-package to solve misconflict with rpm
It is not that easy to ship find-package as part of rpm-build.
We have to drop find-package from the filelist of rpm as well. For this
change to enter Sisyphus, both rpm-build and rpm have to be changed and
rebuilt in their own base build chroots.

If rpm-build is built to include find-package first, rpm is
uninstallable in the base chroot due to a misconflict, so it cannot be
rebuilt.
If rpm is built to exclude find-package first, it disappears from the
base chroot altogether, making rpm-build break, so no
package can be built as well.
2024-03-04 20:36:26 +03:00

30 lines
849 B
Bash
Executable File

#!/bin/sh -efu
. @RPMCONFIGDIR@/rpmb-functions
. @RPMCONFIGDIR@/rpmb-find-package
SymlinkReq()
{
local f="$1" to; shift
[ -L "$f" ] || return 0
to=$(readlink -v "$f")
[ -n "$to" ] || Fatal "$f: cannot happen"
if [ -z "${to##/*}" ]; then
# Link target is absolute path.
# Just let FindPackage do the rest of the work.
FindPackage "$f" "$to"
else
# Link target is relative. Do one single step of symlink resolution,
# that is, catenate symlink parent directory and its target.
# E.g. $RPM_BUILD_ROOT/usr/share/foo/rt.jar -> ../java/rt.jar
# goes $RPM_BUILD_ROOT/usr/share/foo/../java/rt.jar
to=$(dirname "$f")/$to
# As we strip $RPM_BUILD_ROOT, we get possibly non-canonical
# required path, which is yet okay for FindPackage.
to=${to#${RPM_BUILD_ROOT-}}
FindPackage "$f" "$to"
fi
}
ArgvFileAction SymlinkReq "$@"