source: MondoRescue/branches/3.3/mindi-busybox/applets/install.sh@ 3625

Last change on this file since 3625 was 3621, checked in by Bruno Cornec, 10 years ago

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1#!/bin/sh
2
3export LC_ALL=POSIX
4export LC_CTYPE=POSIX
5
6prefix=$1
7if [ -z "$prefix" ]; then
8 echo "usage: applets/install.sh DESTINATION [--symlinks/--hardlinks/--binaries/--scriptwrapper]"
9 exit 1
10fi
11
12# Source the configuration
13. ./.config
14
15h=`sort busybox.links | uniq`
16
17sharedlib_dir="0_lib"
18
19linkopts=""
20scriptwrapper="n"
21binaries="n"
22cleanup="0"
23noclobber="0"
24case "$2" in
25 --hardlinks) linkopts="-f";;
26 --symlinks) linkopts="-fs";;
27 --binaries) binaries="y";;
28 --scriptwrapper) scriptwrapper="y";swrapall="y";;
29 --sw-sh-hard) scriptwrapper="y";linkopts="-f";;
30 --sw-sh-sym) scriptwrapper="y";linkopts="-fs";;
31 --cleanup) cleanup="1";;
32 --noclobber) noclobber="1";;
33 "") h="";;
34 *) echo "Unknown install option: $2"; exit 1;;
35esac
36
37if [ -n "$DO_INSTALL_LIBS" ] && [ "$DO_INSTALL_LIBS" != "n" ]; then
38 # get the target dir for the libs
39 # assume it starts with lib
40 libdir=$($CC -print-file-name=libc.so | \
41 sed -n 's%^.*\(/lib[^\/]*\)/libc.so%\1%p')
42 if test -z "$libdir"; then
43 libdir=/lib
44 fi
45
46 mkdir -p "$prefix/$libdir" || exit 1
47 for i in $DO_INSTALL_LIBS; do
48 rm -f "$prefix/$libdir/$i" || exit 1
49 if [ -f "$i" ]; then
50 echo " Installing $i to the target at $prefix/$libdir/"
51 cp -pPR "$i" "$prefix/$libdir/" || exit 1
52 chmod 0644 "$prefix/$libdir/`basename $i`" || exit 1
53 fi
54 done
55fi
56
57if [ "$cleanup" = "1" ] && [ -e "$prefix/bin/busybox" ]; then
58 inode=`ls -i "$prefix/bin/busybox" | awk '{print $1}'`
59 sub_shell_it=`
60 cd "$prefix"
61 for d in usr/sbin usr/bin sbin bin; do
62 pd=$PWD
63 if [ -d "$d" ]; then
64 cd "$d"
65 ls -iL . | grep "^ *$inode" | awk '{print $2}' | env -i xargs rm -f
66 fi
67 cd "$pd"
68 done
69 `
70 exit 0
71fi
72
73rm -f "$prefix/bin/busybox" || exit 1
74mkdir -p "$prefix/bin" || exit 1
75install -m 755 busybox "$prefix/bin/busybox" || exit 1
76
77for i in $h; do
78 appdir=`dirname "$i"`
79 app=`basename "$i"`
80 mkdir -p "$prefix/$appdir" || exit 1
81 if [ "$scriptwrapper" = "y" ]; then
82 if [ "$swrapall" != "y" ] && [ "$i" = "/bin/sh" ]; then
83 ln $linkopts busybox "$prefix/$i" || exit 1
84 else
85 rm -f "$prefix/$i"
86 echo "#!/bin/busybox" >"$prefix/$i"
87 chmod +x "$prefix/$i"
88 fi
89 echo " $prefix/$i"
90 elif [ "$binaries" = "y" ]; then
91 # Copy the binary over rather
92 if [ -e $sharedlib_dir/$app ]; then
93 if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then
94 echo " Copying $sharedlib_dir/$app to $prefix/$i"
95 cp -pPR $sharedlib_dir/$app $prefix/$i || exit 1
96 else
97 echo " $prefix/$i already exists"
98 fi
99 else
100 echo "Error: Could not find $sharedlib_dir/$app"
101 exit 1
102 fi
103 else
104 if [ "$2" = "--hardlinks" ]; then
105 bb_path="$prefix/bin/busybox"
106 else
107 case "$appdir" in
108 /)
109 bb_path="bin/busybox"
110 ;;
111 /bin)
112 bb_path="busybox"
113 ;;
114 /sbin)
115 bb_path="../bin/busybox"
116 ;;
117 /usr/bin | /usr/sbin)
118 bb_path="../../bin/busybox"
119 ;;
120 *)
121 echo "Unknown installation directory: $appdir"
122 exit 1
123 ;;
124 esac
125 fi
126 if [ "$noclobber" = "0" ] || [ ! -e "$prefix/$i" ]; then
127 echo " $prefix/$i -> $bb_path"
128 ln $linkopts "$bb_path" "$prefix/$i" || exit 1
129 else
130 echo " $prefix/$i already exists"
131 fi
132 fi
133done
134
135exit 0
Note: See TracBrowser for help on using the repository browser.