Switch to FSF GCC 4.7.
[nethome.git] / bin / mockrun
index 41e1e45..25a2694 100755 (executable)
@@ -1,20 +1,19 @@
 #! /usr/bin/perl -T
-# $Id$
+# $Id: mockrun,v 1.2 2009/10/03 17:45:41 jkratoch Exp $
 use strict;
 use warnings;
 use English;
 
 die "Need [/var/lib/mock/]<ROOTNAME> [<commandline...>]" if @ARGV<1;
 local $_=shift;
-$EUID==0 or die "Need SUID";
-$UID = $EUID;
 delete @ENV{qw(PATH BASH_ENV)};
 tr{/}{}s;
 s{^/var/lib/mock/}{};
-my $safe="([-_a-z0-9]+)";
+my $safe="([-_a-z0-9/]+)";
 $_=(/$safe/)[0];
+my $HOME=($ENV{"HOME"}=~/$safe/)[0];
 my $rpath="/var/lib/mock/$_/root";
-system "/usr/local/sbin/mocksetup -s $_" and die "mocksetup $_";
+system "sudo $HOME/bin/mocksetup -s $_" and die "sudo mocksetup $_";
 -e "$rpath/MOCK" or die "mocksetup $_ and still no $rpath/MOCK";
 my $user=$ENV{"USER"};
 $user=($user=~/$safe/)[0];
@@ -23,8 +22,8 @@ $user=($user=~/$safe/)[0];
 # my $mock="/usr/bin/mock";
 # my @l=(qw(mock -r),$_,qw(--shell));
 my $mock="/usr/bin/setarch";
-my $arch=(/-([^-]+)$/)[0];
-my @l=("setarch",$arch,"/usr/sbin/chroot",$rpath);
+my $arch=(/-(i386|x86_64)(?:-.*)?$/)[0] or die;
+my @l=("setarch",$arch,"/usr/bin/sudo","/usr/sbin/chroot",$rpath);
 
 # Untaint @ARGV->@args.
 my $args="";