Update of /cvsroot/fink/fink/perlmod/Fink
In directory sc8-pr-cvs1:/tmp/cvs-serv11244/perlmod/Fink

Modified Files:
      Tag: uidgid
        ChangeLog PkgVersion.pm User.pm 
Log Message:
Making changes for new style user/group handling

Index: ChangeLog
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/ChangeLog,v
retrieving revision 1.310.2.3
retrieving revision 1.310.2.4
diff -u -d -r1.310.2.3 -r1.310.2.4
--- ChangeLog   11 Aug 2003 16:17:57 -0000      1.310.2.3
+++ ChangeLog   11 Aug 2003 19:47:49 -0000      1.310.2.4
@@ -1,4 +1,12 @@
-2003-08-09  Justin F. Hallett  <[EMAIL PROTECTED]>
+2003-08-11  Justin F. Hallett  <[EMAIL PROTECTED]>
+
+       * PkgVersion.pm: Completly change how we will handle users and groups
+         firstly pkgs that require user/group will depends on user-<user>
+         and group-<group>, which will create and maintain the info for that
+         user and group.
+       * User.pm: Made changes to accomadate teh new style of user/group              
   handling.
+
+2003-08-11  Justin F. Hallett  <[EMAIL PROTECTED]>
 
        * PkgVersion.pm: moved where the scripts are built to top of
          script processing.

Index: PkgVersion.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/PkgVersion.pm,v
retrieving revision 1.128.8.4
retrieving revision 1.128.8.5
diff -u -d -r1.128.8.4 -r1.128.8.5
--- PkgVersion.pm       11 Aug 2003 16:27:59 -0000      1.128.8.4
+++ PkgVersion.pm       11 Aug 2003 19:47:50 -0000      1.128.8.5
@@ -78,6 +78,12 @@
                $self->{_perlversion} = $1;
                $self->{_type} = $type;
        }
+       ### make type "user" and/or "group" equal to bundle
+       if ($self->{_type} eq "user") {
+               $self->{_type} = $type = "bundle";
+       } elsif ($self->{_type} eq "group") {
+               $self->{_type} = $type = "bundle";
+       }
        # the following is set by Fink::Package::scan
        $self->{_filename} = $filename = $self->{thefilename};
 
@@ -1064,9 +1070,6 @@
                        }
                }
 
-               ### Add check for User/Group
-               ### FIXME
-
                # Determine the name of the TarFilesRename in the case of multi 
