#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build ':rpm'; use Build::Susetags; use Getopt::Long; use File::Path qw(mkpath); use strict; Getopt::Long::Configure("no_ignore_case"); my $opt_zypp; my $cachedir = "/var/cache/build"; GetOptions ("zypp=s" => \$opt_zypp, "cachedir=s" => \$cachedir) or exit(1); for my $url (@ARGV) { # XXX: use descrdir/datadir from content file my $descrdir = 'suse/setup/descr'; my $datadir = 'suse'; my $dir; my $baseurl = $url; if ($opt_zypp) { $dir = $opt_zypp; } elsif ($url =~ /^(?:ftps?|https?):\/\/([^\/]*)\/?/) { my $repoid = Digest::MD5::md5_hex($url); $dir = "$cachedir/$repoid/"; $baseurl .= '/' unless $baseurl =~ /\/$/; mkpath($dir); system("$INC[0]/download", "$dir/", "${baseurl}$descrdir/packages.gz"); $descrdir = '.'; } else { $dir = $url; } $dir .= '/' unless $dir =~ /\/$/; $baseurl .= '/' unless $baseurl =~ /\/$/; my $packages = "$dir$descrdir/packages"; $packages = "$packages.gz" if ! -e $packages && -e "$packages.gz"; Build::Susetags::parse($packages, sub { my $xurl = $baseurl; # multi cd support hack $xurl =~ s/1\/$/$_[0]->{'medium'}/ if $_[0]->{'medium'}; $xurl .= "$datadir/" if $datadir; Build::writedeps(\*STDOUT, $_[0], $xurl); }, 'addselfprovides' => 1); }