Просмотр исходного кода

Fix dev ticket 23 by finally implementing {m,r,n,s}uid and {m,r,n,s}gid params

Michael Schloh von Bennewitz 23 лет назад
Родитель
Сommit
f3c5258c0f
4 измененных файлов с 87 добавлено и 4 удалено
  1. 17 1
      openpkg/aux.usrgrp.sh
  2. 8 0
      openpkg/aux.wrapbin.sh
  3. 29 1
      openpkg/openpkg.boot
  4. 33 2
      openpkg/openpkg.spec

+ 17 - 1
openpkg/aux.usrgrp.sh

@@ -31,6 +31,10 @@ susr=''; sgrp=''
 musr=''; mgrp=''
 rusr=''; rgrp=''
 nusr=''; ngrp=''
+suid=''; sgid=''
+muid=''; mgid=''
+ruid=''; rgid=''
+nuid=''; ngid=''
 
 #   parse command line options
 for opt
@@ -51,6 +55,14 @@ do
         --rgrp=*             ) rgrp=$arg   ;;
         --nusr=*             ) nusr=$arg   ;;
         --ngrp=*             ) ngrp=$arg   ;;
+        --suid=*             ) suid=$arg   ;;
+        --sgid=*             ) sgid=$arg   ;;
+        --muid=*             ) muid=$arg   ;;
+        --mgid=*             ) mgid=$arg   ;;
+        --ruid=*             ) ruid=$arg   ;;
+        --rgid=*             ) rgid=$arg   ;;
+        --nuid=*             ) nuid=$arg   ;;
+        --ngid=*             ) ngid=$arg   ;;
         *                    ) help=1      ;;
     esac
 done
@@ -175,7 +187,11 @@ for var in \
     susr sgrp \
     musr mgrp \
     rusr rgrp \
-    nusr ngrp; do
+    nusr ngrp \
+    suid sgid \
+    muid mgid \
+    ruid rgid \
+    nuid ngid; do
     eval "val=\"\$$var\""
     if [ ".$output" = . ]; then
         output="$var=\"$val\""

+ 8 - 0
openpkg/aux.wrapbin.sh

@@ -38,6 +38,14 @@ rusr='@RUSR@'
 rgrp='@RGRP@'
 nusr='@NUSR@'
 ngrp='@NGRP@'
+suid='@SUID@'
+sgid='@SGID@'
+muid='@MUID@'
+mgid='@MGID@'
+ruid='@RUID@'
+rgid='@RGID@'
+nuid='@NUID@'
+ngid='@NGID@'
 
 #   parse command line options
 for opt

+ 29 - 1
openpkg/openpkg.boot

@@ -34,6 +34,10 @@ susr=''; sgrp=''
 musr=''; mgrp=''
 rusr=''; rgrp=''
 nusr=''; ngrp=''
+suid=''; sgid=''
+muid=''; mgid=''
+ruid=''; rgid=''
+nuid=''; ngid=''
 bs=0
 
 #   parse command line options
@@ -57,6 +61,14 @@ do
         --rgrp=*             ) rgrp=$arg   ;;
         --nusr=*             ) nusr=$arg   ;;
         --ngrp=*             ) ngrp=$arg   ;;
+        --suid=*             ) suid=$arg   ;;
+        --sgid=*             ) sgid=$arg   ;;
+        --muid=*             ) muid=$arg   ;;
+        --mgid=*             ) mgid=$arg   ;;
+        --ruid=*             ) ruid=$arg   ;;
+        --rgid=*             ) rgid=$arg   ;;
+        --nuid=*             ) nuid=$arg   ;;
+        --ngid=*             ) ngid=$arg   ;;
         -bs | -s             ) bs=1        ;;
         *                    ) help=1      ;;
     esac
