diff options
Diffstat (limited to 'recipes-devtools')
-rw-r--r-- | recipes-devtools/opkg/files/0004-opkg-symlink.patch | 24 | ||||
-rw-r--r-- | recipes-devtools/opkg/opkg_%.bbappend | 3 |
2 files changed, 26 insertions, 1 deletions
diff --git a/recipes-devtools/opkg/files/0004-opkg-symlink.patch b/recipes-devtools/opkg/files/0004-opkg-symlink.patch new file mode 100644 index 0000000..e105a8f --- /dev/null +++ b/recipes-devtools/opkg/files/0004-opkg-symlink.patch @@ -0,0 +1,24 @@ +opkg refused to install when a symlink was in a path. +Have it follow symlinks when installing. +=================================================================== +diff -Naru orig/libopkg/opkg_install.c new/libopkg/opkg_install.c +--- orig/libopkg/opkg_install.c 2020-09-08 14:08:55.550694837 -0500 ++++ new/libopkg/opkg_install.c 2020-09-08 14:18:00.286678711 -0500 +@@ -443,6 +443,17 @@ + pkg_t *obs; + int existing_is_dir = file_is_dir(filename); + ++ /* Existing patch might be a symlink, and still be OK */ ++ if ((!existing_is_dir) && S_ISDIR(file_info->mode)) { ++ int rslt; ++ struct stat sbuf; ++ ++ /* Use stat to follow a symlink */ ++ rslt = stat(filename,&sbuf); ++ if((!rslt) && S_ISDIR(sbuf.st_mode)) ++ existing_is_dir = 1; /* file_is_dir was wrong */ ++ } ++ + /* OK if both the existing file and new file are directories. */ + if (existing_is_dir && S_ISDIR(file_info->mode)) { + continue; diff --git a/recipes-devtools/opkg/opkg_%.bbappend b/recipes-devtools/opkg/opkg_%.bbappend index 7b45903..7db3ade 100644 --- a/recipes-devtools/opkg/opkg_%.bbappend +++ b/recipes-devtools/opkg/opkg_%.bbappend @@ -1,6 +1,7 @@ -PR .= ".mlinux1" +PR .= ".mlinux2" SRC_URI += " file://0003-opkg_conf-create-opkg.lock-in-run-lock-instead-of-run.patch \ + file://0004-opkg-symlink.patch \ " FILESEXTRAPATHS_prepend := "${THISDIR}/files:" |