Hello community,
here is the log from the commit of package mksusecd for openSUSE:Factory checked in at 2016-08-13 18:30:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mksusecd (Old)
and /work/SRC/openSUSE:Factory/.mksusecd.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mksusecd"
Changes:
--------
--- /work/SRC/openSUSE:Factory/mksusecd/mksusecd.changes 2016-08-03 11:45:30.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.mksusecd.new/mksusecd.changes 2016-08-13 18:30:59.000000000 +0200
@@ -1,0 +2,9 @@
+Fri Aug 12 15:00:21 UTC 2016 - snwint@suse.com
+
+- extended help text and added some small fixes
+- fix choosing an add-on name
+- be less restrictive when generating add-on aliases
+- support creating add-ons on the target iso (bsc#991935)
+- 1.42
+
+-------------------------------------------------------------------
Old:
----
mksusecd-1.41.tar.xz
New:
----
mksusecd-1.42.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mksusecd.spec ++++++
--- /var/tmp/diff_new_pack.oj6DZE/_old 2016-08-13 18:30:59.000000000 +0200
+++ /var/tmp/diff_new_pack.oj6DZE/_new 2016-08-13 18:30:59.000000000 +0200
@@ -18,7 +18,7 @@
Name: mksusecd
-Version: 1.41
+Version: 1.42
Release: 0
Summary: Create SUSE Linux installation ISOs
License: GPL-3.0+
@@ -28,6 +28,7 @@
BuildRequires: libuuid-devel
BuildRequires: xz
Requires: checkmedia
+Requires: createrepo
Requires: dosfstools
Requires: genisoimage
Requires: gpg2
++++++ mksusecd-1.41.tar.xz -> mksusecd-1.42.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.41/VERSION new/mksusecd-1.42/VERSION
--- old/mksusecd-1.41/VERSION 2016-08-02 14:31:06.000000000 +0200
+++ new/mksusecd-1.42/VERSION 2016-08-12 16:56:20.000000000 +0200
@@ -1 +1 @@
-1.41
+1.42
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.41/changelog new/mksusecd-1.42/changelog
--- old/mksusecd-1.41/changelog 2016-08-02 14:31:06.000000000 +0200
+++ new/mksusecd-1.42/changelog 2016-08-12 16:56:20.000000000 +0200
@@ -1,3 +1,9 @@
+2016-08-12: 1.42
+ - extended help text and added some small fixes
+ - fix choosing an add-on name
+ - be less restrictive when generating add-on aliases
+ - support creating add-ons on the target iso (bsc #991935)
+
2016-08-02: 1.41
- catch error when we fail to unpack squashfs images
- handle modules.order and modules.builtin when updating a kernel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.41/mksusecd new/mksusecd-1.42/mksusecd
--- old/mksusecd-1.41/mksusecd 2016-08-02 14:31:06.000000000 +0200
+++ new/mksusecd-1.42/mksusecd 2016-08-12 16:56:20.000000000 +0200
@@ -157,6 +157,7 @@
sub rerun_mkisofs;
sub run_isohybrid;
sub run_isozipl;
+sub run_createrepo;
sub isols;
sub find_magic;
sub meta_iso;
@@ -192,6 +193,8 @@
sub build_module_list;
sub add_modules_to_initrd;
sub replace_kernel_mods;
+sub new_products_xml;
+sub prepare_addon;
my %config;
my $sudo;
@@ -227,6 +230,10 @@
my @opt_kernel_modules;
my $opt_arch;
my $opt_new_boot_entry;
+my @opt_addon_packages;
+my $opt_addon_name;
+my $opt_addon_alias;
+my $opt_addon_prio = 60;
GetOptions(
'create|c=s' => sub { $opt_create = 1; $opt_dst = $_[1] },
@@ -273,6 +280,10 @@
'modules=s{1,}' => \@opt_kernel_modules,
'arch=s' => \$opt_arch,
'add-entry=s' => \$opt_new_boot_entry,
+ 'addon=s{1,}' => \@opt_addon_packages,
+ 'addon-name=s' => \$opt_addon_name,
+ 'addon-alias=s' => \$opt_addon_alias,
+ 'addon-prio=i' => \$opt_addon_prio,
'save-temp' => \$opt_save_temp,
'verbose|v' => sub { $opt_verbose++ },
'version' => sub { print "$VERSION\n"; exit 0 },
@@ -383,11 +394,13 @@
if(!@sources) {
my $msg = "no sources - nothing to do\n";
- $msg .= "Maybe you forgot '--' after --kernel or --modules?\n" if @opt_kernel_rpms || @opt_kernel_modules;
+ if(@opt_kernel_rpms || @opt_kernel_modules || @opt_addon_packages) {
+ $msg .= "Maybe you forgot '--' after --kernel, --modules, or --addon?\n";
+ }
die $msg;
}
- $files = build_filelist;
+ build_filelist \@sources;
$boot = analyze_boot;
get_initrd_format;
if($opt_sign && (
@@ -404,6 +417,9 @@
$add_initrd = create_initrd;
update_kernel_initrd;
update_boot_options;
+
+ prepare_addon;
+
sign_content if update_content;
$todo = build_todo;
set_mkisofs_metadata;
@@ -538,6 +554,18 @@
instead. MODULE_LIST may be space or comma separated.
Note: this option takes a variable number of arguments. So
it may be necessary to terminate the arg list with '--'.
+ --addon RPM_LIST A list of RPMs that should be made available as an add-on to
+ the main product.
+ Note: this option takes a variable number of arguments. So
+ it may be necessary to terminate the arg list with '--'.
+ See Add-on notes below.
+ --addon-name NAME Use NAME as the add-on name.
+ If unset, the auto-generated name 'Add-On NUM' is used, with NUM
+ set to the smallest number that avoids name conflicts.
+ --addon-alias ALIAS Set repo alias to ALIAS.
+ If unset, an alias based on the repo name is generated.
+ --addon-prio NUM Set add-on repository priority to NUM; lower NUM means higher
+ priority (default: 60).
--grub2 Use grub2 for El-Torito legacy setup (for debugging).
--isolinux Use isolinux for El-Torito legacy setup (for debugging).
--micro Create an ISO with just enough files to test the
@@ -593,6 +621,25 @@
If there's no 'sign-key' option, a transient key is created. The public
part is added to the initrd and the key is deleted.
+Add-on notes:
+
+ The add-on created here is just a repository, not a full add-on product.
+ If you need the latter, you will have to create that on your own and add
+ it to the iso.
+
+ Although it auto-generates a name for the repository, it's not a very
+ creative one and it's probably a good idea to choose one explicitly
+ using the --addon-name option.
+
+ The default installation repositories have priority 99. Any smaller
+ number for the add-on repository will prefer the add-on packages even
+ though the package version number is smaller than in the standard
+ repository.
+
+ The default priority of 60 is chosen to be between the priority of the
+ default installation repositories (99) and the repositories created by
+ driver updates (50).
+
Configuration file:
\$HOME/.mksusecdrc
@@ -683,11 +730,24 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# build_filelist(sources)
+#
+# sources is an array_ref containing a list of directories to be scanned and
+# added to our internal file list.
+#
+# The global vars $files and $mkisofs->{exclude} are updated.
+#
+# The point here is that mkisofs refuses to resolve name conflicts (when
+# merging several sources). So we have to do this ourselves and track
+# obsolete (that is, when duplicates show up) files in $mkisofs->{exclude}.
+#
+# That's only needed for regular files; directories don't matter.
+#
sub build_filelist
{
- my $files;
+ my $src = $_[0];
- for my $s (@sources) {
+ for my $s (@$src) {
File::Find::find({
wanted => sub {
if(m#^$s->{dir}/(.+)#) {
@@ -698,8 +758,6 @@
no_chdir => 1
}, $s->{dir});
}
-
- return $files;
}
@@ -1316,6 +1374,34 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# run_createrepo(repo_dir)
+#
+# Run 'createrepo' on repo_dir to create a repo-md repo.
+#
+sub run_createrepo
+{
+ my $dir = $_[0];
+ my $ok;
+
+ my $cmd = "createrepo --simple-md-filenames '$dir'";
+
+ print "running:\n$cmd\n" if $opt_verbose >= 1;
+
+ $ok = !system("$cmd 2>$tmp_err >&2");
+
+ if(open my $fh, "<", $tmp_err) {
+ local $/;
+ $_ = <$fh>;
+ close $fh;
+ }
+
+ print $_ if $opt_verbose >= 2 || !$ok;
+
+ die "error: createrepo failed\n" if !$ok;
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# ISO file list sorted by start address.
#
# Return ref to array with files.
@@ -3124,3 +3210,128 @@
}
}
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# new_products_xml(old_xml, dir, name, alias, prio)
+#
+# Add a product to an existing add_on_products.xml or create a new one.
+#
+# This doesn't use a full xml parser but assumes a reasonably formatted
+# add_on_products.xml.
+#
+sub new_products_xml
+{
+ my ($old_xml, $dir, $name, $alias, $prio) = @_;
+ my $new_xml;
+ my @x;
+
+ @x = split /^/m, $old_xml || <<'# template';
+<?xml version="1.0"?>
+