From a52e56269f43d209e99eafb82d4347203d92de68 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 26 Nov 2020 13:17:13 -0500 Subject: mkslackinfo: stop double-downloading the source, make the build type detection actually work --- mkslackinfo | 76 +++++++++++++++++++++++++++---------------------------------- 1 file changed, 33 insertions(+), 43 deletions(-) diff --git a/mkslackinfo b/mkslackinfo index 0f37b49..bf9947f 100755 --- a/mkslackinfo +++ b/mkslackinfo @@ -18,7 +18,7 @@ sub usage { } sub get_build_command { - %buildcmds = { + %buildcmds = ( 'autoconf' => <<'EOF', CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ @@ -60,29 +60,31 @@ make make test make install DESTDIR=$PKG EOF - }; + ); - my $cmd = $buildcmd{autoconf}; - # if it ain't a tar file, just return the default - return $cmd unless $tar; + my $cmd = $buildcmds{autoconf}; my ($file, $tar) = @_; + # if it ain't a tar file, just return the default + return $cmd unless $tar; - # look only at the 2nd level dir (e.g. foo-1.2.3/configure.ac) - open my $f, "tar tf $file --wildcards */* |" or return $cmd; + open my $f, "tar tf $file |" or return $cmd; while(<$f>) { chomp; + # look only at the 2nd level dir (e.g. foo-1.2.3/configure.ac) + next if m,.*/.*/,; + warn "looking at file $_\n"; if(/^\bconfigure\.(ac|in)$/) { - $cmd = $buildcmd{autoconf}; + $cmd = $buildcmds{autoconf}; last; } elsif(/\bCMakeLists\.txt$/) { - $cmd = $buildcmd{cmake}; + $cmd = $buildcmds{cmake}; last; } elsif(/\bsetup\.py$/) { - $cmd = $buildcmd{python}; + $cmd = $buildcmds{python}; last; } elsif(/\bMakefile\.PL$/) { - $cmd = $buildcmd{python}; + $cmd = $buildcmds{perl}; last; } } @@ -117,6 +119,8 @@ $homepage = shift; if(!$homepage) { if($url =~ m{http://downloads.(?:sourceforge|sf).net/([^/]+)/}) { $homepage = "http://sourceforge.net/projects/$1/"; + } elsif($url =~ m,https://github\.com/[^/]*/[^/]*/,) { + $homepage = $&; } elsif($url =~ m,((?:ht|f)tp://[^/]+/),) { $homepage = $1; } else { @@ -137,6 +141,23 @@ if(!$version) { } } +print STDERR "Downloading $url..."; +if($url =~ /sourceforge\.net/i) { + $extra_wget_params = "--user-agent wget"; +} else { + $extra_wget_params = "--referer='$url'"; +} + +system("wget $extra_wget_params $url"); + +if(open $f, "<$file") { + $md5 = Digest::MD5->new->addfile($f)->hexdigest; + close $f; +} else { + warn "Can't find downloaded file '$file', MD5SUM will be wrong in .info\n"; + $md5 = "FIXME"; +} + if(not -e "$package.SlackBuild") { warn "$package.SlackBuild does not exist, creating from template\n"; $buildcmd = get_build_command($file, $tar); @@ -159,16 +180,6 @@ if((-e "README") && (! -e "slack-desc")) { system("mkslackdesc"); } -print STDERR "Downloading $url..."; -$content = get($url); -if($content) { - $md5 = md5_hex($content); - print STDERR "OK\nWriting $package.info\n"; -} else { - warn "Can't download $url with LWP::Simple, MD5SUM will be wrong in .info\n"; - $md5 = "FIXME"; -} - open $f, ">$package.info" or die $!; $content = < /dev/null || true -- cgit v1.2.3