diff options
author | Jacob Pipkin <d4wnr4z0r@yahoo.com> | 2012-05-08 02:04:03 -0500 |
---|---|---|
committer | Jacob Pipkin <d4wnr4z0r@yahoo.com> | 2012-05-08 02:04:03 -0500 |
commit | 7aac30ed9e0c6be599b448d32eb83160386ee7be (patch) | |
tree | 5f92beaf3cf308a8bda0055e1d71a2d2c776527c /SBO-Lib/lib | |
parent | 2503f3c79e5d7d61285da70dbc765d636437683c (diff) | |
download | sbotools2-7aac30ed9e0c6be599b448d32eb83160386ee7be.tar.xz |
changes to support 32-bit only SBos on multilib x86_64
Diffstat (limited to 'SBO-Lib/lib')
-rw-r--r-- | SBO-Lib/lib/SBO/Lib.pm | 92 |
1 files changed, 63 insertions, 29 deletions
diff --git a/SBO-Lib/lib/SBO/Lib.pm b/SBO-Lib/lib/SBO/Lib.pm index 458df14..c180b5f 100644 --- a/SBO-Lib/lib/SBO/Lib.pm +++ b/SBO-Lib/lib/SBO/Lib.pm @@ -23,7 +23,7 @@ require Exporter; get_installed_sbos get_available_updates check_sbo_name_validity - do_slack_build + do_slackbuild make_clean make_distclean do_upgradepkg @@ -498,72 +498,106 @@ sub check_multilib { return; } -sub do_slack_build { - script_error('do_slack_build requires two arguments.') unless exists $_[1]; +sub rewrite_slackbuild { + script_error ('rewrite_slackbuild require three arguments') + unless exists $_[1]; + my ($slackbuild,%changes) = @_; + copy ($slackbuild,"$slackbuild.old"); + tie @sb,'Tie::File',$slackbuild; + FIRST: for (my $line = @arch) { + SECOND: for (my ($key,$value) = %changes) { + if ($key eq 'out_arch') { + if (index ($line,'makepkg') != -1) { + $line = /\$ARCH/$value/; + } + } + } + } + untie @sb; +} + +sub replace_slackbuild { + script_error ('replace_slackbuild requires an argument') + unless exists $_[0]; + my $slackbuild = shift; + if (-f "$slackbuild.old") { + if (-f $slackbuild) { + unlink $slackbuild; + rename ("$slackbuild.old",$slackbuild); + } + } +} + +sub do_slackbuild { + script_error ('do_slackbuild requires two arguments.') unless exists $_[1]; my ($jobs,$sbo) = @_; my $sbo_home = $config{SBO_HOME}; - my $location = get_sbo_location($sbo); - my $x32 = check_x32($sbo,$location); + my $location = get_sbo_location ($sbo); + my $x32 = check_x32 ($sbo,$location); if ($x32) { - if (! check_multilib()) { + if (! check_multilib() ) { print "$sbo is 32-bit only, however, this system does not appear -to be multilib ready\n"; +to be multilib ready.\n"; exit 1 } } - my $version = get_sbo_version($sbo,$location); - my @downloads = get_sbo_downloads($sbo,$location); + my $version = get_sbo_version ($sbo,$location); + my @downloads = get_sbo_downloads ($sbo,$location); my @symlinks; for my $c (keys @downloads) { my $link = $downloads[$c]{link}; my $md5sum = $downloads[$c]{md5sum}; - my $filename = get_filename_from_link($link); - unless (check_distfile($link,$md5sum)) { - die unless get_distfile($link,$md5sum); + my $filename = get_filename_from_link ($link); + unless (check_distfile ($link,$md5sum)) { + die unless get_distfile ($link,$md5sum); } - my $symlink = get_symlink_from_filename($filename,$location); - push(@symlinks,$symlink); - symlink($filename,$symlink); + my $symlink = get_symlink_from_filename ($filename,$location); + push (@symlinks,$symlink); + symlink ($filename,$symlink); } - chdir($location); - chmod(0755,"$location/$sbo.SlackBuild"); + chdir ($location); + chmod (0755,"$location/$sbo.SlackBuild"); my $cmd; + my %changes; if ($x32) { + $changes{out_arch} = 'i486'; + rewrite_slackbuild ("$location/$sbo.SlackBuild",%changes); $cmd = ". /etc/profile.d/32dev.sh && $location/$sbo.SlackBuild"; } else { $cmd = "$location/$sbo.SlackBuild"; } - my $out = system($cmd); + my $out = system ($cmd); die unless $out == 0; - unlink($_) for (@symlinks); + unlink ($_) for (@symlinks); return $version; } sub make_clean { - script_error('make_clean requires two arguments.') unless exists $_[1]; + script_error ('make_clean requires two arguments.') unless exists $_[1]; my ($sbo,$version) = @_; print "Cleaning for $sbo-$version...\n"; - remove_tree("/tmp/SBo/$sbo-$version") if -d "/tmp/SBo/$sbo-$version"; - remove_tree("/tmp/SBo/package-$sbo") if -d "/tmp/SBo/package-$sbo"; + remove_tree ("/tmp/SBo/$sbo-$version") if -d "/tmp/SBo/$sbo-$version"; + remove_tree ("/tmp/SBo/package-$sbo") if -d "/tmp/SBo/package-$sbo"; return 1; } sub make_distclean { - script_error('make_distclean requires two arguments.') unless exists $_[1]; + script_error ('make_distclean requires two arguments.') + unless exists $_[1]; my ($sbo,$version) = @_; - make_clean($sbo,$version); + make_clean ($sbo,$version); print "Distcleaning for $sbo-$version...\n"; - my $location = get_sbo_location($sbo); - my @downloads = get_sbo_downloads($sbo,$location); + my $location = get_sbo_location ($sbo); + my @downloads = get_sbo_downloads ($sbo,$location); for my $dl (@downloads) { - my $filename = get_filename_from_link($dl); - unlink($filename) if -f $filename; + my $filename = get_filename_from_link ($dl); + unlink ($filename) if -f $filename; } return 1; } sub do_upgradepkg { - script_error('do_upgradepkg requires two arguments.') unless exists $_[1]; + script_error ('do_upgradepkg requires two arguments.') unless exists $_[1]; my ($sbo,$version) = @_; my $pkg; my $pkg_regex = qr/^(\Q$sbo\E-\Q$version\E-[^-]+-.*_SBo.t[xblg]z)$/; |