summaryrefslogtreecommitdiffstats
path: root/meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch')
-rw-r--r--meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch b/meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch
new file mode 100644
index 0000000000..7f495f9f4c
--- /dev/null
+++ b/meta/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch
@@ -0,0 +1,34 @@
1--- ipkg-utils/ipkg-link.orig 2006-04-05 00:08:28.518992136 +0200
2+++ ipkg-utils/ipkg-link 2006-04-05 00:08:40.399186072 +0200
3@@ -58,6 +58,31 @@
4 `ln -s "$PREFIX$line" "$line"`
5 fi
6 fi
7+
8+ # The next function checks whether the _source_ file (ie: /media/card/something)
9+ # does actually exist. If it doesn't, it could by a library symlink (ie: libsomething.0.1 -> libsomething.0)
10+ # Since VFAT & friends do not support symlinks, these library links would not exist after installation
11+ # and trying to symlink them into the rootfs with ipkg-link results in unconnected symlinks in the rootfs.
12+ # So we use the real lib file in /media/card/whatever and create all needed symlinks in the rootfs
13+ # using the real file as source.
14+
15+ if [ ! -e "$PREFIX$line" ]; then
16+ if ( echo "$line" | grep -q "lib" ) ; then
17+ libsearchfile=$(echo $line | sed -e "s#[a-z0-9/.]*/##g")
18+ libfoundfiles=$(find $PREFIX -name "$libsearchfile*")
19+
20+ for liblinkfile in $libfoundfiles; do
21+ echo "Linking $line to $liblinkfile"
22+ # link will be pointing to nowhere
23+ if test -L $line; then
24+ rm -f $line
25+ fi
26+ ln -s $liblinkfile $line
27+ done
28+ else
29+ echo "WARNING: Source file [$PREFIX$line] is missing!"
30+ fi
31+ fi
32 done
33 }
34