diff --git a/_multibuild b/_multibuild
index c3ce42a7..f429c4a1 100644
--- a/_multibuild
+++ b/_multibuild
@@ -2,5 +2,4 @@
openSUSE-Addon-NonOss-release
openSUSE-Tumbleweed-Kubic-release
openSUSE-release
- stub
diff --git a/openSUSE-Tumbleweed-Kubic-release.spec b/openSUSE-Tumbleweed-Kubic-release.spec
index 56dc18dc..e67957ce 100644
--- a/openSUSE-Tumbleweed-Kubic-release.spec
+++ b/openSUSE-Tumbleweed-Kubic-release.spec
@@ -1,7 +1,7 @@
#
-# spec file for package openSUSE-Tumbleweed-Kubic-release (Version 20190121)
+# spec file for package openSUSE-Tumbleweed-Kubic-release.spec
#
-# Copyright (c) 2019 openSUSE.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,15 +12,30 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
Name: openSUSE-Tumbleweed-Kubic-release
-%define product openSUSE-Tumbleweed-Kubic
-Summary: openSUSE Tumbleweed Kubic
Version: 20190121
Release: 0
-License: BSD-3-Clause
+Summary: openSUSE Tumbleweed Kubic
+License: GPL-2.0-or-later
Group: System/Fhs
-
+BuildRequires: skelcd-openSUSE
+Requires: issue-generator
+# Make sure we are at SLES12 SP2 level
+PreReq: glibc >= 2.19
+# in rare cases, 'ln' is not found...
+Requires(post): coreutils
+Recommends: branding
+Conflicts: distribution-release
+Conflicts: kernel < 4.4
+Provides: distribution-release
+# Needed to not break installation-images in short turn; this needs to fixed there of course
+Provides: openSUSE-Kubic-release
+# this package should only be available for the "basearchs" of a product
+ExclusiveArch: %ix86 x86_64 ppc64le s390x aarch64
Provides: %name-%version
Provides: product() = openSUSE-Tumbleweed-Kubic
Provides: product(openSUSE-Tumbleweed-Kubic) = 20190121-0
@@ -31,14 +46,11 @@ Provides: product-endoflife()
Requires: product_flavor(openSUSE-Tumbleweed-Kubic)
-AutoReqProv: on
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
openSUSE Tumbleweed Kubic combines the benefits of a rolling OS with a container orchestration platform. It is a modern Linux Operating System, designed for containers and optimized for large, clustered deployments. It inherits the
benefits of openSUSE Tumbleweed while redefining the operating system into a small, efficient and reliable distribution.
-
%package dvd
License: BSD-3-Clause
Group: System/Fhs
@@ -61,8 +73,40 @@ openSUSE Tumbleweed Kubic combines the benefits of a rolling OS with a container
%build
-
%install
+mkdir -p %{buildroot}%{_sysconfdir}
+mkdir -p %{buildroot}%{_libexecdir}/issue.d
+echo -e "\nWelcome to openSUSE Tumbleweed Kubic (%{_target_cpu}) - Kernel \\\r (\\\l).\n" > %{buildroot}%{_libexecdir}/issue.d/10-OS
+echo -e "\n" > %{buildroot}%{_libexecdir}/issue.d/90-OS
+
+touch %{buildroot}%{_sysconfdir}/motd
+
+# Put EULA into correct place
+mkdir -p %{buildroot}/%{_sysconfdir}/YaST2/licenses/base
+cd %{buildroot}/%{_sysconfdir}/YaST2/licenses/base
+if [ -f /CD1/license.tar.gz ]; then
+ tar -xzf /CD1/license.tar.gz
+elif [ -f %{_libexecdir}/skelcd/CD1/license.tar.gz ]; then
+ tar -xzf %{_libexecdir}/skelcd/CD1/license.tar.gz
+fi
+
+VERSION_ID=`echo %{version}|tr '[:upper:]' '[:lower:]'|sed -e 's/ //g;'`
+# note: VERSION is an optional field and has no meaning other than informative on a rolling distro
+# We do thus not add it to the os-release file
+cat > %{buildroot}%{_libexecdir}/os-release <$RPM_BUILD_ROOT/etc/products.d/openSUSE-Tumbleweed-Kubic.prod << EOF
@@ -117,12 +161,20 @@ EOF
-%clean
-rm -rf %buildroot
-
%files
%defattr(644,root,root,755)
-%dir /etc/products.d
-/etc/products.d/*.prod
+%{_sysconfdir}/os-release
+%{_libexecdir}/os-release
+%dir %{_sysconfdir}/products.d
+%{_sysconfdir}/products.d/*
+%dir %{_sysconfdir}/YaST2/
+%config(noreplace) %{_sysconfdir}/motd
+%dir %{_sysconfdir}/YaST2/licenses/
+%dir %{_sysconfdir}/YaST2/licenses/base/
+# no %doc here, or we will not install them
+%{_sysconfdir}/YaST2/licenses/base/license*txt
+%{_sysconfdir}/YaST2/licenses/base/no-acceptance-needed
+%dir %{_libexecdir}/issue.d
+%{_libexecdir}/issue.d/*-OS
%changelog
diff --git a/openSUSE-release.spec b/openSUSE-release.spec
index 90010081..04b2c8c5 100644
--- a/openSUSE-release.spec
+++ b/openSUSE-release.spec
@@ -1,7 +1,7 @@
#
-# spec file for package openSUSE-release (Version 20190121)
+# spec file for package openSUSE-release
#
-# Copyright (c) 2019 openSUSE.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,15 +12,174 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+%define product openSUSE
+#define betaversion %{nil}
+%define codename Tumbleweed
Name: openSUSE-release
-%define product openSUSE
-Summary: openSUSE Tumbleweed
Version: 20190121
Release: 0
+# 0 is the product release, not the build release of this package
+Summary: openSUSE Tumbleweed
License: BSD-3-Clause
Group: System/Fhs
-
+Source100: weakremovers.inc
+BuildRequires: skelcd-control-openSUSE
+BuildRequires: skelcd-openSUSE
+# /etc/issue is no longer a default file, but is auto-generated at bootup
+Requires: issue-generator
+#PreReq: coreutils
+# the post scriptlets uses awk, boo#976913
+Requires(post): awk
+Requires(post): issue-generator
+Recommends: branding-openSUSE
+Suggests: java-11-openjdk
+Suggests: mariadb
+Suggests: mariadb-client
+Conflicts: core-release <= 10
+Conflicts: distribution-release
+Conflicts: sled-release <= 10
+Conflicts: sles-release <= 10
+Provides: aaa_version
+Provides: distribution-release
+Provides: suse-release = %{version}-%{release}
+Provides: suse-release-oss = %{version}-%{release}
+# Give zypp a hint that this product must be kept up-to-date using zypper dup, not up (boo#1061384)
+Provides: product-update() = dup
+# Since we have more than one product in the FTP tree, we need to give yast a hint
+Provides: system-installation() = openSUSE
+Obsoletes: aaa_version
+Obsoletes: openSUSE-Promo-release <= 11.1
+Obsoletes: openSUSE-release-live <= 11.0
+Obsoletes: product_flavor(%{product}) < 20190121
+# bnc#826592
+Provides: weakremover(kernel-default) < 3.11
+Provides: weakremover(kernel-desktop) < 4.2
+Provides: weakremover(kernel-ec2) < 3.11
+Provides: weakremover(kernel-pae) < 3.11
+Provides: weakremover(kernel-vanilla) < 3.11
+Provides: weakremover(kernel-xen) < 3.11
+# migrated from MANUAL_OBSOLETES/packages
+Provides: weakremover(boost-license1_56_0)
+Provides: weakremover(boost-license1_59_0)
+Provides: weakremover(gpg-pubkey-3d25d3d9-36e12d04)
+Provides: weakremover(lib++dfb-1_7-6)
+Provides: weakremover(libastro-qt5-1)
+Provides: weakremover(libboost_atomic1_59_0)
+Provides: weakremover(libboost_atomic1_60_0)
+Provides: weakremover(libboost_atomic1_62_0)
+Provides: weakremover(libboost_atomic1_63_0)
+Provides: weakremover(libboost_chrono1_59_0)
+Provides: weakremover(libboost_chrono1_60_0)
+Provides: weakremover(libboost_chrono1_62_0)
+Provides: weakremover(libboost_chrono1_63_0)
+Provides: weakremover(libboost_container1_59_0)
+Provides: weakremover(libboost_container1_60_0)
+Provides: weakremover(libboost_container1_62_0)
+Provides: weakremover(libboost_container1_63_0)
+Provides: weakremover(libboost_context1_59_0)
+Provides: weakremover(libboost_context1_60_0)
+Provides: weakremover(libboost_context1_62_0)
+Provides: weakremover(libboost_context1_63_0)
+Provides: weakremover(libboost_coroutine1_59_0)
+Provides: weakremover(libboost_coroutine1_60_0)
+Provides: weakremover(libboost_coroutine1_62_0)
+Provides: weakremover(libboost_coroutine1_63_0)
+Provides: weakremover(libboost_date_time1_59_0)
+Provides: weakremover(libboost_date_time1_60_0)
+Provides: weakremover(libboost_date_time1_62_0)
+Provides: weakremover(libboost_date_time1_63_0)
+Provides: weakremover(libboost_filesystem1_59_0)
+Provides: weakremover(libboost_filesystem1_60_0)
+Provides: weakremover(libboost_filesystem1_62_0)
+Provides: weakremover(libboost_filesystem1_63_0)
+Provides: weakremover(libboost_graph1_59_0)
+Provides: weakremover(libboost_graph1_60_0)
+Provides: weakremover(libboost_graph1_62_0)
+Provides: weakremover(libboost_graph1_63_0)
+Provides: weakremover(libboost_iostreams1_59_0)
+Provides: weakremover(libboost_locale1_59_0)
+Provides: weakremover(libboost_log1_59_0)
+Provides: weakremover(libboost_log1_60_0)
+Provides: weakremover(libboost_log1_62_0)
+Provides: weakremover(libboost_log1_63_0)
+Provides: weakremover(libboost_math1_59_0)
+Provides: weakremover(libboost_program_options1_59_0)
+Provides: weakremover(libboost_python1_59_0)
+Provides: weakremover(libboost_random1_59_0)
+Provides: weakremover(libboost_regex1_59_0)
+Provides: weakremover(libboost_regex1_60_0)
+Provides: weakremover(libboost_regex1_62_0)
+Provides: weakremover(libboost_regex1_63_0)
+Provides: weakremover(libboost_serialization1_59_0)
+Provides: weakremover(libboost_signals1_59_0)
+Provides: weakremover(libboost_system1_56_0)
+Provides: weakremover(libboost_system1_59_0)
+Provides: weakremover(libboost_test1_59_0)
+Provides: weakremover(libboost_thread1_56_0)
+Provides: weakremover(libboost_thread1_59_0)
+Provides: weakremover(libboost_timer1_59_0)
+Provides: weakremover(libboost_wave1_59_0)
+Provides: weakremover(libcamel-1_2-54)
+Provides: weakremover(libdialog12)
+Provides: weakremover(libdirectfb-1_7-6)
+Provides: weakremover(libdns146)
+Provides: weakremover(libdns160)
+Provides: weakremover(libdns161)
+Provides: weakremover(libgdict-1_0-9)
+Provides: weakremover(libgit2-23)
+Provides: weakremover(libgpaste4)
+Provides: weakremover(libhdf5-11)
+Provides: weakremover(libhdf5_hl11)
+Provides: weakremover(libicu54_1)
+Provides: weakremover(libicu54_1-ledata)
+Provides: weakremover(libicu55_1)
+Provides: weakremover(libicu55_1-ledata)
+Provides: weakremover(libicu56_1)
+Provides: weakremover(libicu56_1-ledata)
+Provides: weakremover(libimobiledevice5)
+Provides: weakremover(libisc142)
+Provides: weakremover(libisc148)
+Provides: weakremover(libisl13)
+Provides: weakremover(libixion-0_10-0)
+Provides: weakremover(liblmdb-0_9_16)
+Provides: weakremover(libmicrohttpd11)
+Provides: weakremover(libminiupnpc15)
+Provides: weakremover(libnis1)
+Provides: weakremover(libntfs-3g86)
+Provides: weakremover(liborcus-0_10-0)
+Provides: weakremover(libpoppler47)
+Provides: weakremover(libpoppler48)
+Provides: weakremover(libpoppler49)
+Provides: weakremover(libpoppler50)
+Provides: weakremover(libpoppler51)
+Provides: weakremover(libpoppler52)
+Provides: weakremover(libpoppler53)
+Provides: weakremover(libpoppler54)
+Provides: weakremover(libpoppler55)
+Provides: weakremover(libpoppler56)
+Provides: weakremover(libpoppler57)
+Provides: weakremover(libpoppler58)
+Provides: weakremover(libpoppler59)
+Provides: weakremover(libpoppler61)
+Provides: weakremover(libpoppler62)
+Provides: weakremover(libpoppler63)
+Provides: weakremover(libpoppler64)
+Provides: weakremover(libpoppler65)
+Provides: weakremover(libprocps4)
+Provides: weakremover(libprocps5)
+Provides: weakremover(libpsl0)
+Provides: weakremover(libsgutils2-1_40-2)
+Provides: weakremover(libsgutils2-1_41-2)
+Provides: weakremover(libvpx2)
+Provides: weakremover(libxtables11)
+Provides: weakremover(libzip4)
+Provides: weakremover(mt_st)
+Provides: weakremover(openssl-debuginfo)
+%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
Provides: product(openSUSE) = 20190121-0
@@ -43,13 +202,9 @@ Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ft
Requires: product_flavor(openSUSE)
-AutoReqProv: on
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-
%description
openSUSE Tumbleweed is the rolling distribution by the openSUSE.org project.
-
%package ftp
License: BSD-3-Clause
Group: System/Fhs
@@ -188,11 +343,60 @@ openSUSE Tumbleweed is the rolling distribution by the openSUSE.org project.
%prep
+%setup -qcT
+mkdir license
+if [ -f /CD1/license.tar.gz ]; then
+ tar -C license -xzf /CD1/license.tar.gz
+elif [ -f %{_libexecdir}/skelcd/CD1/license.tar.gz ]; then
+ tar -C license -xzf %{_libexecdir}/skelcd/CD1/license.tar.gz
+fi
%build
-
%install
+mkdir -p %{buildroot}%{_sysconfdir} %{buildroot}%{_libexecdir}/issue.d %{buildroot}/run
+
+echo -e 'Welcome to %{product} %{codename} %{version}%{?betaversion: %{betaversion}} - Kernel \\r (\\l).\n' > %{buildroot}%{_libexecdir}/issue.d/10-openSUSE.conf
+echo -e "\n" > %{buildroot}%{_libexecdir}/issue.d/90-openSUSE.conf
+echo 'Welcome to %{product} %{codename} %{version}%{?betaversion: %{betaversion}} - Kernel %%r (%%t).' > %{buildroot}%{_sysconfdir}/issue.net
+
+VERSION_ID=`echo %{version}|tr '[:upper:]' '[:lower:]'|sed -e 's/ //g;'`
+# note: VERSION is an optional field and has no meaning other than informative on a rolling distro
+# We do thus not add it to the os-release file
+cat > %{buildroot}%{_libexecdir}/os-release < %{buildroot}%{_sysconfdir}/motd
+# Bug 404141 - /etc/YaST/control.xml should be owned by some package
+mkdir -p %{buildroot}%{_sysconfdir}/YaST2/
+echo %{buildroot}
+if [ -f /CD1/control.xml ]; then
+ install -m 644 /CD1/control.xml %{buildroot}%{_sysconfdir}/YaST2/
+elif [ -f %{_libexecdir}/skelcd/CD1/control.xml ]; then
+ install -m 644 %{_libexecdir}/skelcd/CD1/control.xml %{buildroot}%{_sysconfdir}/YaST2/
+fi
+
+# fate#319341, make openSUSE-release own YaST license files. TODO:
+# get rid of /etc/YaST2/licenses
+install -D -d -m 755 "%{buildroot}%{_sysconfdir}/YaST2/licenses/base"
+install -D -d -m 755 "%{buildroot}%_defaultlicensedir"
+cp -a license "%{buildroot}%_defaultlicensedir/%name"
+pushd license
+for i in *; do
+ ln -s "%_defaultlicensedir/%name/$i" %{buildroot}%{_sysconfdir}/YaST2/licenses/base/$i
+done
+
mkdir -p $RPM_BUILD_ROOT/etc/products.d
cat >$RPM_BUILD_ROOT/etc/products.d/openSUSE.prod << EOF
@@ -314,13 +518,48 @@ This package only exists for providing the product flavor 'usb-x11'.
EOF
+# this is a base product, create symlink
+ln -s openSUSE.prod %{buildroot}%{_sysconfdir}/products.d/baseproduct
-%clean
-rm -rf %buildroot
+%post
+# Upgrade path - if /etc/default/grub contains any of the DISTRIBUTOR= tags
+# we ever put, replace it with "", which means grub will use /etc/os-release to make something up
+if [ -f %{_sysconfdir}/default/grub ]; then
+ DISTRIBUTOR=$(awk -F= '/^GRUB_DISTRIBUTOR/ {print $2}' %{_sysconfdir}/default/grub | tr -d '"')
+ case "$DISTRIBUTOR" in
+ "openSUSE" | \
+ "openSUSE 13.1" | \
+ "openSUSE 13.2")
+ # replace GRUB_DISTRIBUTOR in %{_sysconfdir}/default/grub with ""
+ sed -i "s/^GRUB_DISTRIBUTOR=.*/GRUB_DISTRIBUTOR=/" %{_sysconfdir}/default/grub
+ ;;
+ esac
+fi
+
+%posttrans
+# Launch the issue-generator: we have a new config file in /usr/lib/issue.d that needs to be represented
+if [ -x %{_sbindir}/issue-generator ]; then
+ if [ -x %{_bindir}/systemd-tmpfiles ]; then
+ %{_bindir}/systemd-tmpfiles --create issue-generator.conf || :
+ fi
+ %{_sbindir}/issue-generator || :
+fi
%files
%defattr(644,root,root,755)
-%dir /etc/products.d
-/etc/products.d/*.prod
+%dir %{_sysconfdir}/YaST2/licenses
+%{_sysconfdir}/YaST2/licenses/base
+%license license/*
+%{_sysconfdir}/os-release
+%{_libexecdir}/os-release
+# Bug 404141 - /etc/YaST/control.xml should be owned by some package
+%dir %{_sysconfdir}/YaST2/
+%config %{_sysconfdir}/YaST2/control.xml
+%config(noreplace) %{_sysconfdir}/motd
+%dir %{_libexecdir}/issue.d/
+%{_libexecdir}/issue.d/10-openSUSE.conf
+%{_libexecdir}/issue.d/90-openSUSE.conf
+%config(noreplace) %{_sysconfdir}/issue.net
+%{_sysconfdir}/products.d
%changelog