use warnings;
use IPC::Open2;
use Cwd;
+use constant DOCKER => -e '/.dockerenv';
my $pwd = getcwd();
# how to run poldek
my @ignore = qw(vserver-packages python-devel-src);
-my @poldek = (qw(sudo poldek -n th-x86_64-ready), "--cachedir=$pwd/poldekcache",
- "--skip-installed", "--conf=$pwd/poldekconf/poldek.conf",
+my @poldek;
+if (DOCKER) {
+ push(@poldek, qw[poldek]);
+} else {
+ push(@poldek, qw[sudo poldek -n th-x86_64-ready],
+ "--cachedir=$pwd/poldekcache",
+ "--conf=$pwd/poldekconf/poldek.conf",
+ );
+}
+push(@poldek, (
+ "--skip-installed",
"-O", "ignore=" . (join " ", @ignore)
-);
+));
# if multiple packages provide some funcionality those will be selected:
my %preferred = (
# for m4 in *.m4; do R=$(rpm -qf $m4); R=${R%-*-*}; \
# awk -vr=$R '/^\s*(AC_DEFUN|AU_ALIAS)/ { gsub(/\].*/,""); gsub(/.*\[/,""); print r " " $0}' $m4; \
# done | sort | awk '{print "\t\"" $2 "\" => \"" $1 "\","}'
-my %ac2br = do "findbr-ac2br";
+my %ac2br = do (DOCKER ? './cleanbuild/findbr-ac2br' : './findbr-ac2br');
my %cmake2br = (
"findkde4:44" => "kde4-kdelibs",
sub poldek_cmd
{
my $cmd = shift;
+
warn "Poldek: $cmd\n";
- my $pid = open( READ, "-|", @poldek, "--shcmd=".$cmd );
- my @read = <READ>;
- close READ;
+ my @cmd = (@poldek, "--shcmd=".$cmd);
+ open my $fh, '-|', @cmd or die "$!: @cmd";
+ my @read = <$fh>;
+ close $fh or die $!;
- return @read if wantarray;
- return \@read;
+ return wantarray ? @read : \@read;
}
my $check_ac = 0;
warn "Looking for docbook file $db\n";
poldek_file( "/usr/share/sgml/*/$db" );
}
+ if (m{Could not find HTML docbook.xsl}) {
+ add_br("docbook-style-xsl");
+ }
if ( m{LaTeX Error: File `(\S+)' not found} ) {
my $tex = $1;
if ( m{configure: error: C\+\+ compiler cannot create executables} ) {
add_br( "libstdc++-devel", "maybe try: %undefine\t__cxx" );
}
+ if ( m{ccache: error: Could not find compiler ".+-g\+\+" in PATH}) {
+ add_br("libstdc++-devel");
+ }
if ( m{configure: error: XML::Parser perl module is required for intltool} ) {
add_br( "perl-XML-Parser" );
}
poldek_file( "/usr/bin/$exec", "/bin/$exec" );
}
}
+
+
+ if (
+ m{Could not find (\S+)}
+ ) {
+ my $exec = $1;
+ poldek_file("/usr/bin/$exec", "/bin/$exec" );
+ }
}