diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 526bb61..0000000 --- a/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -spectool-1.0.9.tar.bz2 -rpmdevtools-6.4.tar.bz2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dafa321 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/*.tar.* diff --git a/0001-Force-legacy-datestamp-while-RHBZ-1715412-is-still-a.patch b/0001-Force-legacy-datestamp-while-RHBZ-1715412-is-still-a.patch new file mode 100644 index 0000000..f59bdfd --- /dev/null +++ b/0001-Force-legacy-datestamp-while-RHBZ-1715412-is-still-a.patch @@ -0,0 +1,39 @@ +From 4a4693c842b6da5d66e3a6bdb1eb7914d2402f7f Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Wed, 20 Jan 2021 06:50:03 -0500 +Subject: [PATCH] Force legacy datestamp while RHBZ#1715412 is still an issue + +--- + rpmdev-bumpspec | 2 +- + rpmdev-newspec.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/rpmdev-bumpspec b/rpmdev-bumpspec +index dc4eb05..3e18b41 100755 +--- a/rpmdev-bumpspec ++++ b/rpmdev-bumpspec +@@ -300,7 +300,7 @@ the Free Software Foundation; either version 2 of the License, or + parser.add_option("-n", "--new", + help="set new version and reset/set release " + "(simple spec files only)") +- parser.add_option("-D", "--legacy-datestamp", default=False, action='store_true', ++ parser.add_option("-D", "--legacy-datestamp", default=True, action='store_true', + help="use legacy datestamp for changelog entries") + parser.add_option("-d", "--datestamp", + help="changelog date string (default: today)") +diff --git a/rpmdev-newspec.in b/rpmdev-newspec.in +index 27af10f..a083dd9 100644 +--- a/rpmdev-newspec.in ++++ b/rpmdev-newspec.in +@@ -293,7 +293,7 @@ if [[ $NEWSPEC_PREFER_MACROS ]] ; then + " + fi + +-if [[ $rpmver -ge 41400 ]] && [[ -z $NEWSPEC_LEGACY_DATESTAMP ]] ; then # >= 4.14 (RHEL >= 8, Fedora >= 27) ++if [[ $rpmver -ge 41400 ]] && [[ $(/bin/false) ]] ; then # >= 4.14 (RHEL >= 8, Fedora >= 27) + chlog="s|^%changelog\\s*|%changelog\\n* $(LC_ALL=C date +'%a %b %d %T %Z %Y') $(rpmdev-packager)\\n- |Mg" + else + chlog="s|^%changelog\\s*|%changelog\\n* $(LC_ALL=C date --utc +'%a %b %d %Y') $(rpmdev-packager)\\n- |Mg" +-- +2.29.2 + diff --git a/0002-rpmdevtools-git-83b35ac.patch b/0002-rpmdevtools-git-83b35ac.patch new file mode 100644 index 0000000..ff616da --- /dev/null +++ b/0002-rpmdevtools-git-83b35ac.patch @@ -0,0 +1,531 @@ +diff --git a/Makefile.am b/Makefile.am +index bb6f7c6..d55f397 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -15,7 +15,7 @@ man8_MANS = rpmdev-rmdevelrpms.8 + dist_pkgsysconf_DATA = curlrc newspec.conf rmdevelrpms.conf \ + spectemplate-lib.spec spectemplate-minimal.spec \ + spectemplate-perl.spec spectemplate-php-pear.spec \ +- spectemplate-python.spec spectemplate-ruby.spec \ ++ spectemplate-python.spec spectemplate-pyproject.spec spectemplate-ruby.spec \ + spectemplate-ocaml.spec spectemplate-R.spec spectemplate-dummy.spec \ + template.init + +diff --git a/rpmdev-bumpspec b/rpmdev-bumpspec +index b8f4047..5a6a909 100755 +--- a/rpmdev-bumpspec ++++ b/rpmdev-bumpspec +@@ -27,8 +27,10 @@ import time + + try: + from rpmautospec import specfile_uses_rpmautospec ++ from rpmautospec.subcommands.release import calculate_release_number + except ImportError: + specfile_uses_rpmautospec = None ++ calculate_release_number = None + + __version__ = "1.0.13" + +@@ -378,19 +380,25 @@ the Free Software Foundation; either version 2 of the License, or + # Not actually a parser error, but... meh. + parser.error(e) + +- uses_rpmautospec = False ++ uses_rpmautospec_autorelease = uses_rpmautospec_autochangelog = False + if specfile_uses_rpmautospec: +- uses_rpmautospec = specfile_uses_rpmautospec( ++ uses_rpmautospec_autorelease = specfile_uses_rpmautospec( + specpath=s.filename, + check_autorelease=True, + check_autochangelog=False + ) ++ uses_rpmautospec_autochangelog = specfile_uses_rpmautospec( ++ specpath=s.filename, ++ check_autorelease=False, ++ check_autochangelog=True ++ ) + +- if uses_rpmautospec: ++ changed = False ++ if uses_rpmautospec_autorelease: + if opts.new: + print("RPMAutoSpec usage detected, only setting Version.") + changed = s.newVersion(opts.new, set_release=False) +- else: ++ elif uses_rpmautospec_autochangelog: + print("RPMAutoSpec usage detected, not changing the spec file.") + continue + else: +@@ -405,14 +413,12 @@ the Free Software Foundation; either version 2 of the License, or + + changed = True + +- # If we didn't change anything, no need to write and modify the +- # changelog. + if changed: ++ # Write out changed version or release if changed. + s.writeFile(aspec) +- else: +- continue + +- if uses_rpmautospec: ++ if uses_rpmautospec_autochangelog: ++ print("RPMAutospec %autochangelog is used, no need to add %changelog entry.") + continue + + if not s.checkChangelogPresence(): +@@ -422,6 +428,10 @@ the Free Software Foundation; either version 2 of the License, or + # Get EVR for changelog entry. + cmd = ("rpm", "-q", "--specfile", "--define", "dist %{nil}", + "--qf=%|epoch?{%{epoch}:}:{}|%{version}-%{release}\n", aspec) ++ if not opts.new and calculate_release_number and uses_rpmautospec_autorelease: ++ # Rpmautospec doesn’t see a change yet so the calculated number will be one too low. ++ release_number = calculate_release_number(aspec) + 1 ++ cmd += ("--define", "_rpmautospec_release_number {}".format(release_number)) + popen = subprocess.Popen(cmd, stdout=subprocess.PIPE) + evr = popen.communicate()[0].split(b"\n")[0] + if sys.version_info[0] > 2: +diff --git a/rpmdev-spectool b/rpmdev-spectool +index 1d57256..2c06ef8 100755 +--- a/rpmdev-spectool ++++ b/rpmdev-spectool +@@ -25,7 +25,9 @@ import os + import tempfile + import time + from collections import OrderedDict +-from typing import Optional ++from typing import Any, Callable, Dict, List, Optional ++from typing import OrderedDict as OrderedDictT ++from typing import Tuple + from urllib.parse import urlparse + + import progressbar +@@ -46,13 +48,13 @@ anything about missing sources or patches). The plan is to catch errors like + this in spectool itself and warn the user about it in the future.""" + + +-def complete_spec_paths(prefix, **kwargs): ++def complete_spec_paths(prefix, **kwargs) -> List[str]: + import glob + + return glob.glob(prefix + "*.spec") + + +-def get_args() -> dict: ++def get_args() -> Dict[str, Any]: + try: + import argcomplete + except ImportError: +@@ -191,6 +193,15 @@ def get_args() -> dict: + help="output debug info, don't clean up when done", + ) + ++ misc.add_argument( ++ "--http-header", ++ "-H", ++ action="append", ++ dest="headers", ++ default=[], ++ help="Optionally add custom headers", ++ ) ++ + specfile = parser.add_argument("specfile", action="store") + + if argcomplete: +@@ -202,17 +213,17 @@ def get_args() -> dict: + return vars(parser.parse_args()) + + +-def split_numbers(args: str) -> list: ++def split_numbers(args: str) -> List[str]: + return args.split(",") + + + # simple streamed file download progress tracker inspired by requests_download + class ProgressTracker: +- def __init__(self, progress_bar: progressbar.ProgressBar): ++ def __init__(self, progress_bar: progressbar.ProgressBar) -> None: + self.progress_bar = progress_bar + self.received = 0 + +- def on_start(self, response: requests.Response): ++ def on_start(self, response: requests.Response) -> None: + max_value = None + + if "content-length" in response.headers: +@@ -221,7 +232,7 @@ class ProgressTracker: + self.progress_bar.start(max_value=max_value) + self.received = 0 + +- def on_chunk(self, chunk: bytes): ++ def on_chunk(self, chunk: bytes) -> None: + self.received += len(chunk) + + try: +@@ -229,12 +240,13 @@ class ProgressTracker: + except ValueError: + pass + +- def on_finish(self): ++ def on_finish(self) -> None: + self.progress_bar.finish() + + + # simple streamed file download implementation inspired by requests_download +-def download(url, target, headers=None, tracker: Optional[ProgressTracker] = None): ++def download(url, target, headers=None, ++ tracker: Optional[ProgressTracker] = None) -> None: + if headers is None: + headers = {} + +@@ -263,7 +275,8 @@ def download(url, target, headers=None, tracker: Optional[ProgressTracker] = Non + tracker.on_finish() + + +-def get_file(url: str, path: str, force: bool) -> bool: ++def get_file(url: str, path: str, force: bool, ++ headers: Optional[Dict[str, str]] = None) -> bool: + if os.path.exists(path): + if force: + os.remove(path) +@@ -272,13 +285,13 @@ def get_file(url: str, path: str, force: bool) -> bool: + return False + + progress = ProgressTracker(progressbar.DataTransferBar()) +- download(url, path, tracker=progress) ++ download(url, path, tracker=progress, headers=headers) + + return True + + + class Spec: +- def __init__(self, path: str): ++ def __init__(self, path: str) -> None: + self.path = path + self.spec = rpm.spec(self.path) + +@@ -289,10 +302,10 @@ class Spec: + self.files = list(self.spec.sources) + self.files.sort(key=(lambda file: file[1])) + +- self._sources = None +- self._patches = None ++ self._sources: Optional[OrderedDictT[str, str]] = None ++ self._patches: Optional[OrderedDictT[str, str]] = None + +- def _files(self, typ) -> OrderedDict: ++ def _files(self, typ: int) -> OrderedDictT[str, str]: + # file is a 3-tuple of (path, number, type) + # type 1: source file + # type 2: patch file +@@ -305,41 +318,42 @@ class Spec: + return files + + @property +- def sources(self) -> OrderedDict: ++ def sources(self) -> OrderedDictT[str, str]: + if not self._sources: + self._sources = self._files(1) + + return self._sources + + @property +- def patches(self) -> OrderedDict: ++ def patches(self) -> OrderedDictT[str, str]: + if not self._patches: + self._patches = self._files(2) + + return self._patches + +- def print_source(self, number: int, value: str = None): ++ def print_source(self, number: str, value: Optional[str] = None) -> None: + if not value: + value = self.sources[number] + + print("Source{}: {}".format(number, value)) + +- def print_patch(self, number: int, value: str = None): ++ def print_patch(self, number: str, value: Optional[str] = None) -> None: + if not value: + value = self.patches[number] + + print("Patch{}: {}".format(number, value)) + +- def list_sources(self): ++ def list_sources(self) -> None: + for (number, value) in self.sources.items(): + self.print_source(number, value) + +- def list_patches(self): ++ def list_patches(self) -> None: + for (number, value) in self.patches.items(): + self.print_patch(number, value) + + @staticmethod +- def _get_file(value: str, directory: str, force: bool, dry: bool): ++ def _get_file(value: str, directory: str, force: bool, dry: bool, ++ headers: Optional[Dict[str, str]] = None) -> None: + parsed = urlparse(value) + + if "#" not in value: +@@ -354,19 +368,23 @@ class Spec: + return + + if parsed.scheme: ++ if dry: ++ print("Would have downloaded: {}".format(value)) ++ return None + if not dry: + path = os.path.join(directory, basename) + + try: + print("Downloading: {}".format(value)) + os.makedirs(directory, exist_ok=True) +- really = get_file(value, path, force) ++ really = get_file(value, path, force, headers=headers) + if really: + print("Downloaded: {}".format(basename)) + + except IOError as e: + print("Download failed:") + print(e) ++ raise e + + except KeyboardInterrupt: + if os.path.isfile(path): +@@ -376,28 +394,53 @@ class Spec: + print("Download cancelled.") + raise + +- else: +- print("Would have downloaded: {}".format(value)) +- +- def get_source(self, number: int, directory: str, force: bool, dry: bool, value: str = None): ++ def get_source(self, number: str, directory: str, force: bool, dry: bool, ++ value: Optional[str] = None, ++ headers: Optional[Dict[str, str]] = None) -> bool: + if not value: + value = self.sources[number] + +- self._get_file(value, directory, force, dry) ++ try: ++ self._get_file(value, directory, force, dry, headers=headers) ++ return False ++ ++ except IOError: ++ return True + +- def get_patch(self, number: int, directory: str, force: bool, dry: bool, value: str = None): ++ def get_patch(self, number: str, directory: str, force: bool, dry: bool, ++ value: Optional[str] = None, ++ headers: Optional[Dict[str, str]] = None) -> bool: + if not value: + value = self.patches[number] + +- self._get_file(value, directory, force, dry) ++ try: ++ self._get_file(value, directory, force, dry, headers=headers) ++ return False ++ ++ except IOError: ++ return True ++ ++ def get_sources(self, directory: str, force: bool, dry: bool, ++ headers: Optional[Dict[str, str]] = None): ++ failure = False + +- def get_sources(self, directory: str, force: bool, dry: bool): + for number, value in self.sources.items(): +- self.get_source(number, directory, force, dry, value) ++ if self.get_source(number, directory, force, dry, value, ++ headers=headers): ++ failure = True ++ ++ return failure ++ ++ def get_patches(self, directory: str, force: bool, dry: bool, ++ headers: Optional[Dict[str, str]] = None): ++ failure = False + +- def get_patches(self, directory: str, force: bool, dry: bool): + for number, value in self.patches.items(): +- self.get_patch(number, directory, force, dry, value) ++ if self.get_patch(number, directory, force, dry, value, ++ headers=headers): ++ failure = True ++ ++ return failure + + + def main() -> int: +@@ -484,6 +527,10 @@ def main() -> int: + if args["get_files"]: + force = args["force"] + dry = args["dry_run"] ++ headers = {} ++ for header in args["headers"]: ++ k, sep, v = header.partition(':') ++ headers[k.strip()] = v.strip() + + if args["directory"] and args["sourcedir"]: + print("Conflicting requests for download directory.") +@@ -496,18 +543,21 @@ def main() -> int: + else: + directory = os.getcwd() + ++ tasks: List[Tuple[Callable[..., bool], Tuple[Any, ...]]] = [] ++ + if args["source"]: + numbers = split_numbers(args["source"]) + + for number in numbers: + if number not in spec.sources.keys(): +- print("No patch with number '{}' found.".format(number)) ++ print("No source with number '{}' found.".format(number)) + continue + +- spec.get_source(number, directory, force, dry) ++ tasks.append((spec.get_source, (number, directory, force, dry, ++ headers))) + + elif args["sources"] and not args["patch"]: +- spec.get_sources(directory, force, dry) ++ tasks.append((spec.get_sources, (directory, force, dry, headers))) + + if args["patch"]: + numbers = split_numbers(args["patch"]) +@@ -517,10 +567,22 @@ def main() -> int: + print("No patch with number '{}' found.".format(number)) + continue + +- spec.get_patch(number, directory, force, dry) ++ tasks.append((spec.get_patch, (number, directory, force, dry, ++ headers))) + + elif args["patches"] and not args["source"]: +- spec.get_patches(directory, force, dry) ++ tasks.append((spec.get_patches, (directory, force, dry, headers))) ++ ++ failure = False ++ ++ for task, fargs in tasks: ++ fail = task(*fargs) ++ ++ if fail: ++ failure = True ++ ++ if failure: ++ return 1 + + return 0 + +diff --git a/spectemplate-cmake.spec b/spectemplate-cmake.spec +new file mode 100644 +index 0000000..0cdcbb8 +--- /dev/null ++++ b/spectemplate-cmake.spec +@@ -0,0 +1,38 @@ ++Name: ++Version: ++Release: 1%{?dist} ++Summary: ++ ++License: ++URL: ++Source0: ++ ++BuildRequires: cmake ++ ++%description ++%{summary}. ++ ++ ++%prep ++%autosetup -q ++ ++ ++%build ++%cmake ++%cmake_build ++ ++ ++%install ++%cmake_install ++ ++ ++%check ++%ctest ++ ++ ++%files ++%license add-license-file-here ++%doc add-docs-here ++ ++ ++%changelog +diff --git a/spectemplate-pyproject.spec b/spectemplate-pyproject.spec +new file mode 100644 +index 0000000..15d5a65 +--- /dev/null ++++ b/spectemplate-pyproject.spec +@@ -0,0 +1,60 @@ ++Name: python-... ++Version: ... ++Release: 1%{?dist} ++Summary: ... ++ ++License: ... ++URL: https://... ++# use a source from git forge or PyPI: ++Source: %{url}/archive/v%{version}/...-%{version}.tar.gz / %{pypi_source ...} ++ ++# for pure Python packages: ++BuildArch: noarch ++# for packages with extension modules: ++BuildRequires: gcc ++ ++BuildRequires: python3-devel ++ ++%global _description %{expand: ++...} ++ ++%description %_description ++ ++%package -n python3-... ++Summary: %{summary} ++ ++%description -n python3-... %_description ++ ++ ++%prep ++%autosetup -p1 -n ...-%{version} ++ ++ ++%generate_buildrequires ++# use the appropriate flags to get all test dependencies: ++%pyproject_buildrequires -x... / -t ++ ++ ++%build ++%pyproject_wheel ++ ++ ++%install ++%pyproject_install ++# list the installed top-level Python module names: ++%pyproject_save_files ... ++ ++ ++%check ++# testing the package is mandatory, at least somehow: ++%tox / %pytest / %pyproject_check_import ... ++ ++ ++%files -n python3-... -f %{pyproject_files} ++%doc README.* ++# only add LICENSE / COPYING if not included in %%{pyproject_files} ++%license LICENSE / COPYING ++%{_bindir}/... ++ ++ ++%changelog diff --git a/Makefile b/Makefile deleted file mode 100644 index 3971401..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: rpmdevtools -# $Id$ -NAME := rpmdevtools -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/progressbar.py b/progressbar.py new file mode 100644 index 0000000..c822e29 --- /dev/null +++ b/progressbar.py @@ -0,0 +1,133 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# +# A simple text-based progress bar, compatible with the basic API of: +# https://github.com/WoLpH/python-progressbar +# +# Copyright (C) 2021 Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + + +import shutil +import sys +import time + + +class ProgressBar: + FORMAT = '{value:>10} / {max_value:<10} [{bars}]' + BARS = '= ' + SPINLEN = 5 + + def __init__(self, stream=sys.stderr, max_width=80, fps=10): + self._stream = stream + self._max_width = max_width + self._min_delay = 1 / fps + + @staticmethod + def _format_value(value): + raise NotImplementedError() + + def start(self, max_value): + self._value = 0 + self._max_value = max_value or 0 + self._status = dict() + self._spinner = 0 + self._timestamp = 0 + self.update(0) + + def update(self, value): + self._value = value + if value > self._max_value: + self._max_value = 0 + + ts = time.time() + if (ts - self._timestamp) < self._min_delay: + return + self._timestamp = ts + + status = {'value': self._format_value(value), + 'max_value': self._format_value(self._max_value) \ + if self._max_value else '???', + 'bars': ''} + + termw = min(shutil.get_terminal_size()[0], self._max_width) + nbars = max(termw - len(self.FORMAT.format(**status)), 0) + nfill = nskip = 0 + + if self._max_value: + nfill = round(nbars * value / self._max_value) + elif nbars > self.SPINLEN: + nfill = self.SPINLEN + nskip = self._spinner % (nbars - self.SPINLEN) + self._spinner = nskip + 1 + + status['bars'] = self.BARS[1] * nskip + \ + self.BARS[0] * nfill + \ + self.BARS[1] * (nbars - nfill - nskip) + + if status == self._status: + return + self._status = status + + self._stream.write('\r') + self._stream.write(self.FORMAT.format(**self._status)) + self._stream.flush() + + def finish(self): + self._max_value = self._value + self._timestamp = 0 # Force an update + self.update(self._value) + + self._stream.write('\n') + self._stream.flush() + + +class DataTransferBar(ProgressBar): + @staticmethod + def _format_value(value): + symbols = ' KMGTPEZY' + depth = 0 + max_depth = len(symbols) - 1 + unit = 1024.0 + + # 1023.95 should be formatted as 1.0 (not 1024.0) + # More info: https://stackoverflow.com/a/63839503 + thres = unit - 0.05 + + while value >= thres and depth < max_depth: + depth += 1 + value /= unit + symbol = ' %siB' % symbols[depth] if depth > 0 else '' + + return '%.1f%s' % (value, symbol) + + +if __name__ == '__main__': + # Show a dummy bar for debugging purposes + + bar = DataTransferBar() + size = 50*1024*1024 + chunk = 1024*1234 + recvd = 0 + + bar.start(size) + while recvd < (size - chunk): + recvd += chunk + bar.update(recvd) + time.sleep(0.1) + bar.update(size) + bar.finish() diff --git a/rpmdevtools-9.5-no_qa_robot.patch b/rpmdevtools-9.5-no_qa_robot.patch new file mode 100644 index 0000000..1e17765 --- /dev/null +++ b/rpmdevtools-9.5-no_qa_robot.patch @@ -0,0 +1,21 @@ +diff -up rpmdevtools-9.5/Makefile.am.orig rpmdevtools-9.5/Makefile.am +--- rpmdevtools-9.5/Makefile.am.orig 2021-12-10 11:37:29.889405680 +0100 ++++ rpmdevtools-9.5/Makefile.am 2021-12-10 11:37:34.637495820 +0100 +@@ -1,4 +1,4 @@ +-SUBDIRS = emacs qa-robot ++SUBDIRS = emacs + + pkgsysconfdir = $(sysconfdir)/rpmdevtools + bashcompdir = @bashcompdir@ +diff -up rpmdevtools-9.5/Makefile.in.orig rpmdevtools-9.5/Makefile.in +--- rpmdevtools-9.5/Makefile.in.orig 2021-12-10 11:37:31.073428158 +0100 ++++ rpmdevtools-9.5/Makefile.in 2021-12-10 11:37:38.304565439 +0100 +@@ -317,7 +317,7 @@ target_alias = @target_alias@ + top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ +-SUBDIRS = emacs qa-robot ++SUBDIRS = emacs + pkgsysconfdir = $(sysconfdir)/rpmdevtools + bin_SCRIPTS = rpmdev-newinit rpmdev-newspec rpmdev-rmdevelrpms + dist_bin_SCRIPTS = rpmdev-checksig rpmdev-diff rpmdev-extract rpmdev-md5 \ diff --git a/rpmdevtools.spec b/rpmdevtools.spec index e0c632b..86879d9 100644 --- a/rpmdevtools.spec +++ b/rpmdevtools.spec @@ -1,58 +1,63 @@ -%define emacs_sitestart_d %{_datadir}/emacs/site-lisp/site-start.d -%define xemacs_sitestart_d %{_datadir}/xemacs/site-packages/lisp/site-start.d -%define spectool_version 1.0.9 - Name: rpmdevtools -Version: 6.4 -Release: 1%{?dist} +Version: 9.6 +Release: 13%{?dist} Summary: RPM Development Tools -Group: Development/Tools -# rpmdev-setuptree is GPLv2, everything else GPLv2+ -License: GPLv2+ and GPLv2 -URL: http://fedoraproject.org/ -Source0: %{name}-%{version}.tar.bz2 -Source1: http://people.redhat.com/nphilipp/spectool/spectool-%{spectool_version}.tar.bz2 -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +# rpmdev-md5 and rpmdev-setuptree are GPL-2.0-only, +# everything else is GPL-2.0-or-later. +License: GPL-2.0-or-later AND GPL-2.0-only +URL: https://pagure.io/rpmdevtools +Source0: https://releases.pagure.org/rpmdevtools/%{name}-%{version}.tar.xz +Source1: progressbar.py + +# Fedora-specific downstream patches +## Force legacy datestamp by default until rhbz#1715412 is resolved +Patch1001: 0001-Force-legacy-datestamp-while-RHBZ-1715412-is-still-a.patch + +# RHEL-specific downstream patches +## Remove fakeroot dependency (rhbz#1905465) +Patch2001: rpmdevtools-9.5-no_qa_robot.patch BuildArch: noarch -Provides: spectool = %{spectool_version} -Obsoletes: fedora-rpmdevtools < 5.0 -# Minimal RPM build requirements -Requires: bash -Requires: bzip2 -Requires: coreutils -Requires: cpio +# help2man, pod2man, *python for creating man pages +BuildRequires: make +BuildRequires: help2man +BuildRequires: %{_bindir}/pod2man +BuildRequires: perl-generators +# python dependencies for spectool +# spectool is executed for creating man page +BuildRequires: python3-devel +%if ! 0%{?rhel} +BuildRequires: python3dist(progressbar2) +%endif +BuildRequires: python3dist(requests) +BuildRequires: python3dist(rpm) +# emacs-common >= 1:22.3-3 for macros.emacs +BuildRequires: emacs-common >= 1:22.3-3 +BuildRequires: bash-completion +Requires: curl Requires: diffutils +%if ! 0%{?rhel} +Requires: fakeroot +%endif +Requires: file Requires: findutils Requires: gawk -Requires: gcc -Requires: gcc-c++ Requires: grep -Requires: gzip -Requires: info -Requires: make -Requires: patch -Requires: redhat-release -Requires: redhat-rpm-config -Requires: rpm-build >= 4.4.2.1 +Requires: rpm-build >= 4.4.2.3 +Requires: python3dist(argcomplete) +%if ! 0%{?rhel} +Requires: python3dist(progressbar2) +%endif +Requires: python3dist(requests) +Requires: python3dist(rpm) Requires: sed -Requires: tar -Requires: unzip -Requires: util-linux -Requires: which -# Additionally required for tool operations -#Requires: cpio -Requires: fakeroot -Requires: file -Requires: perl -Requires: python -Requires: rpm-python -#Requires: sed -Requires: wget +Requires: emacs-filesystem +# Optionally support rpmautospec +Recommends: python%{python3_version}dist(rpmautospec) %description -This package contains scripts and (X)Emacs support files to aid in +This package contains scripts and Emacs support files to aid in development of RPM packages. rpmdev-setuptree Create RPM build tree within user's home directory rpmdev-diff Diff contents of two archives @@ -60,218 +65,583 @@ rpmdev-newspec Creates new .spec from template rpmdev-rmdevelrpms Find (and optionally remove) "development" RPMs rpmdev-checksig Check package signatures using alternate RPM keyring rpminfo Print information about executables and libraries -rpmdev-md5 Display the md5sum of all files in an RPM +rpmdev-md5/sha* Display checksums of all files in an archive file rpmdev-vercmp RPM version comparison checker -spectool Expand and download sources and patches in specfiles +rpmdev-spectool Expand and download sources and patches in specfiles rpmdev-wipetree Erase all files within dirs created by rpmdev-setuptree rpmdev-extract Extract various archives, "tar xvf" style +rpmdev-bumpspec Bump revision in specfile ...and many more. %prep -%setup -q -a 1 -cp -p spectool*/README README.spectool +%autosetup -N +%autopatch -p1 %{!?rhel:-M2000} +grep -lF "%{_bindir}/python " * \ +| xargs sed -i -e "s|%{_bindir}/python |%{_bindir}/python3 |" + +%if 0%{?rhel} +# Let spectool find the bundled progressbar2 implementation +cp %{SOURCE1} . +sed -i \ +'s|^\(import progressbar\)$|'\ +'import sys\n'\ +'sys.path.insert(1, "%{_datadir}/rpmdevtools")\n'\ +'\1\nsys.path.pop(1)|' \ +rpmdev-spectool +%endif %build %configure --libdir=%{_prefix}/lib -make %{?_smp_mflags} +%make_build %install -rm -rf $RPM_BUILD_ROOT +%make_install -make install DESTDIR=$RPM_BUILD_ROOT +echo %%{_datadir}/bash-completion > %{name}.files +[ -d %{buildroot}%{_sysconfdir}/bash_completion.d ] && \ +echo %%{_sysconfdir}/bash_completion.d > %{name}.files -install -pm 755 spectool*/spectool $RPM_BUILD_ROOT%{_bindir} - -for dir in %{emacs_sitestart_d} %{xemacs_sitestart_d} ; do - install -dm 755 $RPM_BUILD_ROOT$dir - ln -s %{_datadir}/rpmdevtools/rpmdev-init.el $RPM_BUILD_ROOT$dir - touch $RPM_BUILD_ROOT$dir/rpmdev-init.elc +for dir in %{_emacs_sitestartdir} ; do + install -dm 755 %{buildroot}$dir + ln -s %{_datadir}/rpmdevtools/rpmdev-init.el %{buildroot}$dir + touch %{buildroot}$dir/rpmdev-init.elc done +# For backwards compatibility +ln -sr %{buildroot}%{_bindir}/rpmdev-spectool %{buildroot}%{_bindir}/spectool +echo ".so man1/rpmdev-spectool.1" > %{buildroot}%{_mandir}/man1/spectool.1 -%clean -rm -rf $RPM_BUILD_ROOT +%if 0%{?rhel} +cp %{SOURCE1} %{buildroot}%{_datadir}/rpmdevtools/ +%py_byte_compile %{python3} %{buildroot}%{_datadir}/rpmdevtools/ +%endif -%triggerin -- emacs-common -[ -d %{emacs_sitestart_d} ] && \ - ln -sf %{_datadir}/rpmdevtools/rpmdev-init.el %{emacs_sitestart_d} || : - -%triggerin -- xemacs-common -[ -d %{xemacs_sitestart_d} ] && \ - ln -sf %{_datadir}/rpmdevtools/rpmdev-init.el %{xemacs_sitestart_d} || : - -%triggerun -- emacs-common -[ $2 -eq 0 ] && rm -f %{emacs_sitestart_d}/rpmdev-init.el* || : - -%triggerun -- xemacs-common -[ $2 -eq 0 ] && rm -f %{xemacs_sitestart_d}/rpmdev-init.el* || : - - -%files -%defattr(-,root,root,-) -%doc COPYING README* +%files -f %{name}.files +%license COPYING +%doc NEWS %config(noreplace) %{_sysconfdir}/rpmdevtools/ %{_datadir}/rpmdevtools/ -%{_bindir}/rpm* -%{_bindir}/spectool -%ghost %{_datadir}/*emacs -%{_mandir}/man[18]/rpm*.[18]* +%{_bindir}/* +%{_emacs_sitestartdir}/rpmdev-init.el +%ghost %{_emacs_sitestartdir}/rpmdev-init.elc +%{_mandir}/man[18]/*.[18]* %changelog +* Sat Aug 09 2025 Fabio Valentini - 9.6-13 +- Revert to last stable release + +* Mon Aug 04 2025 Mark Wielaard - 9.6-12.git83b35ac +- Add BuildRequires for autoreconf, fixes rhbz#2385580 + +* Fri Jul 25 2025 Fedora Release Engineering - 9.6-11.git83b35ac +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 23 2025 Jens Petersen - 9.6-10.git83b35ac +- update to latest git 83b35ac changes + +* Sat Jan 18 2025 Fedora Release Engineering - 9.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 19 2024 Fedora Release Engineering - 9.6-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jan 26 2024 Fedora Release Engineering - 9.6-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 9.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Aug 25 2023 Petr Pisar - 9.6-5 +- Convert a license tag to SPDX format + +* Fri Jul 21 2023 Fedora Release Engineering - 9.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jan 20 2023 Fedora Release Engineering - 9.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 9.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Feb 04 2022 Neal Gompa - 9.6-1 +- Update to 9.6 + +* Fri Jan 21 2022 Fedora Release Engineering - 9.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Nov 9 2021 Jerry James - 9.5-3 +- Drop XEmacs support in F36 and later + +* Fri Jul 23 2021 Fedora Release Engineering - 9.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jul 17 2021 Neal Gompa - 9.5-1 +- Update to 9.5 + +* Sat Jul 17 2021 Neal Gompa - 9.4-1 +- Update to 9.4 + +* Mon Feb 15 2021 Miro Hrončok - 9.3-5 +- Require any Python version of the Python packages + +* Wed Jan 27 2021 Fedora Release Engineering - 9.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 25 2021 Miro Hrončok - 9.3-3 +- spectool: Download text as text + +* Fri Jan 22 2021 Michal Domonkos - 9.3-2 +- Replace requests-download dependency with requests + +* Wed Jan 20 2021 Neal Gompa - 9.3-1 +- Update to 9.3 +- Force legacy datestamp by default until rhbz#1715412 is resolved + +* Mon Oct 05 2020 Neal Gompa - 9.2-1 +- Update to 9.2 + +* Thu Aug 20 2020 Neal Gompa - 9.1-1 +- Update to 9.1 + +* Wed Jul 29 2020 Fedora Release Engineering - 9.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jul 16 2020 Neal Gompa - 9.0-2 +- Backport fix for python spec template + +* Tue Jul 14 2020 Neal Gompa - 9.0-1 +- Update to 9.0 + +* Wed Mar 25 2020 Jitka Plesnikova - 8.10-11 +- Add perl dependencies needed for build + +* Thu Jan 30 2020 Fedora Release Engineering - 8.10-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jul 26 2019 Fedora Release Engineering - 8.10-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 8.10-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Nov 28 2018 Neal Gompa - 8.10-7 +- Fix regex substitution issues with Python 3.7 (rhbz#1651954) + +* Sun Sep 16 2018 Neal Gompa - 8.10-6 +- Fix regex related deprecation warnings (rhbz#1598089) + +* Sat Jul 14 2018 Fedora Release Engineering - 8.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 8.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 8.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 8.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sat Jan 14 2017 Ville Skyttä - 8.10-1 +- Update to 8.10 + +* Mon Dec 19 2016 Miro Hrončok - 8.9-2 +- Rebuild for Python 3.6 + +* Sat Jun 25 2016 Ville Skyttä - 8.9-1 +- Update to 8.9 + +* Sat Jun 25 2016 Ville Skyttä - 8.8-1 +- Update to 8.8 + +* Fri Jun 24 2016 Petr Písař +- Add new mandatory perl build deps + +* Thu Jun 23 2016 Ville Skyttä - 8.7-1 +- Update to 8.7 +- Specfile cleanups + +* Thu Feb 04 2016 Fedora Release Engineering - 8.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jun 5 2015 Ville Skyttä - 8.6-2 +- Use python3 on > F-22 + +* Sun May 10 2015 Ville Skyttä - 8.6-1 +- Update to 8.6 + +* Mon Oct 20 2014 Ville Skyttä - 8.5-1 +- Update to 8.5 +- Mark COPYING as %%license where applicable + +* Sun Jun 08 2014 Fedora Release Engineering - 8.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Oct 17 2013 Ville Skyttä - 8.4-2 +- Do not require devscripts in any scenario. + +* Mon Oct 7 2013 Ville Skyttä - 8.4-1 +- Update to 8.4. + +* Sun Aug 04 2013 Fedora Release Engineering - 8.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jul 17 2013 Petr Pisar - 8.3-4 +- Perl 5.18 rebuild + +* Thu Feb 14 2013 Fedora Release Engineering - 8.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Oct 16 2012 Thomas Woerner - 8.3-2 +- xemacs is not available on RHEL (RHBZ#866841) + +* Sun Sep 2 2012 Ville Skyttä - 8.3-1 +- Update to 8.3. +- Drop specfile constructs no longer needed with Fedora's rpm. + +* Sat Jul 21 2012 Fedora Release Engineering - 8.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 8.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sat Nov 12 2011 Ville Skyttä - 8.2-1 +- Update to 8.2. + +* Tue Apr 26 2011 Ville Skyttä - 8.1-1 +- Update to 8.1. + +* Tue Mar 1 2011 Ville Skyttä - 8.0-3 +- Require xemacs-filesystem on F-15+ (#672093). + +* Wed Feb 09 2011 Fedora Release Engineering - 8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Feb 6 2011 Ville Skyttä - 8.0-1 +- Update to 8.0, fixes #519061 and #657594. + +* Mon Sep 27 2010 Ville Skyttä - 7.10-1 +- Update to 7.10, fixes #595135 and #619867. +- Patch spectool to work with specfiles containing Icon or BuildArchitectures + (#637000). + +* Thu May 20 2010 Ville Skyttä - 7.9-1 +- Update to 7.9, fixes #588313 and #589705. + +* Fri Apr 16 2010 Ville Skyttä - 7.8-2 +- Require %%{_bindir}/man instead of man (#582932). + +* Tue Feb 16 2010 Ville Skyttä - 7.8-1 +- Update to 7.8, fixes #562316. + +* Tue Feb 2 2010 Ville Skyttä - 7.7-1 +- Update to 7.7, fixes #558263. + +* Mon Dec 7 2009 Ville Skyttä - 7.6-1 +- Update to 7.6, fixes #528907. + +* Thu Sep 17 2009 Ville Skyttä - 7.5-1 +- Update to 7.5, fixes #502403. + +* Fri Aug 21 2009 Ville Skyttä - 7.4-1 +- Update to 7.4, fixes #215927 and #466353. +- Patch spectool to make -s and -p to work as documented (Todd Zullinger). + +* Sun Jul 26 2009 Fedora Release Engineering - 7.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon May 25 2009 Ville Skyttä - 7.3-1 +- Release 7.3. + +* Sat May 23 2009 Ville Skyttä +- Add rpmdev-packager - script for getting rpm packager info. +- Use rpmdev-packager in rpmdev-bumpspec and rpmdev-init.el. +- Fix rpmdev-extract MIME type comparisons with file(1) output containing + parameters. + +* Wed May 20 2009 Ville Skyttä - 7.2-1 +- Release 7.2. + +* Sun May 3 2009 Ville Skyttä +- Add dummy spec template for ad-hoc testing. + +* Sat May 2 2009 Ville Skyttä +- Improve newspec/newinit when only "-o foo" argument is given (#498588, + thanks to Edwin ten Brink). +- Try to get packager mail address for *Emacs rpm-spec-mode from ~/.fedora.cert + if rpm-spec-user-mail-address is not set. +- Add xz support to rpmdev-extract. + +* Sat Apr 18 2009 Ville Skyttä +- Make bumpspec's use of "head" POSIX compliant. + +* Thu Apr 16 2009 Ville Skyttä +- Add rpmdev-newinit for easier access to the init script template, move the + template to %%{_sysconfdir}/rpmdevtools, improve reload action example. + +* Tue Apr 7 2009 Ville Skyttä +- Speed up rpmls bash completion. + +* Sat Apr 4 2009 Ville Skyttä - 7.1-1 +- 7.1. +- Make rpmdev-md5 and friends work on non-srpm package files too. + +* Sun Mar 15 2009 Ville Skyttä +- Add bash completion. + +* Mon Mar 9 2009 Ville Skyttä +- Add query format option to rmdevelrpms, sort output by NEVRA. + +* Sun Feb 22 2009 Ville Skyttä +- Use %%global instead of %%define in spec templates. +- Handle %%global in addition to %%define in rpmdev-bumpspec. + +* Mon Jan 26 2009 Ville Skyttä +- Add result dependent exit statuses to rpmdev-vercmp. + +* Fri Dec 26 2008 Ville Skyttä +- Add minimum version to rpm-python dependency (for rpmdev-bumpspec). + +* Fri Dec 26 2008 Ville Skyttä - 7.0-1 +- 7.0. +- Drop fonts spec template, adapt to new ones from Fedora fonts SIG (#477055). +- Add man page for rpmdev-newspec. + +* Tue Dec 16 2008 Ville Skyttä +- Add imake and intltool to internal list of devel packages in rmdevelrpms. + +* Sat Dec 13 2008 Ville Skyttä +- Add rpmdev-sha*/*sum companions to rpmdev-md5 (ticket #7). + +* Wed Nov 26 2008 Ville Skyttä +- Add vamp-plugin-sdk to internal list of non-devel packages in rmdevelrpms + (#472641, Michael Schwendt). + +* Thu Nov 20 2008 Ville Skyttä +- Drop "minimal buildroot" dependencies. +- Drop fedora-rpmdevtools Obsoletes. + +* Mon Oct 13 2008 Ville Skyttä +- Show available types in rpmdev-newspec --help (ticket #6, Todd Zullinger). + +* Fri Sep 26 2008 Ville Skyttä +- Add -r/--rightmost option to rpmdev-bumpspec (ticket #1, Thorsten Leemhuis). +- Add %%packager from rpm config to the set of defaults for rpmdev-bumpspec's + user string. + +* Thu Sep 25 2008 Ville Skyttä +- Bring rpmdev-bumpspec copyright holder closer to truth (Michael Schwendt). + +* Mon Sep 22 2008 Ville Skyttä +- Switch to lzma compressed tarball. + +* Sun Sep 7 2008 Ville Skyttä +- Improve arch specific %%files in perl spec template (#461177, Chris Weyl). + +* Sun Aug 3 2008 Ville Skyttä - 6.7-1 +- 6.7. +- Make rpmdev-diff, rpmdev-md5 and rpminfo honor TMPDIR. + +* Sat Apr 26 2008 Ville Skyttä +- Make rpmls work with URLs. + +* Sun Apr 20 2008 Ville Skyttä +- Include rpm arch in dir names created by rpmdev-extract (#443266). + +* Fri Apr 18 2008 Ville Skyttä +- Remove duplicate "reload" from case block in init script template. +- Fix exit status of "reload" in case service is not running in init + script template (#442993). + +* Thu Mar 27 2008 Ville Skyttä - 6.6-1 +- Fix man page generation. + +* Wed Mar 26 2008 Ville Skyttä - 6.5-1 +- 6.5. + +* Sun Mar 23 2008 Ville Skyttä +- Generate man pages at build time. + +* Sat Mar 22 2008 Ville Skyttä +- Remove libgcj-devel and zlib-devel from rmdevelrpms' internal exclusion + list, they're not essential on non-devel systems any more. + +* Mon Mar 17 2008 Ville Skyttä +- Include ocaml spec template. + +* Tue Mar 11 2008 Ville Skyttä +- Include Michael Schwendt's bumpspecfile.py (as rpmdev-bumpspec). + +* Tue Feb 12 2008 Ville Skyttä +- Sync with qa-robot upstream. +- Update spectool to 1.0.10. + +* Sun Feb 3 2008 Ville Skyttä +- Add support for 7-zip, lzma and lzo in rpmdev-extract. + +* Fri Feb 1 2008 Ville Skyttä +- Add ';;' to the init script template's reload action. + +* Sat Dec 8 2007 Ville Skyttä +- Add fonts spec template from the Fedora Fonts SIG (#407781). +- Add option to use macro style instead of shell style variables to newspec. +- Prefer ~/.config/rpmdevtools/rmdevelrpms.conf over ~/.rmdevelrpmsrc in + rmdevelrpms. + * Fri Oct 12 2007 Lubomir Kundrak - 6.4-1 - Import the previous fix into CVS to resync, bump version * Fri Oct 12 2007 Lubomir Kundrak - 6.3-1 - Fix paths in qa-robot tools -* Sat Sep 8 2007 Ville Skyttä - 6.2-1 +* Sat Sep 8 2007 Ville Skyttä - 6.2-1 - Sync deps with Fedora's new "assumed present in buildroots" packages list. -* Thu Sep 6 2007 Ville Skyttä +* Thu Sep 6 2007 Ville Skyttä - Init script template cleanups. -* Tue Aug 28 2007 Ville Skyttä +* Tue Aug 28 2007 Ville Skyttä - Update rpminfo to version 2004-07-07-02. -* Fri Aug 10 2007 Ville Skyttä - 6.1-1 +* Fri Aug 10 2007 Ville Skyttä - 6.1-1 - Sync COPYING with http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt -* Mon Aug 6 2007 Ville Skyttä +* Mon Aug 6 2007 Ville Skyttä - Work around #250990 in rpmls and rpmdev-extract. - Clarify copyright info of rpmdev-* and rpmls. -* Sat Jul 7 2007 Ville Skyttä +* Sat Jul 7 2007 Ville Skyttä - Fix Epoch handling in the 2-arg form of rpmdev-vercmp with yum < 3.1.2. - The long form of the list option in rmdevelrpms is --list-only, not --list. -* Thu Jul 5 2007 Ville Skyttä - 6.0-1 +* Thu Jul 5 2007 Ville Skyttä - 6.0-1 - Remove check-{buildroot,rpaths*}, now included in rpm-build >= 4.4.2.1. - Drop explicit dependency on patch, pulled in by recent rpm-build. - Add cmake and scons to default devel package list in rpmdev-rmdevelrpms. - Add LSB comment block to init script template. -* Wed Jun 27 2007 Ville Skyttä +* Wed Jun 27 2007 Ville Skyttä - Add 2-argument form for comparing EVR strings to rpmdev-vercmp (available only if rpmUtils.miscutils is available). -* Sat Jun 16 2007 Ville Skyttä +* Sat Jun 16 2007 Ville Skyttä - Include rpmsodiff and dependencies (rpmargs, rpmelfsym, rpmfile, rpmpeek, rpmsoname) from ALT Linux's qa-robot package. - Include rpmls (#213778). -* Fri Jun 15 2007 Ville Skyttä +* Fri Jun 15 2007 Ville Skyttä - Update spectool to 1.0.9 (#243731). -* Wed Apr 11 2007 Ville Skyttä +* Wed Apr 11 2007 Ville Skyttä - Add --list-only option to rmdevelrpms (Thorsten Leemhuis). -* Tue Mar 13 2007 Ville Skyttä +* Tue Mar 13 2007 Ville Skyttä - BR perl(ExtUtils::MakeMaker) by default in perl spec template. - Drop deprecated backwards compatibility with fedora-rpmdevtools. - Update URL. -* Wed Nov 8 2006 Ville Skyttä +* Wed Nov 8 2006 Ville Skyttä - Arch-qualify output of matched packages in rmdevelrpms and allow arch-qualified packages in the config file. -* Wed Oct 25 2006 Ville Skyttä - 5.3-1 +* Wed Oct 25 2006 Ville Skyttä - 5.3-1 - Update spectool to 1.0.8, fixes #212108. -* Mon Oct 2 2006 Ville Skyttä - 5.2-1 +* Mon Oct 2 2006 Ville Skyttä - 5.2-1 - Skip *.jar.so.debug in check-buildroot (#208903). - Treat yasm and *-static as devel packages in rmdevelrpms. -* Sat Sep 9 2006 Ville Skyttä - 5.1-1 +* Sat Sep 9 2006 Ville Skyttä - 5.1-1 - Re-add PHP PEAR spec template, more improvements to it (#198706, Christopher Stone, Remi Collet). -* Tue Aug 22 2006 Ville Skyttä - 5.0-2 +* Tue Aug 22 2006 Ville Skyttä - 5.0-2 - Migrate rmdevelrpms config when upgrading from fedora-rpmdevtools. -* Sun Aug 20 2006 Ville Skyttä - 5.0-1 +* Sun Aug 20 2006 Ville Skyttä - 5.0-1 - Re-rename almost everything to rpmdev-*, with backwards compat symlinks. - Don't encourage %%ghost'ing *.pyo in Python spec template, add some comments. - Drop PHP PEAR spec template, it's not ready yet. -* Wed Aug 2 2006 Ville Skyttä +* Wed Aug 2 2006 Ville Skyttä - Treat *-sdk as devel packages in rmdevelrpms (#199909). - Don't assume compface is a devel package in rmdevelrpms. -* Thu Jul 20 2006 Ville Skyttä +* Thu Jul 20 2006 Ville Skyttä - Mark things that are not needed for noarch module packages in the Perl spec template. -* Wed Jul 19 2006 Ville Skyttä +* Wed Jul 19 2006 Ville Skyttä - Move option arguments to "find" before non-option ones in Perl spec template. - Drop python-abi dependency from Python spec template (#189947). -* Tue Jul 18 2006 Ville Skyttä +* Tue Jul 18 2006 Ville Skyttä - Add PHP PEAR spec template (#198706, Christopher Stone). -* Mon Jul 17 2006 Ville Skyttä +* Mon Jul 17 2006 Ville Skyttä - Drop fedora- prefix everywhere, add backcompat symlinks for execubtables. - Move %%{_sysconfdir}/fedora to %%{_sysconfdir}/rpmdevtools and %%{_datadir}/fedora to %%{_datadir}/rpmdevtools. - Move spec templates to %%{_sysconfdir}/rpmdevtools, mark as config. - Bump version to 5.0. -* Sun Jul 16 2006 Ville Skyttä +* Sun Jul 16 2006 Ville Skyttä - Drop fedora-kmodhelper. - Drop fedora-installdevkeys and GPG keys, modify rpmchecksig to use the system rpmdb. -* Sat Jul 15 2006 Ville Skyttä +* Sat Jul 15 2006 Ville Skyttä - Sort rmdevelrpms' output. -* Fri Jul 7 2006 Ville Skyttä +* Fri Jul 7 2006 Ville Skyttä - Improve ruby spec template (#180066, David Lutterkort). -* Mon Jun 5 2006 Ville Skyttä +* Mon Jun 5 2006 Ville Skyttä - Add manual pages for rmdevelrpms, diffarchive and extract. - Trim pre-2005 changelog entries. - Autotoolize source tree. -* Tue May 16 2006 Ville Skyttä - 1.6-1 +* Tue May 16 2006 Ville Skyttä - 1.6-1 - Add spec template for library packages (#185606, Ignacio Vazquez-Abrams). -* Sun Feb 26 2006 Ville Skyttä - 1.5-1 +* Sun Feb 26 2006 Ville Skyttä - 1.5-1 - Improve diffarchive and extract error messages. -* Fri Feb 24 2006 Ville Skyttä +* Fri Feb 24 2006 Ville Skyttä - Update spectool to 1.0.7 (#162253). -* Thu Feb 9 2006 Ville Skyttä +* Thu Feb 9 2006 Ville Skyttä - Add file(1) based archive type detection to fedora-extract. -* Wed Feb 8 2006 Ville Skyttä +* Wed Feb 8 2006 Ville Skyttä - Add "diff file lists only" option to diffarchive. -* Sun Feb 5 2006 Ville Skyttä +* Sun Feb 5 2006 Ville Skyttä - Add Ruby spec template (#180066, Oliver Andrich) and make newrpmspec use it for ruby-*. -* Sat Feb 4 2006 Ville Skyttä - 1.4-2 +* Sat Feb 4 2006 Ville Skyttä - 1.4-2 - Fix rpath checker tests with bash 3.1 (#178636, Enrico Scholz). -* Fri Dec 30 2005 Ville Skyttä - 1.4-1 +* Fri Dec 30 2005 Ville Skyttä - 1.4-1 - Update spectool to 1.0.6 (#176521). -* Wed Dec 28 2005 Ville Skyttä +* Wed Dec 28 2005 Ville Skyttä - Update spectool to 1.0.5 (#162253), require wget for it. - Add disttags to spec templates. -* Thu Oct 27 2005 Ville Skyttä - 1.3-1 +* Thu Oct 27 2005 Ville Skyttä - 1.3-1 - check-rpaths-worker: detect when RPATH references the parent directory of an absolute path (#169298, Enrico Scholz). - Add regression test for check-rpaths* (#169298, Enrico Scholz). - Honor user's indent-tabs-mode setting in fedora-init.el (#170902). -* Fri Oct 7 2005 Ville Skyttä - 1.2-1 +* Fri Oct 7 2005 Ville Skyttä - 1.2-1 - check-buildroot: grep for buildroot as a fixed string, not a regexp. - Update FSF's address in copyright notices. - check-rpaths-worker: allow multiple $ORIGIN paths in an RPATH and allow @@ -282,12 +652,12 @@ rm -rf $RPM_BUILD_ROOT - Teach fedora-newrpmspec to detect and use different specfile variants. - Use fedora-newrpmspec in fedora-init.el. -* Fri Jul 8 2005 Ville Skyttä - 1.1-1 +* Fri Jul 8 2005 Ville Skyttä - 1.1-1 - Drop more pre-FC2 compat stuff from Perl spec template. - Treat gcc-gfortran as a devel package in rmdevelrpms. - Drop fedora.us GPG key. -* Thu Mar 24 2005 Ville Skyttä - 1.0-1 +* Thu Mar 24 2005 Ville Skyttä - 1.0-1 - Make fedora-diffarchive work better with archives containing dirs without read/execute permissions. - Sync "Epoch: 0" drops with Fedora Extras CVS. @@ -302,11 +672,11 @@ rm -rf $RPM_BUILD_ROOT - Don't try to remove gcc-java and related packages by default in rmdevelrpms. - Remove "full featured" spec template, convert newrpmspec to use -minimal. -* Sun Feb 6 2005 Ville Skyttä - 0:0.3.1-1 +* Sun Feb 6 2005 Ville Skyttä - 0:0.3.1-1 - Make buildrpmtree and wipebuildtree less dependent on a specific configuration (#147014, Ignacio Vazquez-Abrams). -* Tue Jan 18 2005 Ville Skyttä - 0:0.3.0-1 +* Tue Jan 18 2005 Ville Skyttä - 0:0.3.0-1 - Remove 0.fdr. prefixes and epoch 0's from all spec templates. - Add try-restart action to init script template. - Remove deprecated fedora-diffrpm and fedora-unrpm. diff --git a/sources b/sources index 94bcc61..4bb8a6c 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -b3563111a44656efd3a2d9b44b830562 spectool-1.0.9.tar.bz2 -52c257170fb8de032196f04859bdee2c rpmdevtools-6.4.tar.bz2 +SHA512 (rpmdevtools-9.6.tar.xz) = 691fec8944029dbe60cb3eab0200d1201f5aa3dd11cd49e8313ee7c1fe998237217ea9c5ae7b4a70f61f3c998093f23d26266b23f41607ddca3148d5f6b6ae06