Skip to content
Snippets Groups Projects
Commit 075fa4cd authored by Felix Fietkau's avatar Felix Fietkau
Browse files

Mostly revert "build: add support for fixing up library soname"


This reverts commit b12288fa.
The patchelf approach is too fragile, and the only users of this have been
converted to make patching unnecessary
Leave the abi_version_str variable in place in rules.mk

Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 26a899e3
No related branches found
No related tags found
No related merge requests found
......@@ -152,7 +152,6 @@ ifeq ($(DUMP),)
mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1)
$(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1))
$(call Package/$(1)/install_lib,$(PKG_BUILD_DIR)/.pkgdir/$(1))
$(if $(PKG_ABI_VERSION),$(SET_ABI_VERSION) "$(PKG_ABI_VERSION)" "$(PKG_BUILD_DIR)/.pkgdir/$(1)" "$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)")
touch $$@
$(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
......@@ -197,15 +196,11 @@ $(_endef)
$$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
$$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG)
$$(IPKG_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
ifdef Build/InstallDev
$$(IPKG_$(1)): $(STAMP_INSTALLED)
endif
$(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk
@rm -rf $$(IDIR_$(1)); \
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR)
$(call Package/$(1)/install,$$(IDIR_$(1)))
$(if $(PKG_ABI_VERSION),$(SET_ABI_VERSION) "$(PKG_ABI_VERSION)" "$$(IDIR_$(1))" "$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)")
$(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
$(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay)
-find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| $(XARGS) rm -rf
......
......@@ -178,7 +178,6 @@ Build/Exports=$(Build/Exports/Default)
define Build/CoreTargets
STAMP_PREPARED:=$$(STAMP_PREPARED)
STAMP_CONFIGURED:=$$(STAMP_CONFIGURED)
PKG_ABI_VERSION:=$$(PKG_ABI_VERSION)
$(if $(QUILT),$(Build/Quilt))
$(call Build/Autoclean)
......@@ -237,7 +236,6 @@ define Build/CoreTargets
"$(STAGING_DIR)/packages/$(STAGING_FILES_LIST)" \
"$(STAGING_DIR)"; \
fi
$(if $(PKG_ABI_VERSION),$(SET_ABI_VERSION) "$(PKG_ABI_VERSION)" $(TMP_DIR)/stage-$(PKG_DIR_NAME))
if [ -d $(TMP_DIR)/stage-$(PKG_DIR_NAME) ]; then \
(cd $(TMP_DIR)/stage-$(PKG_DIR_NAME); find ./ > $(TMP_DIR)/stage-$(PKG_DIR_NAME).files); \
$(call locked, \
......
......@@ -339,10 +339,6 @@ else
$(SCRIPT_DIR)/rstrip.sh
endif
SET_ABI_VERSION= \
PATCHELF="$(STAGING_DIR_HOST)/bin/patchelf" \
$(SCRIPT_DIR)/set-abi-version.sh
ifeq ($(CONFIG_IPV6),y)
DISABLE_IPV6:=
else
......
#!/usr/bin/env bash
#
# Copyright (C) 2020 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
SELF=${0##*/}
[ -n "$PATCHELF" ] || {
echo "$SELF: patchelf command not defined (PATCHELF variable not set)"
exit 1
}
ABI_VER="$1"
PATCH_DIR="$2"
REF_LIST="$3"
[ -n "$ABI_VER" -a -n "$PATCH_DIR" ] || {
echo "$SELF: no ABI version or files/directories specified"
echo "usage: $SELF <VERSION> [<PATH>...]"
exit 1
}
cmd() {
echo "$@" >&2
"$@" || exit 1
}
gen_lib_list() {
while read F; do
F="${F##*/}"
case "$F" in
lib*.so*);;
*) continue;;
esac
echo -n "$F:"
done < "$REF_LIST"
}
find "$PATCH_DIR" -type f -a -name 'lib*.so*' | \
(
while read F; do
NEW_F="${F%%.so*}.so.$ABI_VER"
NEW_NAME="${NEW_F##*/}"
[ "$NEW_F" != "$F" ] || continue
cmd mv "$F" "$NEW_F"
[ "$REF_LIST" ] || cmd ln -s "$NEW_NAME" "$F"
cmd $PATCHELF --set-soname "$NEW_NAME" "$NEW_F"
done
)
[ -n "$REF_LIST" ] || exit 0
LIBS="$(gen_lib_list)"
LIBS="${LIBS%%:}"
find "$PATCH_DIR" -type f -a -exec file {} \; | \
sed -n -e 's/^\(.*\):.*ELF.*\(executable\|relocatable\|shared object\).*,.*/\1:\2/p' | \
(
IFS=":"
while read F S; do
$PATCHELF --print-needed "$F" | while read L; do
BASE_L="${L%%.so*}"
for lib in $LIBS; do
base_lib="${lib%%.so*}"
[ "$BASE_L" = "$base_lib" ] || continue
[ "$l" = "$lib" ] && continue
cmd $PATCHELF --replace-needed "$L" "$lib" "$F"
done
done
done
true
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment