Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package product-composer for
openSUSE:Factory checked in at 2024-07-08 19:09:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/product-composer (Old)
and /work/SRC/openSUSE:Factory/.product-composer.new.2080 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "product-composer"
Mon Jul 8 19:09:06 2024 rev:14 rq:1186131 version:0.4.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/product-composer/product-composer.changes
2024-05-24 19:53:57.739702202 +0200
+++
/work/SRC/openSUSE:Factory/.product-composer.new.2080/product-composer.changes
2024-07-08 19:09:30.521479536 +0200
@@ -1,0 +2,29 @@
+Mon Jul 8 09:37:08 UTC 2024 - Adrian Schröter <[email protected]>
+
+- update to version 0.4.12
+ * fixed susedata generation (only a single language translation was
generated)
+ * Added option to include all available packages
+
+-------------------------------------------------------------------
+Wed Jun 26 11:55:22 UTC 2024 - Adrian Schröter <[email protected]>
+
+- update to version 0.4.11
+ * canonized filenames (get rid of ::import prefixes)
+
+-------------------------------------------------------------------
+Wed Jun 26 10:36:50 UTC 2024 - Adrian Schröter <[email protected]>
+
+- update to version 0.4.10
+ * support building on 15.6, using python311 stack (added
sle-15-defaults.patch)
+ * changing createrepo defaults for SLE 15 only
+ * crash fix on incomplete generated groups by pkglistgen
+
+-------------------------------------------------------------------
+Wed Jun 26 07:57:25 UTC 2024 - Adrian Schröter <[email protected]>
+
+- update to version 0.4.9
+ * Introduce "extension" product-type as alias for "module"
+ Technical the same, but handled different in user accounting
+ * fix for building without debug or source media
+
+-------------------------------------------------------------------
@@ -107 +136 @@
-- Set service to manaul run: server side execution not permitted in
+- Set service to manual run: server side execution not permitted in
Old:
----
product-composer-0.4.8.obscpio
New:
----
product-composer-0.4.12.obscpio
sle-15-defaults.patch
BETA DEBUG BEGIN:
New:- update to version 0.4.10
* support building on 15.6, using python311 stack (added
sle-15-defaults.patch)
* changing createrepo defaults for SLE 15 only
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ product-composer.spec ++++++
--- /var/tmp/diff_new_pack.yhNKUG/_old 2024-07-08 19:09:31.001497091 +0200
+++ /var/tmp/diff_new_pack.yhNKUG/_new 2024-07-08 19:09:31.005497238 +0200
@@ -16,26 +16,34 @@
#
+%if "%{?sle_version}" == "150600"
+%define used_python python311
+%else
+%define used_python python3
+%endif
+
Name: product-composer
-Version: 0.4.8
+Version: 0.4.12
Release: 0
Summary: Product Composer
License: GPL-2.0-or-later
Group: Development/Tools/Building
URL: https://github.com/openSUSE/product-composer
Source: %name-%{version}.tar.xz
-BuildRequires: python3-pip
-BuildRequires: python3-poetry-core
-BuildRequires: python3-setuptools
-BuildRequires: python3-wheel
-Requires: python3-PyYAML
-Requires: python3-pydantic
-Requires: python3-rpm
-Requires: python3-zstandard
+# Should become a build option
+Patch1: sle-15-defaults.patch
+BuildRequires: %{used_python}-pip
+BuildRequires: %{used_python}-poetry-core
+BuildRequires: %{used_python}-setuptools
+BuildRequires: %{used_python}-wheel
+Requires: %{used_python}-PyYAML
+Requires: %{used_python}-pydantic
+Requires: %{used_python}-rpm
+Requires: %{used_python}-zstandard
# build for signdummy
Requires: build
Requires: checkmedia
-Requires: createrepo
+Requires: createrepo_c
Requires: inst-source-utils
Requires: mkisofs
BuildArch: noarch
@@ -46,17 +54,32 @@
likely to break with productcompose file syntax changes.
%prep
-%autosetup -n %name-%version -p1
+%setup -q -n %name-%version
+%if "%{?sle_version}" == "150600"
+%patch -P 1 -p1
+%endif
%build
+%if "%{?sle_version}" == "150600"
+%python311_pyproject_wheel
+%else
%python3_pyproject_wheel
+%endif
%install
+%if "%{?sle_version}" == "150600"
+%python311_pyproject_install
+%else
%python3_pyproject_install
+%endif
mv %buildroot/usr/bin/productcomposer %buildroot%_bindir/product-composer
%files
%doc README.rst docs examples
%_bindir/product-composer
+%if "%{?sle_version}" == "150600"
+%{python311_sitelib}/*
+%else
%{python3_sitelib}/*
+%endif
++++++ _service ++++++
--- /var/tmp/diff_new_pack.yhNKUG/_old 2024-07-08 19:09:31.033498261 +0200
+++ /var/tmp/diff_new_pack.yhNKUG/_new 2024-07-08 19:09:31.033498261 +0200
@@ -2,8 +2,8 @@
<service name="obs_scm" mode="manual">
<param name="url">https://github.com/openSUSE/product-composer</param>
<param name="scm">git</param>
- <param name="version">0.4.8</param>
- <param name="revision">0.4.8</param>
+ <param name="revision">0.4.12</param>
+ <param name="version">0.4.12</param>
</service>
<service name="set_version" mode="manual" />
<service name="tar" mode="buildtime" />
++++++ product-composer-0.4.8.obscpio -> product-composer-0.4.12.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/product-composer-0.4.8/docs/build_description.adoc
new/product-composer-0.4.12/docs/build_description.adoc
--- old/product-composer-0.4.8/docs/build_description.adoc 2024-05-24
15:52:19.000000000 +0200
+++ new/product-composer-0.4.12/docs/build_description.adoc 2024-07-08
11:33:08.000000000 +0200
@@ -59,6 +59,44 @@
The packageset requires at least a packages definition,
but may optionaly also a name, flavors or architectures.
+==== name
+
+Defines the name of the package set. 'main' is the default
+name.
+
+==== architecture
+
+Lists the architectures where the set is to be used. The
+default is for all architectures.
+
+==== flavor
+
+Lists the flavors where the set is to be used. The
+default is for all flavors.
+
+==== add
+
+Can be used to add further packagesets by specifing
+their names.
+
+A special packageset called '__all__' will add all
+package names local available.
+
+==== sub
+
+Can be used to remove packages from the specified
+packageset names.
+
+==== intersect
+
+Can be used to filter packages with specified package
+set lists.
+
+==== packages
+
+Lists all package names to be added. This is just the rpm
+name, not the file name.
+
=== Details
==== name
@@ -79,6 +117,8 @@
Either 'base' for operation systems or 'module' for any product
depending on any existing installation.
+'extension' is handled as alias for 'module'.
+
==== architectures
An array of the master architectures to be put into the repository.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/product-composer-0.4.8/src/productcomposer/cli.py
new/product-composer-0.4.12/src/productcomposer/cli.py
--- old/product-composer-0.4.8/src/productcomposer/cli.py 2024-05-24
15:52:19.000000000 +0200
+++ new/product-composer-0.4.12/src/productcomposer/cli.py 2024-07-08
11:33:08.000000000 +0200
@@ -235,6 +235,7 @@
os.mkdir(maindir)
workdirectories = [ maindir ]
+ debugdir = sourcedir = None
if "source" in yml:
if yml['source'] == 'split':
sourcedir = outdir + '/' + product_base_dir + '-Source'
@@ -603,11 +604,13 @@
susedata.set('xmlns', 'http://linux.duke.edu/metadata/susedata')
susedata.set('packages', str(susedatas_count[lang]))
ET.indent(susedata, space=" ", level=0)
- susedata_fn = rpmdir + (f'/susedata.{lang}.xml' if lang else
'/susedata.xml')
+ mdtype = (f'susedata.{lang}' if lang else 'susedata')
+ susedata_fn = f'{rpmdir}/{mdtype}.xml'
with open(susedata_fn, 'x') as sd_file:
sd_file.write(ET.tostring(susedata, encoding=ET_ENCODING))
mr = ModifyrepoWrapper(
file=susedata_fn,
+ mdtype=mdtype,
directory=os.path.join(rpmdir, "repodata"),
)
mr.run_cmd()
@@ -624,7 +627,7 @@
# build the union of the package sets for all requested architectures
main_pkgset = PkgSet('main')
for arch in yml['architectures']:
- pkgset = main_pkgset.add(create_package_set(yml, arch, flavor, 'main'))
+ pkgset = main_pkgset.add(create_package_set(yml, arch, flavor, 'main',
pool=pool))
main_pkgset_names = main_pkgset.names()
uitemp = None
@@ -736,7 +739,7 @@
if 'product-type' in yml:
if yml['product-type'] == 'base':
product_type = '/o'
- elif yml['product-type'] == 'module':
+ elif yml['product-type'] in ['module', 'extension']:
product_type = '/a'
else:
die('Undefined product-type')
@@ -802,7 +805,14 @@
return pkgset
-def create_package_set(yml, arch, flavor, setname):
+def create_package_set_all(setname, pool, arch):
+ if pool is None:
+ die('need a package pool to create the __all__ package set')
+ pkgset = PkgSet(setname)
+ pkgset.add_specs(pool.names(arch))
+ return pkgset
+
+def create_package_set(yml, arch, flavor, setname, pool=None):
if 'packagesets' not in yml:
pkgset = create_package_set_compat(yml, arch, flavor, setname)
if pkgset is None:
@@ -816,7 +826,9 @@
die(f'package set {name} is already defined')
pkgsets[name] = None
if 'flavors' in entry:
- if flavor is None or flavor not in entry['flavors']:
+ if flavor is None or entry['flavors'] is None:
+ continue
+ if flavor not in entry['flavors']:
continue
if 'architectures' in entry:
if arch not in entry['architectures']:
@@ -831,6 +843,8 @@
if setop not in entry:
continue
for oname in entry[setop]:
+ if oname == '__all__' and oname not in pkgsets:
+ pkgsets[oname] = create_package_set_all(oname, pool, arch)
if oname == name or oname not in pkgsets:
die(f'package set {oname} does not exist')
if pkgsets[oname] is None:
@@ -859,7 +873,7 @@
if 'add_slsa_provenance' in yml['build_options']:
add_slsa = True
- main_pkgset = create_package_set(yml, arch, flavor, 'main')
+ main_pkgset = create_package_set(yml, arch, flavor, 'main', pool=pool)
missing_package = None
for sel in main_pkgset:
@@ -909,28 +923,32 @@
die('Abort due to missing packages')
-def link_file_into_dir(filename, directory):
+def link_file_into_dir(source, directory, name=None):
if not os.path.exists(directory):
os.mkdir(directory)
- outname = directory + '/' + os.path.basename(filename)
+ if name is None:
+ name = os.path.basename(source)
+ outname = directory + '/' + name
if not os.path.exists(outname):
- if os.path.islink(filename):
+ if os.path.islink(source):
# osc creates a repos/ structure with symlinks to it's cache
# but these would point outside of our media
- shutil.copyfile(filename, outname)
+ shutil.copyfile(source, outname)
else:
- os.link(filename, outname)
+ os.link(source, outname)
def link_entry_into_dir(entry, directory, add_slsa=False):
- outname = directory + '/' + entry.arch + '/' +
os.path.basename(entry.location)
+ canonfilename = entry.canonfilename
+ outname = directory + '/' + entry.arch + '/' + canonfilename
if not os.path.exists(outname):
- link_file_into_dir(entry.location, directory + '/' + entry.arch)
+ link_file_into_dir(entry.location, directory + '/' + entry.arch,
name=canonfilename)
add_entry_to_report(entry, outname)
if add_slsa:
- slsaname = entry.location.removesuffix('.rpm') +
'.slsa_provenance.json'
- if os.path.exists(slsaname):
- link_file_into_dir(slsaname, directory + '/' + entry.arch)
+ slsalocation = entry.location.removesuffix('.rpm') +
'.slsa_provenance.json'
+ if os.path.exists(slsalocation):
+ slsaname = canonfilename.removesuffix('.rpm') +
'.slsa_provenance.json'
+ link_file_into_dir(slsalocation, directory + '/' + entry.arch,
name=slsaname)
def add_entry_to_report(entry, outname):
# first one wins, see link_file_into_dir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/product-composer-0.4.8/src/productcomposer/core/Package.py
new/product-composer-0.4.12/src/productcomposer/core/Package.py
--- old/product-composer-0.4.8/src/productcomposer/core/Package.py
2024-05-24 15:52:19.000000000 +0200
+++ new/product-composer-0.4.12/src/productcomposer/core/Package.py
2024-07-08 11:33:08.000000000 +0200
@@ -46,6 +46,10 @@
return f"{self.name}-{self.evr}.{self.arch}"
@property
+ def canonfilename(self):
+ return f"{self.name}-{self.version}-{self.release}.{self.arch}.rpm"
+
+ @property
def provides(self):
h = self._read_rpm_header()
if h is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/product-composer-0.4.8/src/productcomposer/core/Pool.py
new/product-composer-0.4.12/src/productcomposer/core/Pool.py
--- old/product-composer-0.4.8/src/productcomposer/core/Pool.py 2024-05-24
15:52:19.000000000 +0200
+++ new/product-composer-0.4.12/src/productcomposer/core/Pool.py
2024-07-08 11:33:08.000000000 +0200
@@ -57,4 +57,15 @@
def lookup_all_updateinfos(self):
return self.updateinfos.values()
+ def names(self, arch=None):
+ if arch is None:
+ return set(self.rpms.keys())
+ names = set()
+ for name in self.rpms:
+ for pkg in self.rpms[name]:
+ if pkg.matches(arch, None, None, None, None, None):
+ names.add(name)
+ break
+ return names
+
# vim: sw=4 et
++++++ product-composer.obsinfo ++++++
--- /var/tmp/diff_new_pack.yhNKUG/_old 2024-07-08 19:09:31.133501918 +0200
+++ /var/tmp/diff_new_pack.yhNKUG/_new 2024-07-08 19:09:31.137502065 +0200
@@ -1,5 +1,5 @@
name: product-composer
-version: 0.4.8
-mtime: 1716558739
-commit: c83a1737ac73d82d1ac9f4ce6115323c36b39f5e
+version: 0.4.12
+mtime: 1720431188
+commit: 14d97cc1852fc5e18a52955694c840f221eaeb9c
++++++ sle-15-defaults.patch ++++++
diff --git a/src/productcomposer/defaults.py b/src/productcomposer/defaults.py
index 4493328..1b351ef 100644
--- a/src/productcomposer/defaults.py
+++ b/src/productcomposer/defaults.py
@@ -7,5 +7,5 @@ and explicitly pass them to the programs.
"""
-CREATEREPO_CHECKSUM_TYPE: str = "sha512"
-CREATEREPO_GENERAL_COMPRESS_TYPE: str = "zstd"
+CREATEREPO_CHECKSUM_TYPE: str = "sha256"
+CREATEREPO_GENERAL_COMPRESS_TYPE: str = "gz"