python,python3: Fix overridden usr/bin symlinks 8550/head
authorJeffery To <jeffery.to@gmail.com>
Sun, 31 Mar 2019 11:11:15 +0000 (19:11 +0800)
committerJeffery To <jeffery.to@gmail.com>
Wed, 3 Apr 2019 13:05:14 +0000 (21:05 +0800)
Currently, all files in usr/bin (presumably all Python scripts) are run
through sed to replace the shebang; sed will overwrite the file whether
or not a match is found. This causes symlinks to be overridden and made
into copies of their targets. python[3]-base and python[3]-dev are
affected by this.

This adds the --follow-symlinks flag to sed, in addition to using
$(SED), so that symlinks are not overridden.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
lang/python/python-package-install.sh
lang/python/python-package.mk
lang/python/python3-package.mk

index a1b21e49f47c24efaf3443e373e9ed0f011bdf95..6b4fe54b1fbcaca3fb3ca935cc789ff4ec8abba1 100644 (file)
@@ -58,6 +58,8 @@ python="$4"
 mode="$5"
 filespec="$6"
 
+SED="${SED:-sed -e}"
+
 find "$src_dir" -name "*\.exe" -exec rm -f {} \;
 
 process_filespec "$src_dir" "$dst_dir" "$filespec" || {
@@ -68,7 +70,7 @@ process_filespec "$src_dir" "$dst_dir" "$filespec" || {
 usr_bin_dir="$dst_dir/usr/bin"
 
 if [ -d "$usr_bin_dir" ] ; then
-       sed "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python${ver}," -i $usr_bin_dir/*
+       $SED "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python${ver}," -i --follow-symlinks $usr_bin_dir/*
 fi
 
 if [ "$mode" == "sources" ] ; then
index 9990d5340ae0347313c08a5e15280384026ae477..e1196bbb82010b1e96099de84c9e553351cfd83e 100644 (file)
@@ -69,6 +69,7 @@ define PyPackage
 
   define Package/$(1)/install
        $$(call PyPackage/$(1)/install,$$(1))
+       SED="$(SED)" \
        $(SHELL) $(python_mk_path)python-package-install.sh "2" \
                "$(PKG_INSTALL_DIR)" "$$(1)" \
                "$(HOST_PYTHON_BIN)" "$$(2)" \
index e52a15233ae466391dbdeef720a87cd6be776058..40feef420c52df2ded5c08f0ecb7300d9e4b2ded 100644 (file)
@@ -68,6 +68,7 @@ define Py3Package
 
   define Package/$(1)/install
        $$(call Py3Package/$(1)/install,$$(1))
+       SED="$(SED)" \
        $(SHELL) $(python3_mk_path)python-package-install.sh "3" \
                "$(PKG_INSTALL_DIR)" "$$(1)" \
                "$(HOST_PYTHON3_BIN)" "$$(2)" \