Hello community,

here is the log from the commit of package suse-module-tools for 
openSUSE:Factory checked in at 2014-04-05 16:49:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suse-module-tools (Old)
 and      /work/SRC/openSUSE:Factory/.suse-module-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "suse-module-tools"

Changes:
--------
--- /work/SRC/openSUSE:Factory/suse-module-tools/suse-module-tools.changes      
2014-03-18 13:38:11.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.suse-module-tools.new/suse-module-tools.changes 
2014-04-05 16:49:59.000000000 +0200
@@ -1,0 +2,12 @@
+Mon Mar 31 09:11:16 UTC 2014 - [email protected]
+
+- Use softdep to order {u,o,e}hci-hcd drivers.
+- Drop ia64 modprobe config.
+
+-------------------------------------------------------------------
+Fri Mar 28 14:25:25 UTC 2014 - [email protected]
+
+- Add kmp-install tool for easier installation of SolidDriver KMPs
+  (fate#314581).
+
+-------------------------------------------------------------------
@@ -19,0 +32,5 @@
+
+-------------------------------------------------------------------
+Fri Feb  7 13:05:20 UTC 2014 - [email protected]
+
+- load the uas driver simulsimultaneously with the usb_storage driver and vice 
versa (bnc#862397)

New:
----
  kmp-install

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ suse-module-tools.spec ++++++
--- /var/tmp/diff_new_pack.9nLbSt/_old  2014-04-05 16:50:00.000000000 +0200
+++ /var/tmp/diff_new_pack.9nLbSt/_new  2014-04-05 16:50:00.000000000 +0200
@@ -38,6 +38,7 @@
 Source7:        driver-check.sh
 Source8:        suse-module-tools.rpmlintrc
 Source9:        modsign-verify
+Source10:       kmp-install
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -80,6 +81,7 @@
 # modsign-verify for verifying module signatures
 install -d -m 755 "$b/usr/bin"
 install -pm 755 %_sourcedir/modsign-verify "$b/usr/bin/"
+install -pm 755 %_sourcedir/kmp-install "$b/usr/bin/"
 
 %post
 test_allow_on_install()
@@ -144,6 +146,7 @@
 %dir               /etc/depmod.d
 %config            /etc/depmod.d/00-system.conf
 %_docdir/module-init-tools
+/usr/bin/kmp-install
 /usr/bin/modsign-verify
 /usr/lib/module-init-tools
 

++++++ kmp-install ++++++
#!/usr/bin/perl
#
# KMP-INSTALL: Install specified kernel module packages and automatically
#              remove packages providing same-named modules.
#
# Copyright (c) 2014 SUSE
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

use strict;
use warnings;

use IO::Handle;
use File::Find;

my @zypper_cmd = qw(zypper);

sub print_help {
        print
"Usage: $0 [options] <package> ...
Installs given packages and removes any KMPs that contain conficting module
names. Run 'zypper help install' for the list of valid options. Additionally,
the options --non-interactive and --non-interactive-include-reboot-patches
can be used\n";
}

sub add_package {
        my ($list, $attr) = @_;

        return unless $attr->[0] =~ /-kmp-/;
        my $new = {
                name =>    $attr->[0],
                version => $attr->[1],
                arch =>    $attr->[2],
        };
        $new->{repo} = $attr->[3] if defined($attr->[3]);
        # old-version -> new-version
        $new->{version} =~ s/.*->\s*//;
        push(@$list, $new);
}

sub add_module {
        my ($package, $path) = @_;

        return unless $path =~ m@^/lib/modules/([^/]+)/.*/([^/]+\.ko)$@;
        my ($version, $name) = ($1, $2);
        $name =~ s/-/_/g;
        $package->{modules} ||= [];
        push(@{$package->{modules}}, "$version/$name");
}

sub query_installed_kmps {
        my $res = shift;
        my %seen;

        open(my $pipe, '-|', "rpm", "-qa", "--qf", '[%{n} %{v} %{r} %{arch} 
%{filenames}\n]', "*-kmp-*");
        while (<$pipe>) {
                chomp;
                my ($n, $v, $r, $a, $file) = split(' ');
                next unless $file =~ m@^/lib/modules/.*/.*/.*\.ko$@;
                my $nvra = "$n-$v-$r.$a";
                if (!exists($seen{$nvra})) {
                        add_package($res, [$n, "$v-$r", $a]);
                        $seen{$nvra} = $res->[$#$res];
                }
                add_module($seen{$nvra}, $file);
        }
}


sub fetch_packages {
        my $interactive = shift;
        my $new_pkgs = shift;
        my $remove_pkgs = shift;

        my @cmd = @zypper_cmd;
        push(@cmd, "--non-interactive") if !$interactive;
        push(@cmd, qw(-vv install --download-only));
        push(@cmd, @_);
        pipe(READ, WRITE);
        my $pid = fork();
        if (!$pid) {
                # child
                close(READ);
                open(STDOUT, ">&WRITE");
                if (!$interactive) {
                        open(NULL, '<', "/dev/null");
                        open(STDIN, "<&NULL");
                        close(NULL);
                        open(NULL, '>', "/dev/null");
                        open(STDERR, ">&NULL");
                        close(NULL);
                }
                exec(@cmd);
        }
        # parent
        close(WRITE);
        my ($len, $buf, $last_line);
        my ($state, @cur_pkg);
        $state = 0;
        $last_line = "";
        my $list;
        STDOUT->autoflush(1);
        while (($len = sysread(READ, $buf, 4096))) {
                print $buf if $interactive;
                my @lines = split(/\n/, $buf, -1);
                $lines[0] = $last_line . $lines[0];
                # XXX: Assumes that the very last line is terminated by \n
                $last_line = pop(@lines);
                for my $l (@lines) {
                        if ($state == 0 && $l =~ /^The following.* package.* 
going to be (installed|upgraded|downgraded|REMOVED):/) {
                                if ($1 eq "REMOVED") {
                                        $list = $remove_pkgs;
                                } else {
                                        $list = $new_pkgs;
                                }
                                $state = 1;
                                next;
                        }
                        next unless $state == 1;
                        if ($l eq "") {
                                $state = 0;
                                if (@cur_pkg) {
                                        add_package($list, \@cur_pkg);
                                }
                                @cur_pkg = ();
                                next;
                        }
                        $l =~ s/ *$//;
                        if ($l =~ /^[^ ]/) {
                                if (@cur_pkg) {
                                        add_package($list, \@cur_pkg);
                                }
                                @cur_pkg = ($l);
                        }
                        if ($l =~ /^ /) {
                                $l =~ s/^ *//;
                                push(@cur_pkg, $l);
                        }
                }
        }
        STDOUT->autoflush(0);
        close(READ);
        waitpid($pid, 0);
        return $?;
}

my %repo_cache;
sub get_repo_cache {
        my $name = shift;
        my $res;

        if (exists($repo_cache{$name})) {
                return $repo_cache{$name};
        }
        open(my $pipe, '-|', "zypper", "repos", $name);
        while (<$pipe>) {
                chomp;
                if (m@^MD Cache Path\s*:\s*(/.*)@) {
                        $res = $1;
                        $res =~ s:/raw/:/packages/:;
                        $res =~ s/\s*$//;
                }
        }
        close($pipe);
        $repo_cache{$name} = $res;
        return $res;
}

sub find_fetched {
        my $packages = shift;
        my %local_packages;

        for $a (@_) {
                if ($a =~ /\.rpm$/ && -e $a) {
                        open(my $pipe, '-|', "rpm", "-qp", "--qf",
                                '%{n}-%{v}-%{r}.%{arch}', $a);
                        my $nvra = <$pipe>;
                        close($pipe);
                        if (defined($nvra)) {
                                $local_packages{$nvra} = $a;
                        }
                }
        }
        for my $p (@$packages) {
                my $nvra = "$p->{name}-$p->{version}.$p->{arch}";
                if ($p->{repo} eq "Plain RPM files cache") {
                        if (exists($local_packages{$nvra})) {
                                $p->{path} = $local_packages{$nvra};
                        } else {
                                print STDERR "Cannot find package $p->{name}\n";
                        }
                        next;
                }
                my $dir = get_repo_cache($p->{repo});
                if (!$dir) {
                        print STDERR "Cannot find zypp cache for repository 
$p->{repo} (package $p->{name})\n";
                        next;
                }
                my $file = "$nvra.rpm";
                my $wanted = sub {
                        $p->{path} = $File::Find::name if $_ eq $file;
                };
                find($wanted, $dir);
                if (!$p->{path}) {
                        print STDERR "Cannot find $file in zypp cache ($dir)\n";
                        next;
                }
        }
        for my $p (@$packages) {
                next unless $p->{path};
                open(my $pipe, '-|', "rpm", "-qlp", $p->{path});
                my @files = <$pipe>;
                close($pipe);
                for my $f (@files) {
                        add_module($p, $f);
                }
        }
}

# treat -n, --non-interactive, -0 and --non-interactive-include-reboot-patches
# as global zypper options
my @save_argv = @ARGV;
@ARGV=();
for my $a (@save_argv) {
        if ($a =~ /^-(h|-help)$/) {
                print_help();
                exit 0;
        } elsif ($a =~ /^-(n$|-non-interactive$|0$|-non-interactive-)/) {
                push(@zypper_cmd, $a);
        } else {
                push(@ARGV, $a);
        }
}
if (!@ARGV) {
        print_help();
        exit 1;
}

print "Fetching packages\n";
my (@new_pkgs, @remove_pkgs, @installed_pkgs);
my $ret = fetch_packages(0, \@new_pkgs, \@remove_pkgs, @ARGV);
if ($ret != 0) {
        print "zypper returned an error, retrying in interactive mode\n";
        @new_pkgs = ();
        @remove_pkgs = ();
        $ret = fetch_packages(1, \@new_pkgs, \@remove_pkgs, @ARGV);
}
if ($ret != 0) {
        exit 1;
}
find_fetched(\@new_pkgs, @ARGV);
query_installed_kmps(\@installed_pkgs);

# Do not check packages to be updated/removed for module conflicts
my (%new_pkgs, %remove_pkgs);
for my $p (@remove_pkgs) {
        my $nvra = "$p->{name}-$->{version}.$p->{arch}";
        $remove_pkgs{$nvra} = 1;
}
for my $p (@new_pkgs) {
        $new_pkgs{$p->{name}} = 1;
}
my @tmp = @installed_pkgs;
@installed_pkgs = ();
for my $p (@tmp) {
        my $nvra = "$p->{name}-$->{version}.$p->{arch}";
        next if $new_pkgs{$p->{name}} || $remove_pkgs{$nvra};
        push(@installed_pkgs, $p);
}

# check for conflicts
my %new_modules;
for my $p (@new_pkgs) {
        next unless $p->{modules};
        for my $m (@{$p->{modules}}) {
                $new_modules{$m} = $p->{name};
        }
}
my @conflicting_pkgs;
for my $p (@installed_pkgs) {
        next unless $p->{modules};
        for my $m (@{$p->{modules}}) {
                next unless exists($new_modules{$m});
                print "Package $p->{name} conflicts with new package 
$new_modules{$m}\n";
                push(@conflicting_pkgs, $p);
                last;
        }
}

# Install new packages, removing conflicting installed packages
my @cmd = (@zypper_cmd, "install", @ARGV);
for my $p (@conflicting_pkgs) {
        push(@cmd, "!$p->{name}.$p->{arch}=$p->{version}");
}
print join(" ", "Running", @cmd), "\n";
if (system(@cmd) != 0) {
        exit 1;
}
exit 0;
++++++ modprobe.conf.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/modprobe.conf/modprobe.conf.common 
new/modprobe.conf/modprobe.conf.common
--- old/modprobe.conf/modprobe.conf.common      2012-05-10 21:51:48.000000000 
+0200
+++ new/modprobe.conf/modprobe.conf.common      2014-03-31 11:07:01.000000000 
+0200
@@ -68,8 +68,8 @@
 # mkinitrd hints:
 # SUSE INITRD: uhci-hcd REQUIRES ehci-hcd
 # SUSE INITRD: ohci-hcd REQUIRES ehci-hcd
-install uhci-hcd /sbin/modprobe ehci-hcd; /sbin/modprobe --ignore-install 
uhci-hcd
-install ohci-hcd /sbin/modprobe ehci-hcd; /sbin/modprobe --ignore-install 
ohci-hcd
+softdep uhci-hcd pre: ehci-hcd
+softdep ohci-hcd pre: ehci-hcd
 
 # libcrc32c calls crypto_alloc_shash("crc32c", 0, 0), which results in a
 # request_module("crc32c"), but that dependency is not seen by modpost/depmod
@@ -87,4 +87,8 @@
 # triggering udev timeouts (bnc#760274).
 options ch init=0
 
+# uas devices can be unpredictably a fallback for both drivers must be present
+softdep usb_storage pre: uas
+softdep uas pre: usb_storage
+
 # end of common part for modprobe.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/modprobe.conf/modprobe.conf.ia64 
new/modprobe.conf/modprobe.conf.ia64
--- old/modprobe.conf/modprobe.conf.ia64        2012-06-25 22:23:13.000000000 
+0200
+++ new/modprobe.conf/modprobe.conf.ia64        1970-01-01 01:00:00.000000000 
+0100
@@ -1,19 +0,0 @@
-# begin of ia64 part for modprobe.conf
-
-alias parport_lowlevel    parport_pc
-# disable DMA for parallel port (bnc#180390)
-# Please note, the dma= and irq= options require that the io= option also be
-# specified.
-options parport_pc dma=none
-# options parport_pc io=0x378 irq=none
-# If you have multiple parallel ports, specify them this way:
-# options parport_pc io=0x378,0x278  irq=none,none
-
-alias xp0 xpnet
-install xpnet /sbin/modprobe xpc && /sbin/modprobe --ignore-install xpnet
-
-# QEMU/KVM can handle ACPI Hotplugging
-alias dmi:bvnQEMU:bvrQEMU:* acpiphp
-
-# end of ia64 part for modprobe.conf
-

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to