Hello community, here is the log from the commit of package spec-cleaner for openSUSE:Factory checked in at 2017-02-15 10:07:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/spec-cleaner (Old) and /work/SRC/openSUSE:Factory/.spec-cleaner.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "spec-cleaner" Changes: -------- --- /work/SRC/openSUSE:Factory/spec-cleaner/spec-cleaner.changes 2017-01-04 19:37:15.617425183 +0100 +++ /work/SRC/openSUSE:Factory/.spec-cleaner.new/spec-cleaner.changes 2017-02-15 10:07:34.986245519 +0100 @@ -1,0 +2,7 @@ +Mon Feb 13 12:02:34 UTC 2017 - tchva...@suse.com + +- Version update to 0.9.2: + * More minimal fixes + * Add option to keep vertical space in preamble if desired + +------------------------------------------------------------------- Old: ---- spec-cleaner-0.9.1.tar.gz New: ---- spec-cleaner-0.9.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ spec-cleaner.spec ++++++ --- /var/tmp/diff_new_pack.YLR1OI/_old 2017-02-15 10:07:35.498173410 +0100 +++ /var/tmp/diff_new_pack.YLR1OI/_new 2017-02-15 10:07:35.498173410 +0100 @@ -1,7 +1,7 @@ # # spec file for package spec-cleaner # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2012 Vincent Untz <vu...@opensuse.org> # # All modifications and additions to the file contributed by third parties @@ -20,7 +20,7 @@ # This is used for Fedora, we need to sync this %{!?py3_ver: %define py3_ver %{python3_version}} Name: spec-cleaner -Version: 0.9.1 +Version: 0.9.2 Release: 0 Summary: .spec file cleaner License: BSD-3-Clause @@ -82,6 +82,7 @@ %{_libexecdir}/obs/service/clean_spec_file.service %dir %{python3_sitelib}/spec_cleaner/ %{python3_sitelib}/spec_cleaner/__init__.py +%{python3_sitelib}/spec_cleaner/__main__.py %{python3_sitelib}/spec_cleaner/dependency_parser.py %{python3_sitelib}/spec_cleaner/fileutils.py %{python3_sitelib}/spec_cleaner/rpmbuild.py ++++++ spec-cleaner-0.9.1.tar.gz -> spec-cleaner-0.9.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/.travis.yml new/spec-cleaner-spec-cleaner-0.9.2/.travis.yml --- old/spec-cleaner-spec-cleaner-0.9.1/.travis.yml 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/.travis.yml 2017-02-13 12:58:57.000000000 +0100 @@ -8,8 +8,14 @@ include: - python: 2.7 env: TOX_ENV=py27 + - python: 3.3 + env: TOX_ENV=py33 + - python: 3.4 + env: TOX_ENV=py34 - python: 3.5 env: TOX_ENV=py35 + - python: 3.6 + env: TOX_ENV=py36 install: - pip install tox script: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/README.md new/spec-cleaner-spec-cleaner-0.9.2/README.md --- old/spec-cleaner-spec-cleaner-0.9.1/README.md 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/README.md 2017-02-13 12:58:57.000000000 +0100 @@ -225,6 +225,7 @@ NASA-1.3 | NASA Open Source Agreement 1.3 Naumen | Naumen Public License NBPL-1.0 | Net Boolean Public License v1 +Net-SNMP | Net-SNMP License NetCDF | NetCDF license NGPL | Nethack General Public License NOSL | Netizen Open Source License @@ -310,16 +311,20 @@ SPL-1.0 | Sun Public License v1.0 Watcom-1.0 | Sybase Open Watcom Public License 1.0 TCL | TCL/TK License +TCP-wrappers | TCP Wrappers License Unlicense | The Unlicense TMate | TMate Open Source License TORQUE-1.1 | TORQUE v2.5+ Software License v1.1 TOSL | Trusster Open Source License +Unicode-DFS-2015 | Unicode License Agreement - Data Files and Software (2015) +Unicode-DFS-2016 | Unicode License Agreement - Data Files and Software (2016) Unicode-TOU | Unicode Terms of Use UPL-1.0 | Universal Permissive License v1.0 NCSA | University of Illinois/NCSA Open Source License Vim | Vim License VOSTROM | VOSTROM Public License for Open Source VSL-1.0 | Vovida Software License v1.0 +W3C-20150513 | W3C Software Notice and Document License (2015-05-13) W3C-19980720 | W3C Software Notice and License (1998-07-20) W3C | W3C Software Notice and License (2002-12-31) Wsuipa | Wsuipa License diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/data/excludes-bracketing.txt new/spec-cleaner-spec-cleaner-0.9.2/data/excludes-bracketing.txt --- old/spec-cleaner-spec-cleaner-0.9.1/data/excludes-bracketing.txt 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/data/excludes-bracketing.txt 2017-02-13 12:58:57.000000000 +0100 @@ -45,8 +45,7 @@ gpg_verify icon_theme_cache_post[^\s]* if(\s*\(.*\))? -ifarch -ifnarch +if[^\s]* include insserv_[^\s]* install @@ -87,6 +86,19 @@ pretrans preun py_compile +python_alternative +python_install_alternative +python_uninstall_alternative +python(.?)_only +pypy(.?)_only +pycache_only +python(.?)_build +python(.?)_install +pypy3_build +pypy3_install +python_exec +python_expand +python_subpackages qmake qmake5 qmake5_install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/data/licenses_changes.txt new/spec-cleaner-spec-cleaner-0.9.2/data/licenses_changes.txt --- old/spec-cleaner-spec-cleaner-0.9.1/data/licenses_changes.txt 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/data/licenses_changes.txt 2017-02-13 12:58:57.000000000 +0100 @@ -592,6 +592,8 @@ NTP+ NTP+ Naumen Naumen Naumen+ Naumen+ +Net-SNMP Net-SNMP +Net-SNMP+ Net-SNMP+ NetCDF NetCDF NetCDF SUSE-NetCDF NetCDF+ NetCDF+ @@ -931,6 +933,8 @@ TCL SUSE-TCL TCL TCL TCL+ TCL+ +TCP-wrappers TCP-wrappers +TCP-wrappers+ TCP-wrappers+ TMate TMate TMate+ TMate+ TORQUE-1.1 TORQUE-1.1 @@ -940,6 +944,10 @@ UPL-1.0 UPL-1.0 UPL-1.0+ UPL-1.0+ Unicode http://www.unicode.org/copyright.html +Unicode-DFS-2015 Unicode-DFS-2015 +Unicode-DFS-2015+ Unicode-DFS-2015+ +Unicode-DFS-2016 Unicode-DFS-2016 +Unicode-DFS-2016+ Unicode-DFS-2016+ Unicode-TOU Unicode-TOU Unicode-TOU+ Unicode-TOU+ Unlicense Unlicense @@ -956,6 +964,8 @@ W3C+ W3C+ W3C-19980720 W3C-19980720 W3C-19980720+ W3C-19980720+ +W3C-20150513 W3C-20150513 +W3C-20150513+ W3C-20150513+ WTFPL SUSE-WTFPL-2.0 WTFPL WTFPL WTFPL+ WTFPL+ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/__init__.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/__init__.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/__init__.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/__init__.py 2017-02-13 12:58:57.000000000 +0100 @@ -12,7 +12,7 @@ from .rpmcleaner import RpmSpecCleaner -__version__ = '0.9.1' +__version__ = '0.9.2' def process_args(argv): @@ -30,30 +30,32 @@ parser.add_argument('spec', metavar='SPEC', type=str, help='spec file to beautify') - parser.add_argument('-c', '--cmake', action='store_true', default=False, + parser.add_argument('-c', '--cmake', action='store_true', help='convert dependencies to their cmake() counterparts, requires bit more of cleanup in spec afterwards.') - output_group.add_argument('-d', '--diff', action='store_true', default=False, + output_group.add_argument('-d', '--diff', action='store_true', help='run the diff program to show differences between new and original specfile.') parser.add_argument('--diff-prog', default='vimdiff', help='specify the diff binary to call with diff option.') - parser.add_argument('-f', '--force', action='store_true', default=False, + parser.add_argument('-f', '--force', action='store_true', help='overwrite the output file if already exist.') - output_group.add_argument('-i', '--inline', action='store_true', default=False, + output_group.add_argument('-i', '--inline', action='store_true', help='inline the changes directly to the parsed file.') - parser.add_argument('-m', '--minimal', action='store_true', default=False, + parser.add_argument('-m', '--minimal', action='store_true', help='run in minimal mode that does not do anything intrusive (ie. just sets the Copyright)') - parser.add_argument('--no-copyright', action='store_true', default=False, + parser.add_argument('--no-copyright', action='store_true', help='do not include official SUSE copyright hear and just keep what is present') output_group.add_argument('-o', '--output', default='', help='specify the output file for the cleaned spec content.') - parser.add_argument('-p', '--pkgconfig', action='store_true', default=False, + parser.add_argument('-p', '--pkgconfig', action='store_true', help='convert dependencies to their pkgconfig() counterparts, requires bit more of cleanup in spec afterwards.') - parser.add_argument('--perl', action='store_true', default=False, + parser.add_argument('--perl', action='store_true', help='convert dependencies to their perl() counterparts, highly expansive because most main packages provide some perl symbols, use carefully') - parser.add_argument('-t', '--tex', action='store_true', default=False, + parser.add_argument('-t', '--tex', action='store_true', help='convert dependencies to their tex() counterparts, requires verification of the output afterwards.') parser.add_argument('-v', '--version', action='version', version=__version__, help='show package version and exit') + parser.add_argument('-k', '--keep-space', action='store_true', + help='keep empty lines in preamble intact.') # print help if there is no argument if len(argv) < 1: @@ -86,6 +88,7 @@ 'perl': options.perl, 'tex': options.tex, 'cmake': options.cmake, + 'keep_space': options.keep_space, } return options_dict diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/__main__.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/__main__.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/__main__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/__main__.py 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,18 @@ +from __future__ import absolute_import + +import os +import sys + +# If we are running from a wheel, add the wheel to sys.path. +if __package__ == '': + # __file__ is spec-cleaner-*.whl/spec_cleaner/__main__.py. + # First dirname call strips of '/__main__.py', second strips off '/spec_cleaner'. + # Resulting path is the name of the wheel itself. + # Add that to sys.path so we can import spec_cleaner. + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +import spec_cleaner + +if __name__ == '__main__': + sys.exit(spec_cleaner.main()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmcleaner.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmcleaner.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmcleaner.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmcleaner.py 2017-02-13 12:58:57.000000000 +0100 @@ -41,6 +41,7 @@ fin = None fout = None current_section = None + skip_run = False _previous_line = None _previous_nonempty_line = None @@ -87,7 +88,10 @@ (self.reg.re_spec_changelog, RpmChangelog) ] + # Find all the present licenses self._load_licenses() + # Determine if we need to skip the spec + self._find_skip_parser() if self.options['output']: self.fout = open(self.options['output'], 'w') @@ -114,12 +118,22 @@ spec_macrofuncs = find_macros_with_arg(self.options['specfile']) return keywords + global_macrofuncs + spec_macrofuncs + def _find_skip_parser(self): + """ + Try to figure out if user defined that this file should not be + ever parsed by spec-cleaner + """ + for line in self.fin: + if self.reg.re_skipcleaner.match(line): + self.skip_run = True + break + self.fin.seek(0) + def _load_licenses(self): # detect all present licenses in the spec and detect if we have more # than one. If we do put license to each subpkg licenses = [] - filecontent = open(self.options['specfile']) - for line in filecontent: + for line in self.fin: if self.reg.re_license.match(line): line = line.rstrip('\n') line = line.rstrip('\r') @@ -128,12 +142,11 @@ value = match.groups()[len(match.groups()) - 1] if value not in licenses: licenses.append(value) - filecontent.close() - filecontent = None if len(licenses) > 1: self.options['subpkglicense'] = True # put first license as placeholder if main preamble is missing one self.options['license'] = licenses[0] + self.fin.seek(0) def _detect_preamble_section(self, line): # This is seriously ugly but can't think of cleaner way @@ -166,6 +179,12 @@ return True return False + def _detect_condition_change(self, line): + if any([re.match(line) for re in [ + self.reg.re_endif, self.reg.re_else, self.reg.re_endcodeblock]]): + return True + return False + def _detect_new_section(self, line): # Detect if we have multiline value from preamble if hasattr(self.current_section, 'multiline') and self.current_section.multiline: @@ -178,10 +197,11 @@ # if previous non-empty-uncommented line was starting the condition # we end up the condition section in preamble (if applicable) and # proceed to output - if self.reg.re_else.match(line) or self.reg.re_endif.match(line) or \ - (type(self.current_section) is Section and self.reg.re_if.match(line)): + if self._detect_condition_change(line) or \ + (type(self.current_section) is Section and (self.reg.re_if.match(line) + or self.reg.re_codeblock.match(line))): if not hasattr(self.current_section, 'condition') or \ - (hasattr(self.current_section, 'condition') and not self.current_section.condition): + (hasattr(self.current_section, 'condition') and not self.current_section.condition): # If we have to break out we go ahead with small class # which just print the one evil line return Section @@ -221,7 +241,25 @@ # we are staying in the section return None + def _check_for_newline(self, detected_class, line): + """ + Check if by default we want newline or not after the end of section detected + """ + # We don't want to print newlines before %else and %endif + if detected_class == Section and self._detect_condition_change(line): + return False + else: + return True + def run(self): + # If we are skipping we should do nothing + if self.skip_run: + sys.stderr.write(".spec file {0} is not being processed due to definiton of 'nospeccleaner'\n".format(self.options['specfile'])) + for line in self.fin: + self.fout.write(line) + self.fout.flush() + return 0 + # We always start with Copyright self.current_section = RpmCopyright(self.options) @@ -239,12 +277,7 @@ # USE: 'spec-cleaner file > /dev/null' to see the stderr output # sys.stderr.write("class: '{0}' line: '{1}'\n".format(new_class, line)) if new_class: - # We don't want to print newlines before %else and %endif - if new_class == Section and (self.reg.re_else.match(line) or self.reg.re_endif.match(line)): - newline = False - else: - newline = True - self.current_section.output(self.fout, newline, new_class.__name__) + self.current_section.output(self.fout, self._check_for_newline(new_class, line), new_class.__name__) # start new class self.current_section = new_class(self.options) # skip empty line adding if we are switching sections diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmpackage.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmpackage.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmpackage.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmpackage.py 2017-02-13 12:58:57.000000000 +0100 @@ -12,7 +12,7 @@ def add(self, line): # The first line (%package) should always be added and is different # from the lines we handle in RpmPreamble. - if not self.previous_line: + if self.previous_line is None: Section.add(self, line) return # If the package is lang package we add here comment about the lang diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmpreamble.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmpreamble.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmpreamble.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmpreamble.py 2017-02-13 12:58:57.000000000 +0100 @@ -59,7 +59,6 @@ categories_order = [ 'define', - 'define_conditions', 'bconds', 'bcond_conditions', 'name', @@ -127,6 +126,8 @@ self.perl = options['perl'] self.cmake = options['cmake'] self.tex = options['tex'] + # are we supposed to keep empty lines intact? + self.keep_space = options['keep_space'] # dict of license replacement options self.license_conversions = options['license_conversions'] # dict of pkgconfig and other conversions @@ -263,8 +264,10 @@ # the switches do not have any effect if self._condition_bcond: self.paragraph['bcond_conditions'] += self.paragraph['conditions'] + elif len(self.paragraph['define']) == 0: + self.paragraph['bconds'] += self.paragraph['conditions'] else: - self.paragraph['define_conditions'] += self.paragraph['conditions'] + self.paragraph['define'] += self.paragraph['conditions'] # in case the nested condition contains define we consider all parents # to require to be on top too; if len(self._oldstore) == 0: @@ -514,9 +517,9 @@ def add(self, line): line = self._complete_cleanup(line) - # if the line is empty just skip it we don't need new section for it - # we do this only in headers so it must be here - if len(line) == 0: + + # if the line is empty, just skip it, unless keep_space is true + if not self.keep_space and len(line) == 0: return # if it is multiline variable then we need to append to previous content @@ -534,7 +537,7 @@ # else where we mark end of paragraph or endif # which mark the end of our subclass and that we can # return the data to our main class for at-bottom placement - elif self.reg.re_if.match(line): + elif self.reg.re_if.match(line) or self.reg.re_codeblock.match(line): self._add_line_to('conditions', line) self.condition = True # check for possibility of the bcond conditional @@ -552,7 +555,7 @@ self.previous_line = line return - elif self.reg.re_endif.match(line): + elif self.reg.re_endif.match(line) or self.reg.re_endcodeblock.match(line): self._add_line_to('conditions', line) # Set conditions to false only if we are # closing last of the nested ones @@ -563,8 +566,9 @@ return elif self.reg.re_comment.match(line): - self.current_group.append(line) - self.previous_line = line + if line or self.previous_line: + self.current_group.append(line) + self.previous_line = line return elif self.reg.re_source.match(line): @@ -607,7 +611,7 @@ if not self.minimal: # add the comment about using proper macro which needs # investingaton - if self.previous_line and not self.previous_line.startswith('#') and not self.previous_line.startswith('PreReq'): + if self.previous_line is not None and not self.previous_line.startswith('#') and not self.previous_line.startswith('PreReq'): self.current_group.append('# FIXME: use proper Requires(pre/post/preun/...)') self._add_line_value_to('prereq', match.group(1)) return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmregexp.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmregexp.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmregexp.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmregexp.py 2017-02-13 12:58:57.000000000 +0100 @@ -24,9 +24,11 @@ # rpmpreamble # WARNING: keep in sync with rpmcleaner Section change detection - re_if = re.compile(r'^\s*(?:%{?if\s|%{?ifarch\s|%{?ifnarch\s)', re.IGNORECASE) + re_if = re.compile(r'^\s*(?:%{?if\s|%{?ifarch\s|%{?ifnarch\s|%{?if\S*}?(\s.*|)$)', re.IGNORECASE) + re_codeblock = re.compile(r'^\s*(### COMMON-([a-zA-Z0-9]+)-BEGIN ###|# MANUAL|# SECTION)(\s.*|)$', re.IGNORECASE) re_else = re.compile(r'^\s*%else(\s.*|)$', re.IGNORECASE) re_endif = re.compile(r'^\s*%endif(\s.*|)$', re.IGNORECASE) + re_endcodeblock = re.compile(r'^\s*(### COMMON-([a-zA-Z0-9]+)-END ###|# /MANUAL|# (END|/)SECTION)(\s.*|)$', re.IGNORECASE) re_name = re.compile(r'^Name:\s*(\S*)', re.IGNORECASE) re_version = re.compile(r'^Version:\s*(.*)', re.IGNORECASE) re_release = re.compile(r'^Release:\s*(\S*)', re.IGNORECASE) @@ -82,8 +84,8 @@ re_optflags_quotes = re.compile(r'=\s*\${?RPM_OPT_FLAGS}?\s*$') re_optflags = re.compile(r'\${?RPM_OPT_FLAGS}?') re_suseupdateconfig = re.compile(r'(%{?suse_update_config|${?\?suse_update_config:)') - re_configure = re.compile(r'(^|(.*\s)?)./configure($|(\s(.*)?))') - re_cmake = re.compile(r'(^|(.*\s)?)cmake($|(\s(.*)?))') + re_configure = re.compile(r'(^|(.*\s)?)./configure(\s.*|)$') + re_cmake = re.compile(r'(^|(.*\s)?)cmake(\s.*|)$') # rpmcopyright re_copyright = re.compile(r'^#\s*Copyright\ \(c\)\s*(.*)', re.IGNORECASE) @@ -93,7 +95,8 @@ re_nodebuginfo = re.compile(r'^#\s*nodebuginfo\s*$', re.IGNORECASE) re_sslcerts = re.compile(r'^#\s*needssslcertforbuild\s*$', re.IGNORECASE) re_icecream = re.compile(r'^#\s*icecream\s*$', re.IGNORECASE) - re_vimmodeline = re.compile(r'^# vim:', re.IGNORECASE) + re_vimmodeline = re.compile(r'^#\s*vim:', re.IGNORECASE) + re_skipcleaner = re.compile(r'^#\s*nospeccleaner\s*$', re.IGNORECASE) # rpminstall re_clean = re.compile(r'rm\s+(-?\w?\ ?)*"?(%{buildroot}|\$b)"?$') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmsection.py new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmsection.py --- old/spec-cleaner-spec-cleaner-0.9.1/spec_cleaner/rpmsection.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/spec_cleaner/rpmsection.py 2017-02-13 12:58:57.000000000 +0100 @@ -48,9 +48,9 @@ """ Check if we are in condition that is contained or not """ - if self.reg.re_if.match(line): + if self.reg.re_if.match(line) or self.reg.re_codeblock.match(line): self._condition_counter += 1 - if self.reg.re_endif.match(line): + if self.reg.re_endif.match(line) or self.reg.re_endcodeblock.match(line): self._condition_counter -= 1 if self._condition_counter > 0: @@ -188,7 +188,7 @@ if self.minimal: line = line.replace('%__' + i, r[i]) - for i in ['aclocal', 'ar', 'as', 'autoconf', 'autoheader', 'automake', 'bzip2', 'cat', 'chgrp', 'chmod', 'chown', 'cp', 'cpio', 'file', 'gpg', 'grep', 'gzip', 'id', 'install', 'ld', 'libtoolize', 'make', 'mkdir', 'mv', 'nm', 'objcopy', 'objdump', 'patch', 'perl', 'python', 'ranlib', 'restorecon', 'rm', 'rsh', 'sed', 'semodule', 'ssh', 'strip', 'tar', 'unzip', 'xz']: + for i in ['aclocal', 'ar', 'as', 'autoconf', 'autoheader', 'automake', 'bzip2', 'cat', 'chgrp', 'chmod', 'chown', 'cp', 'cpio', 'file', 'gpg', 'grep', 'gzip', 'id', 'install', 'ld', 'libtoolize', 'make', 'mkdir', 'mv', 'nm', 'objcopy', 'objdump', 'patch', 'perl', 'python', 'python2', 'python3', 'pypy3', 'ranlib', 'restorecon', 'rm', 'rsh', 'sed', 'semodule', 'ssh', 'strip', 'tar', 'unzip', 'xz']: line = line.replace('%{__' + i + '}', i) if self.minimal: line = line.replace('%__' + i, i) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/acceptance-tests.py new/spec-cleaner-spec-cleaner-0.9.2/tests/acceptance-tests.py --- old/spec-cleaner-spec-cleaner-0.9.1/tests/acceptance-tests.py 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/acceptance-tests.py 2017-02-13 12:58:57.000000000 +0100 @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import glob import os import shutil import tempfile @@ -25,27 +26,18 @@ We run individual tests to verify the content compared to expected results """ - def __init__(self): - """ - Declare global scope variables for further use. - """ - - self.input_dir = self._get_input_dir() - self.fixtures_dir = self._get_fixtures_dir() - self.header_dir = self._get_header_dir() - self.tex_dir = self._get_tex_dir() - self.perl_dir = self._get_perl_dir() - self.cmake_dir = self._get_cmake_dir() - self.minimal_fixtures_dir = self._get_minimal_fixtures_dir() - self.tmp_dir = tempfile.mkdtemp() - self.tmp_file_rerun = tempfile.NamedTemporaryFile() - - def __del__(self): - """ - Remove the tmp directory - """ - if shutil: - shutil.rmtree(self.tmp_dir, ignore_errors=True) + option_presets = { + 'pkgconfig': False, + 'inline': False, + 'diff': False, + 'diff_prog': 'vimdiff', + 'minimal': False, + 'no_copyright': True, + 'tex': False, + 'perl': False, + 'cmake': False, + 'keep_space': False, + } def _difftext(self, lines1, lines2, junk=None): junk = junk or (' ', '\t') @@ -70,339 +62,89 @@ # ocmpare self._difftext(stream1.readlines(), stream2.readlines(), junk) - def _get_input_dir(self): - """ - Return path for input files used by tests - """ - return os.path.join(os.getcwd(), 'tests/in/') - - def _get_header_dir(self): - """ - Return path for output files used by header tests - """ - return os.path.join(os.getcwd(), 'tests/header/') - - def _get_tex_dir(self): - """ - Return path for output files used by tex tests - """ - return os.path.join(os.getcwd(), 'tests/tex/') - - def _get_perl_dir(self): - """ - Return path for output files used by perl tests - """ - return os.path.join(os.getcwd(), 'tests/perl/') - - def _get_cmake_dir(self): - """ - Return path for output files used by cmake tests - """ - return os.path.join(os.getcwd(), 'tests/cmake/') - - def _get_fixtures_dir(self): - """ - Return path for representative output specs - """ - return os.path.join(os.getcwd(), 'tests/out/') - - def _get_minimal_fixtures_dir(self): - """ - Return path for representative output specs - """ - return os.path.join(os.getcwd(), 'tests/out-minimal/') - - def _obtain_list_of_tests(self): + def _list_tests(self, directory='in'): """ Generate list of tests we are going to use according to what is on hdd """ - test_files = list() - - for spec in os.listdir(self.fixtures_dir): - if spec.endswith(".spec"): - test_files.append(spec) + testglob = os.path.join('tests', directory, '*.spec') + return [os.path.basename(f) for f in glob.glob(testglob)] - return test_files - - def _run_individual_test(self, options): + def _run_individual_test(self, test, compare_dir, infile=None, outfile=None, options={}, **kwargs): """ Run the cleaner as specified and store the output for further comparison. """ - cleaner = RpmSpecCleaner(options) - cleaner.run() + with tempfile.NamedTemporaryFile() as default_tmp_file: + if infile is None: + infile = os.path.join('tests', 'in', test) + + if outfile is None: + outfile = default_tmp_file.name + + full_options = { + 'specfile': infile, + 'output': outfile, + } + full_options.update(self.option_presets) + full_options.update(kwargs) + full_options.update(options) + + cleaner = RpmSpecCleaner(full_options) + cleaner.run() + + if compare_dir is not None: + compare = os.path.join('tests', compare_dir, test) + testfile = full_options['inline'] and infile or outfile + with open(compare) as ref, open(testfile) as test: + self.assertStreamEqual(ref, test) + + def _compare_and_rerun(self, compare_dir, **kwargs): + for test in self._list_tests(): + with tempfile.NamedTemporaryFile(suffix="-"+test) as tmpfile: + tmp = tmpfile.name + yield self._run_individual_test, test, compare_dir, None, tmp, kwargs + yield self._run_individual_test, test, compare_dir, tmp, None, kwargs def test_normal_outputs(self): - for test in self._obtain_list_of_tests(): - tmp_file = os.path.join(self.tmp_dir, test) - # This is to run twice to check we are not breaking in concurent runs - yield self.check_normal_output, test, tmp_file - yield self.check_normal_output_rerun, test, tmp_file - - def check_normal_output(self, test, tmp_file): - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.fixtures_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) - - def check_normal_output_rerun(self, test, infile): - compare = os.path.join(self.fixtures_dir, test) - tmp_file = self.tmp_file_rerun.name - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + for testcase in self._compare_and_rerun('out', pkgconfig=True): + yield testcase def test_minimal_outputs(self): - for test in self._obtain_list_of_tests(): - tmp_file = os.path.join(self.tmp_dir, test) - # This is to run twice to check we are not breaking in concurent runs - yield self.check_minimal_output, test, tmp_file - yield self.check_minimal_output_rerun, test, tmp_file - - def check_minimal_output(self, test, tmp_file): - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.minimal_fixtures_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': True, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) - - def check_minimal_output_rerun(self, test, infile): - compare = os.path.join(self.minimal_fixtures_dir, test) - tmp_file = self.tmp_file_rerun.name - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': True, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + for testcase in self._compare_and_rerun('out-minimal', pkgconfig=True, minimal=True): + yield testcase def test_copyright_output(self): - test = 'header.spec' - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.header_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': True, - 'no_copyright': False, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + self._run_individual_test('header.spec', 'header', minimal=True, no_copyright=False) + + def test_keep_space_output(self): + for test in self._list_tests('keep-space'): + self._run_individual_test(test, 'keep-space', keep_space=True) def test_pkgconfig_disabled_output(self): - test = 'pkgconfrequires.spec' - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.fixtures_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': False, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + self._run_individual_test('pkgconfrequires.spec', 'out', pkgconfig=False) def test_inline_function(self): - test = self._obtain_list_of_tests()[0] - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.fixtures_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - shutil.copyfile(infile, tmp_file) - - options = { - 'specfile': tmp_file, - 'output': '', - 'pkgconfig': True, - 'inline': True, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + test = self._list_tests()[0] + infile = os.path.join('tests', 'in', test) + with tempfile.NamedTemporaryFile() as tmpfile: + shutil.copyfile(infile, tmpfile.name) + self._run_individual_test(test, None, + infile=tmpfile.name, outfile='', + pkgconfig=True, inline=True) def test_regular_output(self): - test = self._obtain_list_of_tests()[0] - infile = os.path.join(self.input_dir, test) - - options = { - 'specfile': infile, - 'output': '', - 'pkgconfig': True, - 'inline': False, - 'diff': False, - 'diff_prog': 'gvimdiff', - 'minimal': False, - 'no_copyright': False, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) + test = self._list_tests()[0] + self._run_individual_test(test, None, outfile='') @raises(RpmException) def test_diff_function(self): - test = self._obtain_list_of_tests()[0] - infile = os.path.join(self.input_dir, test) - - options = { - 'specfile': infile, - 'output': '', - 'pkgconfig': True, - 'inline': False, - 'diff': True, - 'diff_prog': 'error', - 'minimal': False, - 'no_copyright': False, - 'tex': False, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) + test = self._list_tests()[0] + self._run_individual_test(test, None, outfile='', diff=True, diff_prog='error') def test_tex_output(self): - test = 'tex.spec' - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.tex_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': False, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': True, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + self._run_individual_test('tex.spec', 'tex', tex=True) def test_perl_output(self): - test = 'perl.spec' - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.perl_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': False, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': False, - 'perl': True, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + self._run_individual_test('perl.spec', 'perl', perl=True) def test_cmake_output(self): - test = 'cmake.spec' - infile = os.path.join(self.input_dir, test) - compare = os.path.join(self.cmake_dir, test) - tmp_file = os.path.join(self.tmp_dir, test) - - options = { - 'specfile': infile, - 'output': tmp_file, - 'pkgconfig': False, - 'inline': False, - 'diff': False, - 'diff_prog': 'vimdiff', - 'minimal': False, - 'no_copyright': True, - 'tex': True, - 'perl': False, - 'cmake': False, - } - self._run_individual_test(options) - with open(compare) as ref, open(tmp_file) as test: - self.assertStreamEqual(ref, test) + self._run_individual_test('cmake.spec', 'cmake', cmake=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/cmake/cmake.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/cmake/cmake.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/cmake/cmake.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/cmake/cmake.spec 2017-02-13 12:58:57.000000000 +0100 @@ -1,3 +1,3 @@ -BuildRequires: Vc-devel +BuildRequires: cmake(Vc) %changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/codeblock.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/codeblock.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/codeblock.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/codeblock.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,67 @@ +Name: codeblock +# MANUAL +BuildRequires: aaa +BuildRequires: bbb +# /MANUAL +# SECTION the testing dependencies +BuildRequires: python-nose +BuildRequires: python-mock +# /SECTION +### COMMON-PATCH-BEGIN ### +# implement "--record-rpm" option for distutils installations +Patch01: Python-3.0b1-record-rpm.patch +# support lib-vs-lib64 distinction +Patch02: Python-3.5.0-multilib.patch +# securing usage of readlink/realpath in PySys_SetArgv +Patch03: python-2.6b1-canonicalize2.patch +# support finding packages in /usr/local, install to /usr/local by default +Patch04: python-3.3.0b1-localpath.patch +# replace DATE, TIME and COMPILER by fixed definitions to aid reproducible +# builds +Patch06: python-3.3.0b1-fix_date_time_compiler.patch +# fix wrong include path in curses-panel module +Patch15: python-3.3.0b1-curses-panel.patch +# POSIX_FADV_WILLNEED throws EINVAL. Use a different constant in test +Patch09: python-3.3.0b1-test-posix_fadvise.patch +# Disable global and distutils sysconfig comparison test, we deviate from the +# default depending on optflags +Patch12: python-3.3.3-skip-distutils-test_sysconfig_module.patch +# Raise timeout value for test_subprocess +Patch07: subprocess-raise-timeout.patch +# PATCH-FIX-UPSTREAM Fix argument passing in libffi for aarch64 +Patch19: python-2.7-libffi-aarch64.patch +# PATCH-FIX-UPSTREAM python3-ncurses-6.0-accessors.patch dims...@opensuse.org +# -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1 +Patch20: python3-ncurses-6.0-accessors.patch +# PATCH-FIX-UPSTREAM Python-3.5.1-fix_lru_cache_copying.patch -- Fix copying +# the lru_cache() wrapper object -- https://bugs.python.org/issue25447 +Patch30: Python-3.5.1-fix_lru_cache_copying.patch +### COMMON-PATCH-END ### +BuildRequires: test +Patch05: somepatch.patch +%build +### COMMON-CONFIG-BEGIN ### +export PATH=$PATH:/sbin:%{_prefix}/sbin +sed -ie "s/%{device_mapper_version}/1.03.01/g" VERSION_DM +%configure \ + --enable-dmeventd --enable-cmdlib \ + --enable-udev_rules --enable-udev_sync \ + --with-udev-prefix="%{_prefix}/" \ + --enable-selinux \ + --enable-pkgconfig \ + --with-usrlibdir=%{_libdir} \ + --with-usrsbindir=%{_sbindir} \ + --with-default-dm-run-dir=/run \ + --with-tmpfilesdir=%{_tmpfilesdir} \ + --with-thin=internal \ + --with-device-gid=6 \ + --with-device-mode=0640 \ + --with-device-uid=0 \ + --with-dmeventd-path=%{_sbindir}/dmeventd \ + --with-thin-check=%{_sbindir}/thin_check \ + --with-thin-dump=%{_sbindir}/thin_dump \ + --with-thin-repair=%{_sbindir}/thin_repair \ + $extra_opts +### COMMON-CONFIG-END ### + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/conditions.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/conditions.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/conditions.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/conditions.spec 2017-02-13 12:58:57.000000000 +0100 @@ -1,5 +1,7 @@ Version: 2.8.2 +%ifpython2 Release: 0 +%endif Summary: AppArmor userlevel parser utility License: GPL-2.0+ Group: Productivity/Networking/Security diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/excludes-bracketing.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/excludes-bracketing.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/excludes-bracketing.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/excludes-bracketing.spec 2017-02-13 12:58:57.000000000 +0100 @@ -40,10 +40,9 @@ %ghc_pkg_recache %ghost %glib2_gsettings_schema_[^\s]* -%global %gpg_verify %icon_theme_cache_post[^\s]* -%if(\s*\(.*)? +%if something %ifarch %ifnarch %include @@ -84,6 +83,20 @@ %pretrans %preun %py_compile +%python_alternative +%python_install_alternative +%python_uninstall_alternative +%python2_only +%python3_only +%pypy3_only +%pycache_only +%python3_build +%python2_install +%pypy3_build +%pypy3_install +%python_exec +%python_expand +%python_subpackages %qmake %qmake5 %qmake5_install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/fixme-with-space.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/fixme-with-space.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/fixme-with-space.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/fixme-with-space.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,5 @@ +Requires: abcd +Requires: efgh + +PreReq: abcd +PreReq: efgh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/keep-condition-ordering.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/keep-condition-ordering.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/keep-condition-ordering.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/keep-condition-ordering.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,19 @@ +%if 0%{?suse_version} > 1230 +%bcond_without systemd +%else +%bcond_with systemd +%endif +%bcond_with self_hosting + +%define root %version +%if %{?xyz} +%define foobar foobar +%endif +%define complexthing %{root}-complex-%{?foobar}baz + +%if %{?abc} +%define ahoj babi +%bcond_without hamster +%endif + +%global test somethingelse diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/in/skipped.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/in/skipped.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/in/skipped.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/in/skipped.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,38 @@ +# +# spec file for package skipped +# +# Copyright (c) 2017 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 +# 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 http://bugs.opensuse.org/ +# +# nospeccleaner + + +Name: garbage +Version: a +Release: fgf >= 1.0 + +%prep +%setup -q + +%build +%configure +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} %{?_smp_mflags} + +%files +%defattr(-,root,root) +%doc ChangeLog README COPYING + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/keep-space/fixme-with-space.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/keep-space/fixme-with-space.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/keep-space/fixme-with-space.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/keep-space/fixme-with-space.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,8 @@ +Requires: abcd +Requires: efgh + +# FIXME: use proper Requires(pre/post/preun/...) +PreReq: abcd +PreReq: efgh + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/keep-space/keep-condition-ordering.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/keep-space/keep-condition-ordering.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/keep-space/keep-condition-ordering.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/keep-space/keep-condition-ordering.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,21 @@ + +%define root %{version} +%if %{?xyz} +%define foobar foobar +%endif +%define complexthing %{root}-complex-%{?foobar}baz + +%if %{?abc} +%define ahoj babi +%bcond_without hamster +%endif + +%global test somethingelse +%if 0%{?suse_version} > 1230 +%bcond_without systemd +%else +%bcond_with systemd +%endif +%bcond_with self_hosting + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/codeblock.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/codeblock.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/codeblock.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/codeblock.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,68 @@ +Name: codeblock +Patch05: somepatch.patch +BuildRequires: test +# MANUAL +BuildRequires: aaa +BuildRequires: bbb +# /MANUAL +# SECTION the testing dependencies +BuildRequires: python-mock +BuildRequires: python-nose +# /SECTION +### COMMON-PATCH-BEGIN ### +# implement "--record-rpm" option for distutils installations +Patch01: Python-3.0b1-record-rpm.patch +# support lib-vs-lib64 distinction +Patch02: Python-3.5.0-multilib.patch +# securing usage of readlink/realpath in PySys_SetArgv +Patch03: python-2.6b1-canonicalize2.patch +# support finding packages in /usr/local, install to /usr/local by default +Patch04: python-3.3.0b1-localpath.patch +# replace DATE, TIME and COMPILER by fixed definitions to aid reproducible +# builds +Patch06: python-3.3.0b1-fix_date_time_compiler.patch +# Raise timeout value for test_subprocess +Patch07: subprocess-raise-timeout.patch +# POSIX_FADV_WILLNEED throws EINVAL. Use a different constant in test +Patch09: python-3.3.0b1-test-posix_fadvise.patch +# Disable global and distutils sysconfig comparison test, we deviate from the +# default depending on optflags +Patch12: python-3.3.3-skip-distutils-test_sysconfig_module.patch +# fix wrong include path in curses-panel module +Patch15: python-3.3.0b1-curses-panel.patch +# PATCH-FIX-UPSTREAM Fix argument passing in libffi for aarch64 +Patch19: python-2.7-libffi-aarch64.patch +# PATCH-FIX-UPSTREAM python3-ncurses-6.0-accessors.patch dims...@opensuse.org +# -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1 +Patch20: python3-ncurses-6.0-accessors.patch +# PATCH-FIX-UPSTREAM Python-3.5.1-fix_lru_cache_copying.patch -- Fix copying +# the lru_cache() wrapper object -- https://bugs.python.org/issue25447 +Patch30: Python-3.5.1-fix_lru_cache_copying.patch +### COMMON-PATCH-END ### + +%build +### COMMON-CONFIG-BEGIN ### +export PATH=$PATH:/sbin:%{_prefix}/sbin +sed -ie "s/%{device_mapper_version}/1.03.01/g" VERSION_DM +%configure \ + --enable-dmeventd --enable-cmdlib \ + --enable-udev_rules --enable-udev_sync \ + --with-udev-prefix="%{_prefix}/" \ + --enable-selinux \ + --enable-pkgconfig \ + --with-usrlibdir=%{_libdir} \ + --with-usrsbindir=%{_sbindir} \ + --with-default-dm-run-dir=/run \ + --with-tmpfilesdir=%{_tmpfilesdir} \ + --with-thin=internal \ + --with-device-gid=6 \ + --with-device-mode=0640 \ + --with-device-uid=0 \ + --with-dmeventd-path=%{_sbindir}/dmeventd \ + --with-thin-check=%{_sbindir}/thin_check \ + --with-thin-dump=%{_sbindir}/thin_dump \ + --with-thin-repair=%{_sbindir}/thin_repair \ + $extra_opts +### COMMON-CONFIG-END ### + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/conditions.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/conditions.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/conditions.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/conditions.spec 2017-02-13 12:58:57.000000000 +0100 @@ -1,5 +1,4 @@ Version: 2.8.2 -Release: 0 Summary: AppArmor userlevel parser utility License: GPL-2.0+ Group: Productivity/Networking/Security @@ -11,6 +10,9 @@ BuildRequires: python Requires: insserv BuildRoot: %{_tmppath}/%{name}-%{version}-build +%ifpython2 +Release: 0 +%endif %if %{distro} == "suse" # FIXME: use proper Requires(pre/post/preun/...) PreReq: %insserv_prereq diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/excludes-bracketing.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/excludes-bracketing.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/excludes-bracketing.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/excludes-bracketing.spec 2017-02-13 12:58:57.000000000 +0100 @@ -45,11 +45,9 @@ %ghc_pkg_recache %ghost %glib2_gsettings_schema_[^\s]* - -%global %gpg_verify %icon_theme_cache_post[^\s]* -%if(\s*\(.*)? +%if something %ifarch %ifnarch %include @@ -94,6 +92,20 @@ %pretrans %preun %py_compile +%python_alternative +%python_install_alternative +%python_uninstall_alternative +%python2_only +%python3_only +%pypy3_only +%pycache_only +%python3_build +%python2_install +%pypy3_build +%pypy3_install +%python_exec +%python_expand +%python_subpackages %qmake %qmake5 %qmake5_install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/fixme-with-space.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/fixme-with-space.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/fixme-with-space.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/fixme-with-space.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,7 @@ +Requires: abcd +Requires: efgh +# FIXME: use proper Requires(pre/post/preun/...) +PreReq: abcd +PreReq: efgh + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/keep-condition-ordering.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/keep-condition-ordering.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/keep-condition-ordering.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/keep-condition-ordering.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,18 @@ +%define root %{version} +%if %{?xyz} +%define foobar foobar +%endif +%define complexthing %{root}-complex-%{?foobar}baz +%if %{?abc} +%define ahoj babi +%bcond_without hamster +%endif +%global test somethingelse +%if 0%{?suse_version} > 1230 +%bcond_without systemd +%else +%bcond_with systemd +%endif +%bcond_with self_hosting + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out/skipped.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out/skipped.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out/skipped.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out/skipped.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,38 @@ +# +# spec file for package skipped +# +# Copyright (c) 2017 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 +# 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 http://bugs.opensuse.org/ +# +# nospeccleaner + + +Name: garbage +Version: a +Release: fgf >= 1.0 + +%prep +%setup -q + +%build +%configure +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} %{?_smp_mflags} + +%files +%defattr(-,root,root) +%doc ChangeLog README COPYING + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/codeblock.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/codeblock.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/codeblock.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/codeblock.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,68 @@ +Name: codeblock +Patch05: somepatch.patch +BuildRequires: test +# MANUAL +BuildRequires: aaa +BuildRequires: bbb +# /MANUAL +# SECTION the testing dependencies +BuildRequires: python-mock +BuildRequires: python-nose +# /SECTION +### COMMON-PATCH-BEGIN ### +# implement "--record-rpm" option for distutils installations +Patch01: Python-3.0b1-record-rpm.patch +# support lib-vs-lib64 distinction +Patch02: Python-3.5.0-multilib.patch +# securing usage of readlink/realpath in PySys_SetArgv +Patch03: python-2.6b1-canonicalize2.patch +# support finding packages in /usr/local, install to /usr/local by default +Patch04: python-3.3.0b1-localpath.patch +# replace DATE, TIME and COMPILER by fixed definitions to aid reproducible +# builds +Patch06: python-3.3.0b1-fix_date_time_compiler.patch +# Raise timeout value for test_subprocess +Patch07: subprocess-raise-timeout.patch +# POSIX_FADV_WILLNEED throws EINVAL. Use a different constant in test +Patch09: python-3.3.0b1-test-posix_fadvise.patch +# Disable global and distutils sysconfig comparison test, we deviate from the +# default depending on optflags +Patch12: python-3.3.3-skip-distutils-test_sysconfig_module.patch +# fix wrong include path in curses-panel module +Patch15: python-3.3.0b1-curses-panel.patch +# PATCH-FIX-UPSTREAM Fix argument passing in libffi for aarch64 +Patch19: python-2.7-libffi-aarch64.patch +# PATCH-FIX-UPSTREAM python3-ncurses-6.0-accessors.patch dims...@opensuse.org +# -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1 +Patch20: python3-ncurses-6.0-accessors.patch +# PATCH-FIX-UPSTREAM Python-3.5.1-fix_lru_cache_copying.patch -- Fix copying +# the lru_cache() wrapper object -- https://bugs.python.org/issue25447 +Patch30: Python-3.5.1-fix_lru_cache_copying.patch +### COMMON-PATCH-END ### + +%build +### COMMON-CONFIG-BEGIN ### +export PATH=$PATH:/sbin:%{_prefix}/sbin +sed -ie "s/%{device_mapper_version}/1.03.01/g" VERSION_DM +%configure \ + --enable-dmeventd --enable-cmdlib \ + --enable-udev_rules --enable-udev_sync \ + --with-udev-prefix="%{_prefix}/" \ + --enable-selinux \ + --enable-pkgconfig \ + --with-usrlibdir=%{_libdir} \ + --with-usrsbindir=%{_sbindir} \ + --with-default-dm-run-dir=/run \ + --with-tmpfilesdir=%{_tmpfilesdir} \ + --with-thin=internal \ + --with-device-gid=6 \ + --with-device-mode=0640 \ + --with-device-uid=0 \ + --with-dmeventd-path=%{_sbindir}/dmeventd \ + --with-thin-check=%{_sbindir}/thin_check \ + --with-thin-dump=%{_sbindir}/thin_dump \ + --with-thin-repair=%{_sbindir}/thin_repair \ + $extra_opts +### COMMON-CONFIG-END ### + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/conditions.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/conditions.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/conditions.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/conditions.spec 2017-02-13 12:58:57.000000000 +0100 @@ -1,5 +1,4 @@ Version: 2.8.2 -Release: 0 Summary: AppArmor userlevel parser utility License: GPL-2.0+ Group: Productivity/Networking/Security @@ -11,6 +10,9 @@ BuildRequires: python Requires: insserv BuildRoot: %{_tmppath}/%{name}-%{version}-build +%ifpython2 +Release: 0 +%endif %if %{distro} == "suse" PreReq: %{insserv_prereq} PreReq: aaa_base diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/excludes-bracketing.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/excludes-bracketing.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/excludes-bracketing.spec 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/excludes-bracketing.spec 2017-02-13 12:58:57.000000000 +0100 @@ -44,11 +44,9 @@ %ghc_pkg_recache %ghost %glib2_gsettings_schema_[^\s]* - -%global %gpg_verify %icon_theme_cache_post[^\s]* -%if(\s*\(.*)? +%if something %ifarch %ifnarch %include @@ -93,6 +91,20 @@ %pretrans %preun %py_compile +%python_alternative +%python_install_alternative +%python_uninstall_alternative +%python2_only +%python3_only +%pypy3_only +%pycache_only +%python3_build +%python2_install +%pypy3_build +%pypy3_install +%python_exec +%python_expand +%python_subpackages %qmake %qmake5 %qmake5_install diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/fixme-with-space.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/fixme-with-space.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/fixme-with-space.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/fixme-with-space.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,6 @@ +Requires: abcd +Requires: efgh +PreReq: abcd +PreReq: efgh + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/keep-condition-ordering.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/keep-condition-ordering.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/keep-condition-ordering.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/keep-condition-ordering.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,18 @@ +%define root %version +%if %{?xyz} +%define foobar foobar +%endif +%define complexthing %{root}-complex-%{?foobar}baz +%if %{?abc} +%define ahoj babi +%bcond_without hamster +%endif +%global test somethingelse +%if 0%{?suse_version} > 1230 +%bcond_without systemd +%else +%bcond_with systemd +%endif +%bcond_with self_hosting + +%changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/skipped.spec new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/skipped.spec --- old/spec-cleaner-spec-cleaner-0.9.1/tests/out-minimal/skipped.spec 1970-01-01 01:00:00.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tests/out-minimal/skipped.spec 2017-02-13 12:58:57.000000000 +0100 @@ -0,0 +1,38 @@ +# +# spec file for package skipped +# +# Copyright (c) 2017 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 +# 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 http://bugs.opensuse.org/ +# +# nospeccleaner + + +Name: garbage +Version: a +Release: fgf >= 1.0 + +%prep +%setup -q + +%build +%configure +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} %{?_smp_mflags} + +%files +%defattr(-,root,root) +%doc ChangeLog README COPYING + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec-cleaner-spec-cleaner-0.9.1/tox.ini new/spec-cleaner-spec-cleaner-0.9.2/tox.ini --- old/spec-cleaner-spec-cleaner-0.9.1/tox.ini 2016-12-30 14:10:32.000000000 +0100 +++ new/spec-cleaner-spec-cleaner-0.9.2/tox.ini 2017-02-13 12:58:57.000000000 +0100 @@ -1,5 +1,5 @@ [tox] -envlist = py27,py35 +envlist = py27,py33,py34,py35,py36 minversion = 1.6 skipsdist = True ++++++ spec-cleaner.dsc ++++++ --- /var/tmp/diff_new_pack.YLR1OI/_old 2017-02-15 10:07:35.710143552 +0100 +++ /var/tmp/diff_new_pack.YLR1OI/_new 2017-02-15 10:07:35.710143552 +0100 @@ -1,6 +1,6 @@ Format: 3.0 (quilt) Source: spec-cleaner -Version: 0.9.1-1 +Version: 0.9.2-1 Binary: spec-cleaner Maintainer: Přemysl Janouch <pjano...@suse.com> Architecture: all