Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package obs-service-set_version for openSUSE:Factory checked in at 2024-05-07 18:02:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/obs-service-set_version (Old) and /work/SRC/openSUSE:Factory/.obs-service-set_version.new.1880 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "obs-service-set_version" Tue May 7 18:02:17 2024 rev:47 rq:1172198 version:0.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/obs-service-set_version/obs-service-set_version.changes 2024-01-18 21:52:15.342275197 +0100 +++ /work/SRC/openSUSE:Factory/.obs-service-set_version.new.1880/obs-service-set_version.changes 2024-05-07 18:02:25.756380934 +0200 @@ -1,0 +2,12 @@ +Mon May 06 14:28:11 UTC 2024 - dmuel...@suse.com + +- Update to version 0.6.3: + * [dist] import spec file from O:S:U + * Mute warning about missing EMAIL env variable in unit tests + * Fix unit tests + * Replace invalid use of os.errno with errno module + * Replace @VERSION@ placeholders in .dsc files + * Remove usage of deprecated imp module with importlib + * Detect revision and set pkgrel for Arch packages + +------------------------------------------------------------------- Old: ---- obs-service-set_version-0.6.2.tar.gz New: ---- obs-service-set_version-0.6.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ obs-service-set_version.spec ++++++ --- /var/tmp/diff_new_pack.O8l3G7/_old 2024-05-07 18:02:26.264399406 +0200 +++ /var/tmp/diff_new_pack.O8l3G7/_new 2024-05-07 18:02:26.264399406 +0200 @@ -1,5 +1,5 @@ # -# spec file +# spec file for package obs-service-set_version # # Copyright (c) 2024 SUSE LLC # @@ -24,7 +24,7 @@ %define service set_version Name: obs-service-%{service} -Version: 0.6.2 +Version: 0.6.3 Release: 0 Summary: An OBS source service: Update spec file version License: GPL-2.0-or-later ++++++ PKGBUILD ++++++ --- /var/tmp/diff_new_pack.O8l3G7/_old 2024-05-07 18:02:26.296400569 +0200 +++ /var/tmp/diff_new_pack.O8l3G7/_new 2024-05-07 18:02:26.304400860 +0200 @@ -1,5 +1,5 @@ pkgname=obs-service-set_version -pkgver=0.6.2 +pkgver=0.6.3 pkgrel=0 pkgdesc="An OBS source service: Update spec file version" arch=('i686' 'x86_64') ++++++ _service ++++++ --- /var/tmp/diff_new_pack.O8l3G7/_old 2024-05-07 18:02:26.324401588 +0200 +++ /var/tmp/diff_new_pack.O8l3G7/_new 2024-05-07 18:02:26.328401733 +0200 @@ -1,20 +1,20 @@ <services> - <service mode="disabled" name="tar_scm"> + <service mode="manual" name="tar_scm"> <param name="url">https://github.com/openSUSE/obs-service-set_version.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="version">git-master</param> + <param name="version">master</param> <param name="versionformat">@PARENT_TAG@</param> <param name="revision">master</param> <param name="changesgenerate">enable</param> </service> - <service mode="disabled" name="recompress"> + <service mode="manual" name="recompress"> <param name="file">*.tar</param> <param name="compression">gz</param> </service> - <service mode="disabled" name="set_version"> + <service mode="manual" name="set_version"> <param name="basename">obs-service-set_version</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.O8l3G7/_old 2024-05-07 18:02:26.352402606 +0200 +++ /var/tmp/diff_new_pack.O8l3G7/_new 2024-05-07 18:02:26.356402751 +0200 @@ -4,6 +4,6 @@ <param name="changesrevision">eaedc529acba421821e0e5dcb4956c66e7f315a9</param></service> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/obs-service-set_version.git</param> - <param name="changesrevision">d4150d2cf2c80788efd5e9dff6bc4fd033c74a93</param></service></servicedata> + <param name="changesrevision">fc93ee6169e660f158f0f36f87b69d555eccbd75</param></service></servicedata> (No newline at EOF) ++++++ debian.dsc ++++++ --- /var/tmp/diff_new_pack.O8l3G7/_old 2024-05-07 18:02:26.376403478 +0200 +++ /var/tmp/diff_new_pack.O8l3G7/_new 2024-05-07 18:02:26.380403624 +0200 @@ -1,6 +1,6 @@ Format: 1.0 Source: obs-service-set_version -Version: 0.6.1-0 +Version: 0.6.3-0 Binary: obs-service-set_version Provides: obs-service-set_version Maintainer: Dirk Mueller <dmuel...@suse.de> ++++++ obs-service-set_version-0.6.2.tar.gz -> obs-service-set_version-0.6.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/.github/workflows/main.yml new/obs-service-set_version-0.6.3/.github/workflows/main.yml --- old/obs-service-set_version-0.6.2/.github/workflows/main.yml 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/.github/workflows/main.yml 2024-05-02 13:30:32.000000000 +0200 @@ -14,6 +14,9 @@ runs-on: ubuntu-latest + env: + EMAIL: "nob...@example.com" + steps: - uses: actions/checkout@v2 - name: Set up Python 3.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/dist/obs-service-set_version.spec new/obs-service-set_version-0.6.3/dist/obs-service-set_version.spec --- old/obs-service-set_version-0.6.2/dist/obs-service-set_version.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/obs-service-set_version-0.6.3/dist/obs-service-set_version.spec 2024-05-02 13:30:32.000000000 +0200 @@ -0,0 +1,83 @@ +# +# spec file for package obs-service-set_version +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# 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/ +# + + +%if 0%{?suse_version} >= 1500 || 0%{?fedora_version} >= 29 || 0%{?centos_version} >= 800 +%bcond_without python3 +%else +%bcond_with python3 +%endif +%if %{with python3} +%define use_python python3 +%else +%define use_python python +%endif + +%define service set_version + +Name: obs-service-%{service} +Version: 0.5.12 +Release: 0 +Summary: An OBS source service: Update spec file version +License: GPL-2.0-or-later +Group: Development/Tools/Building +URL: https://github.com/openSUSE/obs-service-%{service} +Source: %{name}-%{version}.tar.gz +BuildRequires: python3-ddt +BuildRequires: python3-flake8 +BuildRequires: python3-packaging +%if 0%{?suse_version} +%if 0%{?suse_version} > 1315 +Recommends: python3-packaging +Requires: python3-base +%else +Recommends: python-packaging +%endif +%endif +Requires: sed +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildArch: noarch + +%description +This is a source service for openSUSE Build Service. + +Very simply script to update the version in .spec or .dsc files according to +a given version or to the existing files. + +%prep +%setup -q + +%build +%if 0%{?suse_version} > 1315 +sed -i -e "1 s,#!/usr/bin/python$,#!/usr/bin/python3," set_version +%endif + +%check +make test PYTHON=python3 + +%install +mkdir -p %{buildroot}%{_prefix}/lib/obs/service +install -m 0755 set_version %{buildroot}%{_prefix}/lib/obs/service +install -m 0644 set_version.service %{buildroot}%{_prefix}/lib/obs/service +perl -p -i -e 's{#!.*python.*}{#!%{_bindir}/%{use_python}}' %{buildroot}%{_prefix}/lib/obs/service/set_version + +%files +%defattr(-,root,root) +%dir %{_prefix}/lib/obs +%{_prefix}/lib/obs/service + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/set_version new/obs-service-set_version-0.6.3/set_version --- old/obs-service-set_version-0.6.2/set_version 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/set_version 2024-05-02 13:30:32.000000000 +0200 @@ -16,6 +16,7 @@ import argparse from contextlib import suppress +import errno import glob import os import re @@ -126,7 +127,7 @@ if not os.path.exists(self.versionfile): logging.debug(" - file: %s does not exist", self.versionfile) - raise OSError(os.errno.ENOENT, os.strerror(os.errno.ENOENT), + raise OSError(errno.ENOENT, os.strerror(errno.ENOENT), self.versionfile) with codecs.open(self.versionfile, 'r', 'utf8') as fp: @@ -221,6 +222,22 @@ return None +class RevisionDetector(object): + + def __init__(self): + pass + + def autodetect(self): + return self._get_revision_from_osc_files() + + @staticmethod + def _get_revision_from_osc_files(): + from xml.etree import ElementTree + _filesname = os.path.join('.osc', '_files') + _filesXML = ElementTree.parse(_filesname) + return _filesXML.getroot().attrib['rev'] + + class PackageTypeDetector(object): # pylint: disable=too-few-public-methods @staticmethod @@ -324,6 +341,19 @@ f.write(contents_new) +def _replace_variable(filename, variable, string): + # cmake configure_file behavior, replace variables marked with @ sign + with codecs.open(filename, 'r+', 'utf8') as f: + contents = f.read() + f.seek(0) + contents_new, subs = re.subn( + r"@{variable}@".format(variable=variable), + string, contents, flags=re.MULTILINE) + if subs > 0: + f.truncate() + f.write(contents_new) + + def _replace_debian_changelog_version(fname, version_new): # first, modify a copy of filename and then move it # get current version @@ -379,6 +409,14 @@ return ver +def _revision_detect(args): + revdetect = RevisionDetector() + revision = revdetect.autodetect() + logging.debug("Found revision '%s'", revision) + + return revision + + if __name__ == '__main__': parser = argparse.ArgumentParser( @@ -390,6 +428,9 @@ parser.add_argument('--version', help='use given version string, do not detect it ' 'from source files') + parser.add_argument('--revision', + help='use given revision string, do not detect it ' + 'from obs files') parser.add_argument('--basename', default="", help='detect version based on the file name with ' 'a given prefix') @@ -406,6 +447,7 @@ args = vars(parser.parse_args()) version = args['version'] + revision = args['revision'] outdir = args['outdir'] @@ -430,6 +472,17 @@ print("unable to detect the version") sys.exit(-1) + if not revision: + try: + revision = _revision_detect(args) + except Exception as e: + print("Revision detection failed with error: \"", e, "\".") + revision = '0' + + if not revision: + print("unable to detect the revision") + sys.exit(-1) + # if no files explicitly specified process whole directory files = args['file'] or files_local @@ -460,8 +513,12 @@ shutil.copyfile(f, filename) if "-" in VersionDetector._get_version_via_debian_dsc(filename): _replace_tag(filename, 'Version', version + "-0") + _replace_variable(filename, 'VERSION', version) + _replace_variable(filename, 'VERSION-RELEASE', version + "-0") else: _replace_tag(filename, 'Version', version) + _replace_variable(filename, 'VERSION', version) + _replace_variable(filename, 'VERSION-RELEASE', version) for f in filter(lambda x: x.endswith(("debian.changelog")), files): filename = outdir + "/" + f @@ -486,4 +543,4 @@ _replace_tag(filename, "md5sums", "('SKIP')") _replace_tag(filename, "sha256sums", "('SKIP')") _replace_tag(filename, "pkgver", version) - _replace_tag(filename, "pkgrel", "0") + _replace_tag(filename, "pkgrel", revision) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/tests/loader.py new/obs-service-set_version-0.6.3/tests/loader.py --- old/obs-service-set_version-0.6.2/tests/loader.py 1970-01-01 01:00:00.000000000 +0100 +++ new/obs-service-set_version-0.6.3/tests/loader.py 2024-05-02 13:30:32.000000000 +0200 @@ -0,0 +1,16 @@ +import importlib.machinery +import importlib.util +from pathlib import Path + + +def import_set_version(): + """Imports the set_version script as a python module and returns it.""" + loader = importlib.machinery.SourceFileLoader( + 'set_version', + str(Path(__file__).parent.joinpath("..", "set_version")) + ) + spec = importlib.util.spec_from_loader('set_version', loader) + sv = importlib.util.module_from_spec(spec) + loader.exec_module(sv) + + return sv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/tests/test_base.py new/obs-service-set_version-0.6.3/tests/test_base.py --- old/obs-service-set_version-0.6.2/tests/test_base.py 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/tests/test_base.py 2024-05-02 13:30:32.000000000 +0200 @@ -15,7 +15,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,USA. -import imp import os import re import shutil @@ -25,15 +24,15 @@ import tempfile import unittest - from ddt import data, ddt, unpack +from loader import import_set_version + DEBUG = False if os.environ.get('DEBUG_SET_VERSION') == "1": DEBUG = True -# NOTE(toabctl): Hack to import non-module file for testing -sv = imp.load_source("set_version", "set_version") +sv = import_set_version() SET_VERSION_EXECUTABLE = os.path.abspath( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/tests/test_package_type_detection.py new/obs-service-set_version-0.6.3/tests/test_package_type_detection.py --- old/obs-service-set_version-0.6.2/tests/test_package_type_detection.py 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/tests/test_package_type_detection.py 2024-05-02 13:30:32.000000000 +0200 @@ -15,15 +15,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,USA. -import imp - from ddt import data, ddt, unpack from test_base import SetVersionBaseTest +from tests.loader import import_set_version -# NOTE(toabctl): Hack to import non-module file for testing -sv = imp.load_source("set_version", "set_version") +sv = import_set_version() @ddt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/tests/test_python_pip2rpm.py new/obs-service-set_version-0.6.3/tests/test_python_pip2rpm.py --- old/obs-service-set_version-0.6.2/tests/test_python_pip2rpm.py 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/tests/test_python_pip2rpm.py 2024-05-02 13:30:32.000000000 +0200 @@ -15,7 +15,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,USA. -import imp import os import subprocess import unittest @@ -25,10 +24,10 @@ from packaging.version import parse from test_base import SetVersionBaseTest +from tests.loader import import_set_version -# NOTE(toabctl): Hack to import non-module file for testing -sv = imp.load_source("set_version", "set_version") +sv = import_set_version() def _has_zypper(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-set_version-0.6.2/tests/test_rpmspec.py new/obs-service-set_version-0.6.3/tests/test_rpmspec.py --- old/obs-service-set_version-0.6.2/tests/test_rpmspec.py 2023-01-18 13:24:22.000000000 +0100 +++ new/obs-service-set_version-0.6.3/tests/test_rpmspec.py 2024-05-02 13:30:32.000000000 +0200 @@ -16,13 +16,13 @@ import os -import imp import shutil from ddt import data, ddt, file_data, unpack from test_base import SetVersionBaseTest +from tests.loader import import_set_version -sv = imp.load_source("set_version", "set_version") +sv = import_set_version() @ddt