@@ -77,7 +89,11 @@ eval `sh aux.usrgrp.sh \
       --susr="$susr" --sgrp="$sgrp" \
       --musr="$musr" --mgrp="$mgrp" \
       --rusr="$rusr" --rgrp="$rgrp" \
-      --nusr="$nusr" --ngrp="$ngrp"`
+      --nusr="$nusr" --ngrp="$ngrp" \
+      --suid="$suid" --sgid="$sgid" \
+      --muid="$muid" --mgid="$mgid" \
+      --ruid="$ruid" --rgid="$rgid" \
+      --nuid="$nuid" --ngid="$ngid"`
 
 ##
 ##  determine package information
@@ -284,6 +300,14 @@ cp /dev/null $prolog
   echo "l_rgrp=$rgrp"
   echo "l_nusr=$nusr"
   echo "l_ngrp=$ngrp"
+  echo "l_suid=$suid"
+  echo "l_sgid=$sgid"
+  echo "l_muid=$muid"
+  echo "l_mgid=$mgid"
+  echo "l_ruid=$ruid"
+  echo "l_rgid=$rgid"
+  echo "l_nuid=$nuid"
+  echo "l_ngid=$ngid"
   echo "l_tar=$l_tar"
   echo "l_make=$l_make"
   echo "l_cc=$l_cc"
@@ -479,6 +503,10 @@ sed <`SOURCE aux.wrapbin.sh` \
     -e "s;@MUSR@;$musr;" -e "s;@MGRP@;$mgrp;" \
     -e "s;@RUSR@;$rusr;" -e "s;@RGRP@;$rgrp;" \
     -e "s;@NUSR@;$nusr;" -e "s;@NGRP@;$ngrp;" \
+    -e "s;@SUID@;$suid;" -e "s;@SGID@;$sgid;" \
+    -e "s;@MUID@;$muid;" -e "s;@MGID@;$mgid;" \
+    -e "s;@RUID@;$ruid;" -e "s;@RGID@;$rgid;" \
+    -e "s;@NUID@;$nuid;" -e "s;@NGID@;$ngid;" \
     -e "s;@l_prefix@;$prefix;" -e "s;@TGZ@;openpkg-$v.$t.tar.Z;" \
     -e "/^@PRE@/r $tmpdir/rpm.pre" |\
     sed -e '/^@PRE@/d' >$dstdir/openpkg-$v.$t.sh

+ 33 - 2
openpkg/openpkg.spec

@@ -221,6 +221,15 @@ Provides:     OpenPKG
     rgrp=""; [ ".%{?l_rgrp:set}"  = .set ] && rgrp="%{l_rgrp}"
     nusr=""; [ ".%{?l_nusr:set}"  = .set ] && nusr="%{l_nusr}"
     ngrp=""; [ ".%{?l_ngrp:set}"  = .set ] && ngrp="%{l_ngrp}"
+    #   corresponding ids
+    suid=""; [ ".%{?l_suid:set}"  = .set ] && suid="%{l_suid}"
+    sgid=""; [ ".%{?l_sgid:set}"  = .set ] && sgid="%{l_sgid}"
+    muid=""; [ ".%{?l_muid:set}"  = .set ] && muid="%{l_muid}"
+    mgid=""; [ ".%{?l_mgid:set}"  = .set ] && mgid="%{l_mgid}"
+    ruid=""; [ ".%{?l_ruid:set}"  = .set ] && ruid="%{l_ruid}"
+    rgid=""; [ ".%{?l_rgid:set}"  = .set ] && rgid="%{l_rgid}"
+    nuid=""; [ ".%{?l_nuid:set}"  = .set ] && nuid="%{l_nuid}"
+    ngid=""; [ ".%{?l_ngid:set}"  = .set ] && ngid="%{l_ngid}"
     #   compat:
     usr="";  [ ".%{?l_fsusr:set}" = .set ] && usr="%{l_fsusr}"
     grp="";  [ ".%{?l_fsgrp:set}" = .set ] && grp="%{l_fsgrp}"
@@ -229,7 +238,11 @@ Provides:     OpenPKG
           --susr="$susr" --sgrp="$sgrp" \
           --musr="$musr" --mgrp="$mgrp" \
           --rusr="$rusr" --rgrp="$rgrp" \
-          --nusr="$nusr" --ngrp="$ngrp"`
+          --nusr="$nusr" --ngrp="$ngrp" \
+          --suid="$suid" --sgid="$sgid" \
+          --muid="$muid" --mgid="$mgid" \
+          --ruid="$ruid" --rgid="$rgid" \
+          --nuid="$nuid" --ngid="$ngid"`
     echo "susr=\"$susr\"; export susr" >>.buildenv
     echo "sgrp=\"$sgrp\"; export sgrp" >>.buildenv
     echo "musr=\"$musr\"; export musr" >>.buildenv
@@ -238,6 +251,14 @@ Provides:     OpenPKG
     echo "rgrp=\"$rgrp\"; export rgrp" >>.buildenv
     echo "nusr=\"$nusr\"; export nusr" >>.buildenv
     echo "ngrp=\"$ngrp\"; export ngrp" >>.buildenv
+    echo "suid=\"$suid\"; export suid" >>.buildenv
+    echo "sgid=\"$sgid\"; export sgid" >>.buildenv
+    echo "muid=\"$muid\"; export muid" >>.buildenv
+    echo "mgid=\"$mgid\"; export mgid" >>.buildenv
+    echo "ruid=\"$ruid\"; export ruid" >>.buildenv
+    echo "rgid=\"$rgid\"; export rgid" >>.buildenv
+    echo "nuid=\"$nuid\"; export nuid" >>.buildenv
+    echo "ngid=\"$ngid\"; export ngid" >>.buildenv
 
     #   determine installation location id
     if [ ".%{?l_location:set}" = .set ]; then
@@ -872,6 +893,17 @@ Provides:     OpenPKG
     [ ".$nusr" = . ] && nusr="%{?l_nusr}%{!?l_nusr:%{l_fsusr}-n}"
     [ ".$ngrp" = . ] && ngrp="%{?l_ngrp}%{!?l_ngrp:%{l_fsgrp}-n}"
 
+    #   if any of these optional params are not used we won't have a
+    #   corresponding macro either, so make use of one conditionally
+    [ ".$suid" = . ] && [ ".%{?l_suid:set}" = .set ] && suid="%{?l_suid}"
+    [ ".$sgid" = . ] && [ ".%{?l_sgid:set}" = .set ] && sgid="%{?l_sgid}"
+    [ ".$muid" = . ] && [ ".%{?l_muid:set}" = .set ] && muid="%{?l_muid}"
+    [ ".$mgid" = . ] && [ ".%{?l_mgid:set}" = .set ] && mgid="%{?l_mgid}"
+    [ ".$ruid" = . ] && [ ".%{?l_ruid:set}" = .set ] && ruid="%{?l_ruid}"
+    [ ".$rgid" = . ] && [ ".%{?l_rgid:set}" = .set ] && rgid="%{?l_rgid}"
+    [ ".$nuid" = . ] && [ ".%{?l_nuid:set}" = .set ] && nuid="%{?l_nuid}"
+    [ ".$ngid" = . ] && [ ".%{?l_ngid:set}" = .set ] && ngid="%{?l_ngid}"
+
     #   determine prefix
     [ ".$prefix" = . ] && prefix="%{l_prefix}"
     prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
@@ -1438,7 +1470,6 @@ Provides:     OpenPKG
                         niutil -destroy . "/groups/${grp}"
                         ;;
                     * )
-                        #   delete group entry
                         cp /etc/group /etc/group.bak && \
                         grep -v "^${grp}:" /etc/group.bak >/etc/group
                         ;;