Added ability to revert to old modules for make revert.
[kai/samba-autobuild/.git] / source3 / script / installmodules.sh
index f7c74733381bebbf7affc88f054cc7d468a2b55c..127091d8088e27b9f2ab35236fa85a6fc76cc5b1 100755 (executable)
@@ -1,27 +1,42 @@
 #!/bin/sh
 
 INSTALLPERMS=$1
-BASEDIR=`echo $2 | sed 's/\/\//\//g'`
-LIBDIR=`echo $3 | sed 's/\/\//\//g'`
+DESTDIR=$2
+prefix=`echo $3 | sed 's/\/\//\//g'`
+LIBDIR=`echo $4 | sed 's/\/\//\//g'`
+shift
 shift
 shift
 shift
 
-for d in $BASEDIR $LIBDIR; do
-if [ ! -d $d ]; then
-mkdir $d
-if [ ! -d $d ]; then
-  echo Failed to make directory $d
+for d in $prefix $LIBDIR; do
+if [ ! -d $DESTDIR/$d ]; then
+mkdir $DESTDIR/$d
+if [ ! -d $DESTDIR/$d ]; then
+  echo Failed to make directory $DESTDIR/$d
   exit 1
 fi
 fi
 done
 
+# We expect the last component of LIBDIR to be the module type, eg. idmap,
+# pdb. By stripping this from the installation name, you can have multiple
+# modules of the same name but different types by creating eg. idmap_foo
+# and pdb_foo. This makes the most sense for idmap and pdb module, where
+# they need to be consistent.
+mtype=`basename $LIBDIR`
+
 for p in $*; do
  p2=`basename $p`
- echo Installing $p as $LIBDIR/$p2
- cp -f $p $LIBDIR/
- chmod $INSTALLPERMS $LIBDIR/$p2
+ name=`echo $p2 | sed -es/${mtype}_//`
+ echo Preserving old module as $DESTDIR/$LIBDIR/$name.old
+ if [ -f $DESTDIR/$LIBDIR/$name ]; then
+   rm -f $DESTDIR/$LIBDIR/$name.old
+   mv $DESTDIR/$LIBDIR/$name $DESTDIR/$LIBDIR/$name.old
+ fi
+ echo Installing $p as $DESTDIR/$LIBDIR/$name
+ cp -f $p $DESTDIR/$LIBDIR/$name
+ chmod $INSTALLPERMS $DESTDIR/$LIBDIR/$name
 done
 
 exit 0