#!/usr/bin/perl $version=shift; if($version eq "") { $version="14.2"; } $fixflags="fix_flags_libdir.pl.$version"; $package=`pwd`; chop($package); $package=substr($package,rindex($package,'/')+1); if($0 =~ m/\//) { $pdir=substr($0,0,rindex($0,'/')); } else { $pdir="."; } #print "PACKAGE=$package, DIR=$pdir\n"; sub FixTMP { my ($file,$tmpdir)=@_; my ($b,$ob,$tofix); $tofix=1; if(open(K,"$file")) { $b=""; $ob=""; while() { $ob.=$_; s| /tmp| \$TMP|g; if($tofix && m|TMP/$tmpdir/|i) { if(m/^if /) { $tofix=0; } else { ($pk)=m|(\$TMP/$tmpdir/\S+)|i; $_="if [ -f $pk ]; then\n $_"."fi\n"; } } $b.=$_; } close(K); rename("$file","$file.tmp"); system("cp -p $file.tmp $file"); unlink("$file.tmp"); if(open(K,">$file")) { print K $b; close(K); } } } sub PatchDiff { my $file=shift; my $file2=shift; my $patched=0; if(!open(P,"$pdir/$file")) { $file=$file2; } else { close(P); } if(open(P,"$pdir/$file")) { #diff -ur slackware64-14.2/extra/source/java/java.SlackBuild slackware64-14.2.patcharm/extra/source/java/java.SlackBuild #--- slackware64-14.2/extra/source/java/java.SlackBuild 2012-08-02 17:50:43.000000000 +0200 #+++ slackware64-14.2.patcharm/extra/source/java/java.SlackBuild 2017-12-16 18:59:30.141729054 +0100 $buffer=""; $go=0; open(W,"|patch -p0") if(!$ENV{DRYRUN}); while(

) { if(m/^diff/) { ($diff,$opts,$source,$dest)=split(' '); $pack=substr($source,0,rindex($source,'/')); $pack=substr($pack,rindex($pack,'/')+1); if($pack eq $package) { $go=1; $subpack=$pack; $subpack=~s/\+/\\+/g; $patched++; } else { $go=0; } } if($go) { if($go<=3) { s| \S+/$subpack/| |g; } if($ENV{DRYRUN}) { print $_; } else { print W $_; } $go++; } } close(P); close(W) if(!$ENV{DRYRUN}); } else { print STDERR "** WARNING: could not open diff file $file: $!\n"; } return($patched); } $patchpatch=PatchDiff("slackware64-${version}_patches.diff"); if($patchpatch==0) { PatchDiff("slackware64-${version}_fix.diff"); PatchDiff("slackware64-${version}_arm-ppc-mips-s390.diff","slackware64-${version}_arm-ppc-mips-riscv-s390.diff"); PatchDiff("slackware64-${version}_bootstrap.diff"); } if($package eq "parted") { system("$pdir/$fixflags *.SlackBuild.static"); } if($package eq "sendmail") { system("$pdir/$fixflags SlackBuild-sendmail"); } if($package eq "tidy" || $package eq "linuxdoc-tools") { system("$pdir/$fixflags *.build"); } if(-f "x11-build-script.sh") { system("$pdir/$fixflags x11-build-script.sh"); } if(-f "x11.SlackBuild" || -f "x11-build-script.sh") { # If $TMP is set, x11 package is build under $TMP, not $TMP/x11-build. Add the check on patches. FixTMP("$package.SlackBuild","x11-build"); } if(-f "kde.options" || -f "KDE.options") { system("$pdir/$fixflags kde.options"); system("$pdir/$fixflags KDE.options"); # If $TMP is set, KDE build under $TMP, not $TMP/kde_build. Add the check on patches. FixTMP("$package.SlackBuild","kde_build"); } if($patchpatch==0) { PatchDiff("slackware64-${version}_cross32.diff"); } system("$pdir/$fixflags *.SlackBuild"); #$file="$package.SlackBuild"; #if(! -f $file) { # $file=`\\ls *.SlackBuild|head -1`; #}