tarball packages
                if ($i < 2) {
                        $renamefield = "TarFilesRename";
@@ -1639,59 +1642,45 @@
         $scriptbody = "";
         
         ### Check for Group/User, if exists then process
-        if ($self->has_param("Group") || $self->has_param("User")) {
-               my ($name, $type) = (0, 0);
-               my ($desc, $pass, $shell, $home, $group, $tmp);
+       if ($self->has_param("Group") || $self->has_param("User")) {
+               ### Add user/group check to preinst if needed
+               if ($scriptname eq "preinst" && $self->{_type} = "bundle") {
+                       my ($name, $type) = (0, 0);
+                       my ($desc, $pass, $shell, $home, $group, $tmp);
     
-            ### Need to process group first since user might depend on it
-            if ($self->has_param("Group")) {
-                $tmp = $self->param("Group");
-                $tmp = &expand_percent($tmp, $self->{_expand});
-                ($name, $desc, $pass) = split(/:/, $tmp);
-                $type = "group";
-            } elsif ($self->has_param("User")) {
-                $tmp = $self->param("User");
-                $tmp = &expand_percent($tmp, $self->{_expand});
-                ($name, $group, $desc, $pass, $shell, $home) =
-                        split(/:/, $tmp);
-                $type = "user";
-            }
-            ### Add user/group check to preinst if needed
-            if ($scriptname eq "preinst") {
+                       if ($self->has_param("Group")) {
+                               $tmp = $self->param("Group");
+                               $tmp = &expand_percent($tmp, $self->{_expand});
+                               ($name, $desc, $pass) = split(/:/, $tmp);
+                               $type = "group";
+                       } elsif ($self->has_param("User")) {
+                               $tmp = $self->param("User");
+                               $tmp = &expand_percent($tmp, $self->{_expand});
+                               ($name, $group, $desc, $pass, $shell, $home) =
+                                                       split(/:/, $tmp);
+                               $type = "user";
+                       }
             
-                my $script =  Fink::User->add_user_script($name, $type,
-                                $desc, $pass, $shell, $home, $group);
+                       my $script =  Fink::User->add_user_script($name, $type,
+                                       $desc, $pass, $shell, $home, $group);
 
-                if ($script) {
-                    ### Add $script to top of preinstscript
-                    $script .= "\n";
-                    $scriptbody = $script;
-                }
-            }
+                       if ($script) {
+                               ### Add $script to top of preinstscript
+                               $script .= "\n";
+                               $scriptbody = $script;
+                       }
+               }
         
-            ### Add chown script to postinst script if needed
-            if ($scriptname eq "postinst") {
-                my $script = Fink::User->get_perms($ddir, $name, $type,
-                                $desc, $pass, $shell, $home, $group);
+               ### Add chown script to postinst script if needed
+               if ($scriptname eq "postinst") {
+                       my $script = Fink::User->get_perms($ddir);
 
-                if ($script) {
-                    ### Add $script to top of postinstscript
-                    $script .= "\n";
-                    $scriptbody = $script;
-                }
-            }
-            
-            ### Add remove user/group check/script if needed
-            if ($scriptname eq "postrm") {
-                ### FIXME need to figure out a script for this.
-                my script = Fink::User->remove_user_script($name, $type);
-                
-                if ($script) {
-                    ### Add check to remove user/group to top of postrm
-                    $script .= "\n";
-                    $scriptbody = $script;
-            }
-        }
+                       if ($script) {
+                               ### Add $script to top of postinstscript
+                               $script .= "\n";
+                               $scriptbody = $script;
+                       }
+               }
 
                # get script piece from package description
                if ($self->has_param($scriptname."Script")) {

Index: User.pm
===================================================================
RCS file: /cvsroot/fink/fink/perlmod/Fink/Attic/User.pm,v
retrieving revision 1.1.2.11
retrieving revision 1.1.2.12
diff -u -d -r1.1.2.11 -r1.1.2.12
--- User.pm     11 Aug 2003 17:01:45 -0000      1.1.2.11
+++ User.pm     11 Aug 2003 19:47:50 -0000      1.1.2.12
@@ -65,7 +65,7 @@
        my $home = shift;
        my $group = shift;
 
-    my $uid = $self->get_id("user", $user);
+       my $uid = $self->get_id("user", $user);
 
        my $cmd  = "$basepath/sbin/useradd -c $desc -d $home -e 0";
           $cmd .= "-f 0 -g $group -s $shell -u $uid $user";
@@ -229,64 +229,39 @@
 sub get_perms {
        my $self = shift;
        my $rootdir = shift;
-       my $name = shift;
-       my $type = shift;
-       my $desc = shift;
-       my $pass = shift || "";
-       my $shell = shift || "/usr/bin/false";
-       my $home = shift || "/tmp";
-       my $group = shift || $name;
        my $script = "";
 
-       unless ($name) {
-               return $script;
-       }
-
-    unless ($pass) {
-        $pass = $self->mkpasswd();
-    }    
-
-       unless ($self->check_for_name($type, $name, $desc, $pass, $shell,
-                  $home, $group)) {
-               ### add user/group
-               if ($type eq "user") {
-            $self->add_user($name, $desc, $pass, $shell, $home, $group);
-        } else {
-            $self->add_group($name, $desc, $pass);
-        }
-       }
-       
        my (@filelist, @files, @users, @groups);
        my ($wanted, $file, $usr, $grp);
-    my ($dev, $ino, $mode, $nlink, $uid, $gid);
+       my ($dev, $ino, $mode, $nlink, $uid, $gid);
     
-    $wanted =
-        sub {
-            if (-x) {
-                push @filelist, $File::Find::fullname;
-            }
-        };
-    find({ wanted => $wanted, follow => 1, no_chdir => 1 }, $rootdir);
+       $wanted =
+               sub {
+                       if (-x) {
+                               push @filelist, $File::Find::fullname;
+                       }
+               };
+       find({ wanted => $wanted, follow => 1, no_chdir => 1 }, $rootdir);
     
        foreach $file (@filelist) {
-         ### Remove $basepath/src/root-...
-         $file =~ s/^$basepath\/src\/root-.+$basepath/$basepath/g;
-         ### Don't add DEBIAN dir
-         next if ($file =~ /DEBIAN/);
+               ### Remove $basepath/src/root-...
+               $file =~ s/^$basepath\/src\/root-.+$basepath/$basepath/g;
+               ### Don't add DEBIAN dir
+               next if ($file =~ /DEBIAN/);
          
-         ($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($file);
+               ($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($file);
          
-         $usr = User::pwent::getpwuid($uid);
-         $grp = User::grent::getgrgid($gid);
+               $usr = User::pwent::getpwuid($uid);
+               $grp = User::grent::getgrgid($gid);
          
-         push(@files, $file);
-         push(@users, $usr);
-         push(@groups, $grp);
-    }
+               push(@files, $file);
+               push(@users, $usr);
+               push(@groups, $grp);
+       }
 
-    $file = join(":", @files);
-    $usr = join (":", @users);
-    $grp = join (":", @groups);
+       $file = join(":", @files);
+       $usr = join (":", @users);
+       $grp = join (":", @groups);
 
        $self->set_perms($rootdir, $file);
 
@@ -297,50 +272,32 @@
 
 ### add check/add user script and then set perms
 sub add_user_script {
-    my $self = shift;
-    my $name = shift;
-    my $type = shift;
-    my $desc = shift;
+       my $self = shift;
+       my $name = shift;
+       my $type = shift;
+       my $desc = shift;
        my $pass = shift || "";
        my $shell = shift || "/usr/bin/false";
        my $home = shift || "/tmp";
        my $group = shift || $name;
     
-    my $script = "";
-
-    unless ($name) {
-        return $script;
-    }
-    
-    unless ($pass) {
-        $pass = $self->mkpasswd();
-    }    
+       my $script = "";
 
-    ### FIXME
+       ### FIXME
     
-    return $script;
+       return $script;
 }
 
 ### Check remove user/group
 sub remove_user_script {
-    my $self = shift;
-    my $name = shift;
-    my $type = shift;
-    my $script = "";
-    
-    ### FIXME
-    
-    return $script
-}
-
-### Return a passwd
-sub mkpasswd {
-    $self = shift;
-    $pass = "";
+       my $self = shift;
+       my $name = shift;
+       my $type = shift;
+       my $script = "";
     
-    ### FIXME
+       ### FIXME
     
-    return $pass;
+       return $script
 }
 
 ### build script to set user/groups
@@ -357,10 +314,10 @@
        my @users = split(/:/, $users);
        my @groups = split(/:/, $groups);
 
-    foreach $file (@files) {
-        $script .= "chown @users[$i]:@groups[$i] $file\n";
-        $i++;
-    }
+       foreach $file (@files) {
+               $script .= "chown @users[$i]:@groups[$i] $file\n";
+               $i++;
+       }
     
        return $script;
 }
@@ -374,10 +331,10 @@
        my @files = split(/:/, $files);
        
        foreach $file (@files);
-        if (&execute("chown root:wheel $file")) {
-            die "Couldn't change ownershil of $file!\n";
-        }
-    }
+               if (&execute("chown root:wheel $file")) {
+                       die "Couldn't change ownershil of $file!\n";
+               }
+       }
 
        return 0;
 }




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
Fink-commits mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/fink-commits

Reply via email to