From 980113d462a2697f105ad13cd5c8700276c4c5db Mon Sep 17 00:00:00 2001 From: John Klug Date: Tue, 8 Sep 2020 14:32:32 -0500 Subject: Fix opkg to follow symlinks, otherwise /etc/modprobe.d is broken, and maybe more --- .../opkg/files/0004-opkg-symlink.patch | 24 ++++++++++++++++++++++ recipes-devtools/opkg/opkg_%.bbappend | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 recipes-devtools/opkg/files/0004-opkg-symlink.patch (limited to 'recipes-devtools') 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:" -- cgit v1.2.3