From b75851b5cc36cc5ef7e110a14250f6b42b516a43 Mon Sep 17 00:00:00 2001 From: lace <> Date: Thu, 13 Aug 2009 11:34:52 +0000 Subject: [PATCH 1/1] init (but older from backup). --- bin/mockrun | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 bin/mockrun diff --git a/bin/mockrun b/bin/mockrun new file mode 100755 index 0000000..41e1e45 --- /dev/null +++ b/bin/mockrun @@ -0,0 +1,40 @@ +#! /usr/bin/perl -T +# $Id$ +use strict; +use warnings; +use English; + +die "Need [/var/lib/mock/] []" 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]+)"; +$_=(/$safe/)[0]; +my $rpath="/var/lib/mock/$_/root"; +system "/usr/local/sbin/mocksetup -s $_" and die "mocksetup $_"; +-e "$rpath/MOCK" or die "mocksetup $_ and still no $rpath/MOCK"; +my $user=$ENV{"USER"}; +$user=($user=~/$safe/)[0]; + +# ERROR: Build root is locked by another process. +# 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); + +# Untaint @ARGV->@args. +my $args=""; +for (@ARGV) { + $args.=" " if $args; + $args.=(/^(.*)$/s)[0]; +} +my @args=("-l","-c",$args) if $args; + +push @l,qw(su -),$user,@args; +print STDERR "$mock @l\n"; +$ENV{"HOSTNAME"}="MOCK-$_"; +exec $mock @l; -- 1.8.3.1