|
Packit |
857059 |
#!/usr/bin/perl
|
|
Packit |
857059 |
# BEGIN_ICS_COPYRIGHT8 ****************************************
|
|
Packit |
857059 |
#
|
|
Packit |
857059 |
# Copyright (c) 2015-2017, Intel Corporation
|
|
Packit |
857059 |
#
|
|
Packit |
857059 |
# Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
# modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
#
|
|
Packit |
857059 |
# * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
# this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
# * Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
# notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
# documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
# * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
# may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
# without specific prior written permission.
|
|
Packit |
857059 |
#
|
|
Packit |
857059 |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
#
|
|
Packit |
857059 |
# END_ICS_COPYRIGHT8 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# [ICS VERSION STRING: unknown]
|
|
Packit |
857059 |
use strict;
|
|
Packit |
857059 |
#use Term::ANSIColor;
|
|
Packit |
857059 |
#use Term::ANSIColor qw(:constants);
|
|
Packit |
857059 |
#use File::Basename;
|
|
Packit |
857059 |
#use Math::BigInt;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# =============================================================================
|
|
Packit |
857059 |
# The functions and constants below assist in using DEB files
|
|
Packit |
857059 |
my $rpm_check_dependencies = 1; # can be set to 0 to disable rpm_check_os_prereqs
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $RPM_ARCH=my_tolower("$ARCH");
|
|
Packit |
857059 |
my $RPM_KERNEL_ARCH = `uname -m`; # typically matches $RPM_ARCH
|
|
Packit |
857059 |
chomp $RPM_KERNEL_ARCH;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# return array of cmds for verification during init
|
|
Packit |
857059 |
sub rpm_get_cmds_for_verification()
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
return ("dpkg", "dpkg-deb", "dpkg-query");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_to_deb_option_trans($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my ($options) = shift();
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#Update option is not required for deb, remove it
|
|
Packit |
857059 |
$options =~ s/-U//g;
|
|
Packit |
857059 |
#Installation despite lacking dependencies should not be necessary on Ubuntu
|
|
Packit |
857059 |
$options =~ s/--nodeps/--force-depends/g;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return $options;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# version string for kernel used in RPM filenames uses _ instead of -
|
|
Packit |
857059 |
sub rpm_tr_os_version($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $osver = shift(); # uname -r style output
|
|
Packit |
857059 |
$osver =~ s/-/_/g;
|
|
Packit |
857059 |
return "$osver";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# translation from rpm package format to deb one
|
|
Packit |
857059 |
sub rpm_to_deb_pkg_trans($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my ($pkg) = shift(); # package name
|
|
Packit |
857059 |
$pkg =~ s/-devel/-dev/g;
|
|
Packit |
857059 |
return $pkg;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# Attribute translation
|
|
Packit |
857059 |
sub rpm_to_deb_attr_trans($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $attr = shift(); # attribute name: such as NAME or VERSION
|
|
Packit |
857059 |
if($attr eq 'RELEASE'){
|
|
Packit |
857059 |
$attr = 'Version';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if($attr eq 'NAME'){
|
|
Packit |
857059 |
$attr = 'Package';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if($attr eq 'VERSION'){
|
|
Packit |
857059 |
$attr = 'Version';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if($attr eq 'INSTALLPREFIX'){
|
|
Packit |
857059 |
# TODO: no equivalent in dpkg
|
|
Packit |
857059 |
$attr = '/usr/mpi';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return $attr;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# query a parameter of RPM tools themselves
|
|
Packit |
857059 |
sub rpm_query_param($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $param = shift(); # parameter name: such as _mandir, _sysconfdir, _target_cpu
|
|
Packit |
857059 |
my $ret = '';
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if($param eq 'arch'){
|
|
Packit |
857059 |
$ret = `dpkg --print-architecture`;
|
|
Packit |
857059 |
} elsif ($param eq '_mandir'){
|
|
Packit |
857059 |
$ret = '/usr/share/man';
|
|
Packit |
857059 |
} elsif ($param eq '_sysconfdir'){
|
|
Packit |
857059 |
$ret = '/etc';
|
|
Packit |
857059 |
} elsif ($param eq 'optflags'){
|
|
Packit |
857059 |
return "";
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
return "";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
chomp $ret;
|
|
Packit |
857059 |
return $ret;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# query an attribute of the RPM file
|
|
Packit |
857059 |
sub rpm_query_attr($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debfile = shift(); # .deb file
|
|
Packit |
857059 |
my $attr = shift(); # attribute name: such as NAME or VERSION
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$attr = rpm_to_deb_attr_trans($attr);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! -f "$debfile" ) {
|
|
Packit |
857059 |
return "";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $query = 'dpkg-deb --showformat=\'${'.$attr.'}\n\' --show '.$debfile.' 2>/dev/null';
|
|
Packit |
857059 |
my $val = `$query`;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return $val;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# query an attribute of the installed RPM package
|
|
Packit |
857059 |
sub rpm_query_attr_pkg($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package = shift(); # installed package
|
|
Packit |
857059 |
my $attr = shift(); # attribute name: such as NAME or VERSION
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$attr = rpm_to_deb_attr_trans($attr);
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $val = `dpkg-query --showformat='\${$attr}\n' --show $package 2>/dev/null`;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return $val;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# get name of deb package
|
|
Packit |
857059 |
sub rpm_query_name($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debfile = shift(); # .deb file
|
|
Packit |
857059 |
return rpm_query_attr($debfile, "Package");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# return NAME-VERSION-RELEASE.ARCH
|
|
Packit |
857059 |
sub rpm_query_full_name($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debfile = shift(); # .deb file
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! -f "$debfile" ) {
|
|
Packit |
857059 |
return "";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
my $var = `dpkg-deb --showformat='[\${Package}-\${Version}.\${Architecture}]' --show $debfile 2>/dev/null`;
|
|
Packit |
857059 |
return $var;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# get list of package debs installed
|
|
Packit |
857059 |
# the list could include multiple versions and/or multiple architectures
|
|
Packit |
857059 |
# and/or multiple kernel releases
|
|
Packit |
857059 |
# all entries in returned list are complete package names in the form:
|
|
Packit |
857059 |
# NAME-VERSION-RELEASE.ARCH
|
|
Packit |
857059 |
sub rpms_installed_pkg($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package=shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my @lines=();
|
|
Packit |
857059 |
my $cpu;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$cpu = rpm_get_cpu_arch($mode);
|
|
Packit |
857059 |
my $cmd = 'dpkg-query --showformat=\'${Package}:${Architecture}\' --show '.$package.' 2>/dev/null\n';
|
|
Packit |
857059 |
if ( "$mode" eq "any" ) {
|
|
Packit |
857059 |
DebugPrint($cmd."|");
|
|
Packit |
857059 |
open(debs, $cmd."|");
|
|
Packit |
857059 |
} elsif ("$mode" eq "user" || "$mode" eq "firmware") {
|
|
Packit |
857059 |
DebugPrint($cmd."|egrep '\.$cpu\$' 2>/dev/null\n");
|
|
Packit |
857059 |
open(debs, $cmd."|egrep '\.$cpu\$' 2>/dev/null|");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
# $mode is kernel rev, verify proper kernel version is installed
|
|
Packit |
857059 |
# for kernel packages, RELEASE is kernel rev
|
|
Packit |
857059 |
my $release = rpm_tr_os_version($mode);
|
|
Packit |
857059 |
DebugPrint($cmd."|egrep '-$release\.$cpu\$' 2>/dev/null\n");
|
|
Packit |
857059 |
open(debs, $cmd."|egrep '-$release\.$cpu\$' 2>/dev/null|");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
@lines=<debs>;
|
|
Packit |
857059 |
close(debs);
|
|
Packit |
857059 |
if ( $? != 0) {
|
|
Packit |
857059 |
# query command failed, package must not be installed
|
|
Packit |
857059 |
@lines=();
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
chomp(@lines);
|
|
Packit |
857059 |
DebugPrint("package $package $mode: installed: @lines\n");
|
|
Packit |
857059 |
return @lines;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# get list of package debs installed
|
|
Packit |
857059 |
# the list could include multiple versions and/or multiple architectures
|
|
Packit |
857059 |
# and/or multiple kernel releases
|
|
Packit |
857059 |
# all entries in returned list are complete package names in the form:
|
|
Packit |
857059 |
# NAME:ARCH
|
|
Packit |
857059 |
sub rpms_variations_installed_pkg($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package=shift();
|
|
Packit |
857059 |
my $mode = shift();
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my @result=();
|
|
Packit |
857059 |
|
|
Packit |
857059 |
@result = ( @result, rpms_installed_pkg($package, $mode) );
|
|
Packit |
857059 |
return @result;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_query_all($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package = shift();
|
|
Packit |
857059 |
my $filter = shift();
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $res=`dpkg --get-selections 2>/dev/null |grep -v '\sdeinstall\s'|grep -i '$package'|grep '$filter'`;
|
|
Packit |
857059 |
$res=~s/\n/ /g;
|
|
Packit |
857059 |
return $res;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# determine if rpm parameters will allow srpms to build debuginfo rpms
|
|
Packit |
857059 |
sub rpm_will_build_debuginfo()
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_query_version_release($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debfile = shift(); # .deb file
|
|
Packit |
857059 |
return rpm_query_attr($debfile, "VERSION");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# get VERSION-RELEASE of installed RPM package
|
|
Packit |
857059 |
sub rpm_query_version_release_pkg($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package = shift(); # installed package
|
|
Packit |
857059 |
return rpm_query_attr_pkg($package, "VERSION");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_get_cpu_arch($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
return rpm_query_param("arch");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $last_checked; # last checked for in rpm_is_installed
|
|
Packit |
857059 |
sub rpm_is_installed($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package = shift(); # package name
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $rc;
|
|
Packit |
857059 |
my $cpu;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ($user_space_only && "$mode" ne "user" && "$mode" ne "any") {
|
|
Packit |
857059 |
return 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$cpu = rpm_get_cpu_arch($mode);
|
|
Packit |
857059 |
if ("$mode" eq "any" ) {
|
|
Packit |
857059 |
# any variation is ok
|
|
Packit |
857059 |
my $cmd = "dpkg -l '$package' | egrep '^ii' > /dev/null 2>&1;;
|
|
Packit |
857059 |
DebugPrint $cmd."\n";
|
|
Packit |
857059 |
$rc = system($cmd);
|
|
Packit |
857059 |
$last_checked = "any variation";
|
|
Packit |
857059 |
} elsif ("$mode" eq "user" || "$mode" eq "firmware") {
|
|
Packit |
857059 |
# verify $cpu version or any is installed
|
|
Packit |
857059 |
my $cmd = "dpkg -l '$package' | egrep '^ii' 2>/dev/null|egrep '^$cpu\$|' >/dev/null 2>&1;;
|
|
Packit |
857059 |
DebugPrint $cmd."\n";
|
|
Packit |
857059 |
$rc = system $cmd;
|
|
Packit |
857059 |
$last_checked = "for $mode $cpu or noarch";
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
# $mode is kernel rev, verify proper kernel version is installed
|
|
Packit |
857059 |
# for kernel packages, RELEASE is kernel rev
|
|
Packit |
857059 |
my $release = rpm_tr_os_version($mode);
|
|
Packit |
857059 |
my $cmd = "dpkg --get-selections | grep $package.*'[%{VERSION}\\n]' | grep -v 'deinstall' 2>/dev/null|egrep '$release' >/dev/null 2>&1;;
|
|
Packit |
857059 |
DebugPrint $cmd."\n";
|
|
Packit |
857059 |
$rc = system $cmd;
|
|
Packit |
857059 |
$last_checked = "for kernel $release";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
DebugPrint("Checked if $package $mode is installed: ".(($rc==0)?"yes":"no")."\n");
|
|
Packit |
857059 |
return 0 == $rc;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_is_installed_list($@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- verifies any variation of package is installed
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach my $package ( @package_list )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if ( ! rpm_is_installed($package, $mode) ) {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return 1
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# return 0 on success, number of errors otherwise
|
|
Packit |
857059 |
sub rpm_check_os_prereqs_internal($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # default mode
|
|
Packit |
857059 |
my $message = shift();
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
my $err=0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! $rpm_check_dependencies ) {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
# Check installation requirements
|
|
Packit |
857059 |
DebugPrint "Checking prereqs $message: @package_list\n";
|
|
Packit |
857059 |
for my $package_info ( @package_list )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
# expand any alias in package_info
|
|
Packit |
857059 |
my $full_package_info="";
|
|
Packit |
857059 |
my @alternatives = (split ('\|',$package_info));
|
|
Packit |
857059 |
for my $altpackage_info ( @alternatives )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my ($package, $details) = (split (' ',$altpackage_info,2));
|
|
Packit |
857059 |
if ($details ne "") {
|
|
Packit |
857059 |
$details=" $details";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if ( "$full_package_info" ne "" ) {
|
|
Packit |
857059 |
$full_package_info = "$full_package_info|";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# expand "g77" alias for various fortran compilers
|
|
Packit |
857059 |
# and "libgfortran" alias for various fortran library
|
|
Packit |
857059 |
if ("$package" eq "g77" ) {
|
|
Packit |
857059 |
# on Ubuntu 17.04: gfortran
|
|
Packit |
857059 |
$full_package_info = "${full_package_info}gfortran$details";
|
|
Packit |
857059 |
} elsif ("$package" eq "libgfortran") {
|
|
Packit |
857059 |
# on Ubuntu 17.04: libgfortran
|
|
Packit |
857059 |
$full_package_info = "${full_package_info}libgfortran$details";
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
$full_package_info = "${full_package_info}$altpackage_info";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# now process the expanded list of alternatives
|
|
Packit |
857059 |
DebugPrint "Checking prereq: $full_package_info\n";
|
|
Packit |
857059 |
my $errmessage="";
|
|
Packit |
857059 |
@alternatives = (split ('\|',$full_package_info));
|
|
Packit |
857059 |
for my $altpackage_info ( @alternatives )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
DebugPrint "Checking prereq: $altpackage_info\n";
|
|
Packit |
857059 |
my ($package, $version, $pkgmode) = (split (' ',$altpackage_info));
|
|
Packit |
857059 |
if ("$pkgmode" eq "") {
|
|
Packit |
857059 |
$pkgmode = $mode;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
if (! rpm_is_installed($package, $pkgmode)) {
|
|
Packit |
857059 |
if ( $errmessage ne "") {
|
|
Packit |
857059 |
$errmessage="$errmessage\n OR ";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
$errmessage = "$errmessage$package ($last_checked)";
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
$errmessage="";
|
|
Packit |
857059 |
last;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if ( $errmessage ne "" ) {
|
|
Packit |
857059 |
if (scalar(@alternatives) > 1) {
|
|
Packit |
857059 |
$errmessage="$errmessage\n";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
NormalPrint("$errmessage is required$message\n");
|
|
Packit |
857059 |
$err++;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return $err;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_check_os_prereqs($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
no strict 'refs';
|
|
Packit |
857059 |
my $comp = shift();
|
|
Packit |
857059 |
my $mode = shift();
|
|
Packit |
857059 |
my $list_name;
|
|
Packit |
857059 |
my $array_ref;
|
|
Packit |
857059 |
my @rpm_list = {};
|
|
Packit |
857059 |
my $prereq_check = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! $rpm_check_dependencies ) {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$list_name=$comp."_prereq";
|
|
Packit |
857059 |
$array_ref = $comp_prereq_hash{$list_name};
|
|
Packit |
857059 |
#checking if prereq array exists
|
|
Packit |
857059 |
#it assumed that it has no prereqs it array does not exist
|
|
Packit |
857059 |
if ( $array_ref ) {
|
|
Packit |
857059 |
@rpm_list = @{ $array_ref };
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else{
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#checking whether each entry in rpm_list is installed
|
|
Packit |
857059 |
DebugPrint "Checking prereqs for $comp\n";
|
|
Packit |
857059 |
foreach (@rpm_list){
|
|
Packit |
857059 |
DebugPrint "Checking installation of $_\n";
|
|
Packit |
857059 |
#Don't check dependencies for kernel RPMS if their installation is skipped
|
|
Packit |
857059 |
if($user_space_only == 1){
|
|
Packit |
857059 |
if( "$_" =~ /kernel/ || "$_" =~ /kmod/ || "$_" eq "pciutils" ) {
|
|
Packit |
857059 |
DebugPrint("Skipping check for $_ \n");
|
|
Packit |
857059 |
next;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if(!rpm_is_installed($_, $mode)){
|
|
Packit |
857059 |
NormalPrint("--> $comp requires $_ \n");
|
|
Packit |
857059 |
$prereq_check = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return $prereq_check;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_check_build_os_prereqs($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift();
|
|
Packit |
857059 |
my $build_info = shift();
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
return rpm_check_os_prereqs_internal($mode, " to build $build_info", @package_list);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# uninstall all packages which match package partial name and filter
|
|
Packit |
857059 |
# returns 0 on sucess (or package not installed), != 0 on failure
|
|
Packit |
857059 |
sub rpm_uninstall_matches($$$;$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $name = shift(); # for use only in log messages
|
|
Packit |
857059 |
my $package = shift(); # part of package name
|
|
Packit |
857059 |
my $filter = shift(); # any additional grep filter
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$options = rpm_to_deb_option_trans($options);
|
|
Packit |
857059 |
my $rpms = rpm_query_all("$package", "$filter");
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( "$rpms" ne "" ) {
|
|
Packit |
857059 |
LogPrint "uninstalling $name: dpkg -r $options $rpms\n";
|
|
Packit |
857059 |
my $out =`dpkg -r $options $rpms 2>&1;;
|
|
Packit |
857059 |
my $rc=$?;
|
|
Packit |
857059 |
NormalPrint("$out");
|
|
Packit |
857059 |
if ($rc != 0) {
|
|
Packit |
857059 |
$exit_code = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return $rc;
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_run_install($$$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debfile = shift(); # .rpm file
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$options = rpm_to_deb_option_trans($options);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ($user_space_only && "$mode" ne "user" && "$mode" ne "any") {
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! -e $debfile ) {
|
|
Packit |
857059 |
NormalPrint "Not Found: $debfile $mode\n";
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $package = rpm_query_name($debfile);
|
|
Packit |
857059 |
my $fullname = rpm_query_full_name($debfile);
|
|
Packit |
857059 |
my $out;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
NormalPrint "installing ${fullname}...\n";
|
|
Packit |
857059 |
|
|
Packit |
857059 |
my $cmd = "dpkg -i $options $debfile";
|
|
Packit |
857059 |
LogPrint $cmd."\n";
|
|
Packit |
857059 |
$out=`$cmd 2>&1;;
|
|
Packit |
857059 |
if ( $? == 0 ) {
|
|
Packit |
857059 |
NormalPrint("$out");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
NormalPrint("ERROR - Failed to install $debfile\n");
|
|
Packit |
857059 |
NormalPrint("$out");
|
|
Packit |
857059 |
$exit_code = 1;
|
|
Packit |
857059 |
HitKeyCont;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# returns 0 on sucess (or package not installed), != 0 on failure
|
|
Packit |
857059 |
# uninstalls all variations of given package
|
|
Packit |
857059 |
sub rpm_uninstall($$$$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $package = shift(); # package name
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
my $verbosity = shift(); # verbose or silent
|
|
Packit |
857059 |
my @fullnames = rpms_variations_installed_pkg($package, $mode); # already adjusts mode
|
|
Packit |
857059 |
$options = rpm_to_deb_option_trans($options);
|
|
Packit |
857059 |
my $rc = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach my $fullname (@fullnames) {
|
|
Packit |
857059 |
if ( "$verbosity" ne "silent" ) {
|
|
Packit |
857059 |
print "Uninstalling ${fullname}...\n";
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
my $cmd = "dpkg -r $options $fullname";
|
|
Packit |
857059 |
LogPrint $cmd."\n";
|
|
Packit |
857059 |
my $out=`$cmd 2>&1;;
|
|
Packit |
857059 |
$rc |= $?;
|
|
Packit |
857059 |
NormalPrint("$out");
|
|
Packit |
857059 |
if ($rc != 0) {
|
|
Packit |
857059 |
$exit_code = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return $rc;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# resolve rpm package filename for $mode
|
|
Packit |
857059 |
# package_path is a glob style absolute or relative path to the package
|
|
Packit |
857059 |
# including the package name, but excluding package version, architecture and
|
|
Packit |
857059 |
# .rpm suffix
|
|
Packit |
857059 |
sub rpm_resolve($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debpath = shift();
|
|
Packit |
857059 |
my $mode = shift();
|
|
Packit |
857059 |
my $debfile;
|
|
Packit |
857059 |
my $cpu;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$package = rpm_to_deb_pkg_trans($package);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$cpu = rpm_get_cpu_arch($mode);
|
|
Packit |
857059 |
# we expect 0-1 match, ignore all other filenames returned
|
|
Packit |
857059 |
DebugPrint("Checking for User Deb: ${debpath}_*-*_${cpu}.deb\n");
|
|
Packit |
857059 |
$debfile = file_glob("${debpath}_*-*_${cpu}.deb");
|
|
Packit |
857059 |
if ( "$debfile" eq "" || ! -e "$debfile" ) {
|
|
Packit |
857059 |
# we expect 0-1 match, ignore all other filenames returned
|
|
Packit |
857059 |
DebugPrint("Checking for User Deb: ${debpath}_*-*.any.deb\n");
|
|
Packit |
857059 |
$debfile = file_glob("${debpath}_*-*.any.deb");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if ( "$debfile" eq "" || ! -e "$debfile" ) {
|
|
Packit |
857059 |
# we expect 0-1 match, ignore all other filenames returned
|
|
Packit |
857059 |
DebugPrint("Checking for User Deb: ${debpath}_*-*_all.deb\n");
|
|
Packit |
857059 |
$debfile = file_glob("${debpath}_*-*_all.deb");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
VerbosePrint("Resolved $debpath $mode: $debfile\n");
|
|
Packit |
857059 |
return $debfile;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_exists($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debpath = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- any variation found
|
|
Packit |
857059 |
my $debfile;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$debfile = rpm_resolve("$debpath", $mode);
|
|
Packit |
857059 |
return ("$debfile" ne "" && -e "$debfile")
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_install_with_options($$$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debpath = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my $options = shift(); # additional deb command options
|
|
Packit |
857059 |
my $debfile;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ($user_space_only && "$mode" ne "user" && "$mode" ne "any") {
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
$debfile = rpm_resolve("$debpath", $mode);
|
|
Packit |
857059 |
if ( "$debfile" eq "" || ! -e "$debfile" ) {
|
|
Packit |
857059 |
NormalPrint "Not Found: $debpath $mode\n";
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
rpm_run_install($debfile, $mode, $options);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# TBD - phase out this function (or get all callers to use same options)
|
|
Packit |
857059 |
sub rpm_install($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debpath = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
rpm_install_with_options($debpath, $mode, "");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# verify the rpmfiles exist for all the RPMs listed
|
|
Packit |
857059 |
sub rpm_exists_list($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debdir = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- any variation found
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach my $package ( @package_list )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (! rpm_exists("$debdir/$package", $mode) ) {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
sub rpm_install_list_with_options($$$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debdir = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach my $package ( @package_list )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
rpm_install_with_options("$debdir/$package", $mode, $options);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# TBD - phase out this function (or get all callers to use same options)
|
|
Packit |
857059 |
sub rpm_install_list($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $debdir = shift();
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
|
|
Packit |
857059 |
rpm_install_list_with_options($debdir, $mode, "", @package_list);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# debpath_list is a list of glob style absolute or relative path to the packages
|
|
Packit |
857059 |
# including the package name, but excluding package version, architecture and
|
|
Packit |
857059 |
# .deb suffix
|
|
Packit |
857059 |
sub rpm_install_path_list_with_options($@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
my @debpath_list = @_; # deb pathnames
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach my $debpath ( @debpath_list )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
rpm_install_with_options("$debpath", $mode, $options);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# debpath_list is a list of glob style absolute or relative path to the packages
|
|
Packit |
857059 |
# including the package name, but excluding package version, architecture and
|
|
Packit |
857059 |
# .deb suffix
|
|
Packit |
857059 |
# TBD - phase out this function (or get all callers to use same options)
|
|
Packit |
857059 |
sub rpm_install_path_list($@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- will install any variation found
|
|
Packit |
857059 |
my @debpath_list = @_; # deb pathnames
|
|
Packit |
857059 |
|
|
Packit |
857059 |
rpm_install_path_list_with_options($mode, "", @debpath_list);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# returns 0 on success (or rpms not installed), != 0 on failure
|
|
Packit |
857059 |
sub rpm_uninstall_list2($$$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
my $verbosity = shift(); # verbose or silent
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
my $package;
|
|
Packit |
857059 |
my $ret = 0; # assume success
|
|
Packit |
857059 |
|
|
Packit |
857059 |
foreach $package ( reverse(@package_list) )
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
$ret |= rpm_uninstall($package, $mode, $options, $verbosity);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return $ret;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# returns 0 on success (or rpms not installed), != 0 on failure
|
|
Packit |
857059 |
sub rpm_uninstall_list($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $verbosity = shift(); # verbose or silent
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
my $options = "";
|
|
Packit |
857059 |
return rpm_uninstall_list2($mode, $options, $verbosity, @package_list);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# uninstall all rpms which match any of the supplied package names
|
|
Packit |
857059 |
# and based on mode and distro/cpu,
|
|
Packit |
857059 |
# uninstall is done in a single command
|
|
Packit |
857059 |
# returns 0 on success (or rpms not installed), != 0 on failure
|
|
Packit |
857059 |
# Force to uninstall without any concern for dependency.
|
|
Packit |
857059 |
sub rpm_uninstall_all_list_with_options($$$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $options = shift(); # additional rpm command options
|
|
Packit |
857059 |
my $verbosity = shift(); # verbose or silent
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
return rpm_uninstall_list2($mode, $options, $verbosity, @package_list);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# uninstall all rpms which match any of the supplied package names
|
|
Packit |
857059 |
# and based on mode and distro/cpu.
|
|
Packit |
857059 |
# uninstall is done in a single command so dependency issues handled
|
|
Packit |
857059 |
# returns 0 on success (or rpms not installed), != 0 on failure
|
|
Packit |
857059 |
# # TBD - phase out this function (or get all callers to use same options)
|
|
Packit |
857059 |
sub rpm_uninstall_all_list($$@)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $mode = shift(); # "user" or kernel rev or "firmware"
|
|
Packit |
857059 |
# "any"- checks if any variation of package is installed
|
|
Packit |
857059 |
my $verbosity = shift(); # verbose or silent
|
|
Packit |
857059 |
my @package_list = @_; # package names
|
|
Packit |
857059 |
return rpm_uninstall_all_list_with_options($mode, "", $verbosity, (@package_list));
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# see if prereqs for building kernel modules are installed
|
|
Packit |
857059 |
# return 0 on success, 1 if missing dependencies
|
|
Packit |
857059 |
sub check_kbuild_dependencies($$)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $osver = shift(); # kernel rev
|
|
Packit |
857059 |
my $srpm = shift(); # what trying to build
|
|
Packit |
857059 |
my $dir = "/lib/modules/$osver/build";
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ( ! $rpm_check_dependencies ) {
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if ( ! -d "$dir/scripts" ) {
|
|
Packit |
857059 |
NormalPrint "Unable to build $srpm: $dir/scripts: not found\n";
|
|
Packit |
857059 |
NormalPrint "linux-source or linux-headers-generic is required to build $srpm\n";
|
|
Packit |
857059 |
return 1; # failure
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
# see if basic prereqs for building RPMs are installed
|
|
Packit |
857059 |
# return 0 on success, or number of missing dependencies
|
|
Packit |
857059 |
sub check_rpmbuild_dependencies($)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
my $srpm = shift(); # what trying to build
|
|
Packit |
857059 |
my $err = 0;
|
|
Packit |
857059 |
if (! rpm_is_installed("devscripts", "any")) {
|
|
Packit |
857059 |
NormalPrint("devscripts is required to build $srpm\n");
|
|
Packit |
857059 |
$err++;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|