From a493be252f25b57767023930d4ed927b37816e71 Mon Sep 17 00:00:00 2001 From: Bogdano Arendartchuk Date: Mon, 29 Jan 2007 18:14:56 +0000 Subject: Removed bogus macros files and added [macros ..] sections to repsys.conf. These sections are referenced by the "rpm-macros" option in [submit ..] sections and contain the RPM macros to be used with the target of the package being generated. These macros are defined using --define option of rpm. --- Makefile | 2 +- RepSys/cgiutil.py | 24 ++++++++++++++++++------ RepSys/log.py | 36 ++++++++---------------------------- RepSys/rpmutil.py | 13 ++++++++++--- create-srpm | 3 ++- repsys.conf | 18 ++++++++++++++++++ repsys.macros | 6 ------ setup.py | 2 +- 8 files changed, 58 insertions(+), 46 deletions(-) delete mode 100644 repsys.macros diff --git a/Makefile b/Makefile index f55bbfe..e1aa91b 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ TAG := $(shell echo "V$(VERSION)_$(RELEASE)" | tr -- '-.' '__') FILES = ChangeLog Makefile MANIFEST.in PKG-INFO create-srpm getsrpm-mdk rebrand-mdk \ {compatv15,default,oldfashion,revno}.chlog \ - repsys repsys.conf repsys.macros repsys.spec setup.cfg setup.py RepSys/*.py RepSys/{cgi,commands}/*.py + repsys repsys.conf repsys.spec setup.cfg setup.py RepSys/*.py RepSys/{cgi,commands}/*.py # rules to build a test rpm diff --git a/RepSys/cgiutil.py b/RepSys/cgiutil.py index 6dda91e..35c5efb 100644 --- a/RepSys/cgiutil.py +++ b/RepSys/cgiutil.py @@ -1,6 +1,7 @@ #!/usr/bin/python from RepSys import Error, config from RepSys.svn import SVN +from RepSys.ConfigParser import NoSectionError import time import re @@ -10,11 +11,23 @@ class SubmitTarget: def __init__(self): self.name = "" self.target = "" + self.macros = [] self.allowed = [] self.scripts = [] TARGETS = [] +def parse_macrosref(refs, config): + macros = [] + for name in refs: + secname = "macros %s" % name + try: + macros.extend(config.walk(secname, raw=True)) + except NoSectionError: + raise Error, "missing macros section " \ + "%r in configuration" % secname + return macros + def get_targets(): global TARGETS if not TARGETS: @@ -27,12 +40,11 @@ def get_targets(): target = SubmitTarget() target.name = m.group(1) for option, value in config.walk(section): - if option == "target": - target.target = value.split() - elif option == "allowed": - target.allowed = value.split() - elif option == "scripts": - target.scripts = value.split() + if option in ("target", "allowed", "scripts"): + setattr(target, option, value.split()) + elif option == "rpm-macros": + refs = value.split() + target.macros = parse_macrosref(refs, config) else: raise Error, "unknown [%s] option %s" % (section, option) TARGETS.append(target) diff --git a/RepSys/log.py b/RepSys/log.py index 6d7bde0..3645fdd 100644 --- a/RepSys/log.py +++ b/RepSys/log.py @@ -42,13 +42,14 @@ default_template = """ #end for """ -def getrelease(pkgdirurl, rev=None): +def getrelease(pkgdirurl, rev=None, macros=[]): """Tries to obtain the version-release of the package for a yet-not-markrelease revision of the package. Is here where things should be changed if "automatic release increasing" will be used. """ + from RepSys.rpmutil import rpm_macros_defs svn = SVN(baseurl=pkgdirurl) tmpdir = tempfile.mktemp() try: @@ -60,9 +61,7 @@ def getrelease(pkgdirurl, rev=None): found = glob.glob(os.path.join(tmpdir, "*.spec")) if found: specpath = found[0] - fmt = "--define \"%s %s\"" - macros = (fmt % macro for macro in parse_macros()) - options = " ".join(macros) + options = rpm_macros_defs(macros) command = (("rpm -q --qf '%%{VERSION}-%%{RELEASE}\n' " "--specfile %s %s 2>/dev/null") % (specpath, options)) @@ -80,26 +79,6 @@ def getrelease(pkgdirurl, rev=None): if os.path.isdir(tmpdir): shutil.rmtree(tmpdir) - -def parse_macros(): - path = config.get("log", "macros-file", None) - if not path: - # if the user did not declated where is the file, ignore it - return - if not os.path.isfile(path): - # complain when declared and not found - sys.stderr.write("warning: could not open macros file: %s\n" % - path) - return - for line in open(path): - line = line.strip() - if line.startswith("#") or not line: - continue - name, value = line.split(None, 1) - # trying to have the same format from rpm macros files - name = name[1:] - yield (name, value) - class _Revision: lines = [] date = None @@ -331,7 +310,8 @@ def parse_markrelease_log(relentry): return version, release, from_rev -def svn2rpm(pkgdirurl, rev=None, size=None, submit=False, template=None): +def svn2rpm(pkgdirurl, rev=None, size=None, submit=False, + template=None, macros=[]): concat = config.get("log", "concat", "").split() revoffset = get_revision_offset() svn = SVN(baseurl=pkgdirurl) @@ -394,7 +374,7 @@ def svn2rpm(pkgdirurl, rev=None, size=None, submit=False, template=None): if notsubmitted: # if they are not submitted yet, what we have to do is to add # a release/version number from getrelease() - version, release = getrelease(pkgdirurl) + version, release = getrelease(pkgdirurl, macros=macros) toprelease = make_release(entries=notsubmitted, released=False, version=version, release=release) releases.append(toprelease) @@ -405,7 +385,7 @@ def svn2rpm(pkgdirurl, rev=None, size=None, submit=False, template=None): def specfile_svn2rpm(pkgdirurl, specfile, rev=None, size=None, - submit=False, template=None): + submit=False, template=None, macros=[]): newlines = [] found = 0 @@ -422,7 +402,7 @@ def specfile_svn2rpm(pkgdirurl, specfile, rev=None, size=None, # Create new changelog newlines.append("\n\n%changelog\n") newlines.append(svn2rpm(pkgdirurl, rev=rev, size=size, submit=submit, - template=template)) + template=template, macros=macros)) # Merge old changelog, if available oldurl = config.get("log", "oldurl") diff --git a/RepSys/rpmutil.py b/RepSys/rpmutil.py index 968470c..367fd45 100644 --- a/RepSys/rpmutil.py +++ b/RepSys/rpmutil.py @@ -25,6 +25,11 @@ def get_spec(pkgdirurl, targetdir=".", submit=False): if os.path.isdir(tmpdir): shutil.rmtree(tmpdir) +def rpm_macros_defs(macros): + defs = ("--define \"%s %s\"" % macro for macro in macros) + args = " ".join(defs) + return args + def get_srpm(pkgdirurl, mode = "current", targetdirs = None, @@ -37,6 +42,7 @@ def get_srpm(pkgdirurl, scripts = [], submit = False, template = None, + macros = [], verbose = 0): svn = SVN(baseurl=pkgdirurl) tmpdir = tempfile.mktemp() @@ -68,7 +74,7 @@ def get_srpm(pkgdirurl, if svnlog: submit = not not revision specfile_svn2rpm(pkgdirurl, spec, revision, submit=submit, - template=template) + template=template, macros=macros) revisionreal = svn.revision(pkgdirurl) for script in scripts: status, output = execcmd(script, tmpdir, spec, str(revision), @@ -78,9 +84,10 @@ def get_srpm(pkgdirurl, if packager: packager = " --define 'packager %s'" % packager - execcmd("rpm -bs --nodeps %s %s %s %s %s %s %s %s %s" % + defs = rpm_macros_defs(macros) + execcmd("rpm -bs --nodeps %s %s %s %s %s %s %s %s %s %s" % (topdir, builddir, rpmdir, sourcedir, specdir, - srcrpmdir, patchdir, packager, spec)) + srcrpmdir, patchdir, packager, spec, defs)) if revision and revisionreal: srpm = glob.glob(os.path.join(srpmsdir, "*.src.rpm"))[0] diff --git a/create-srpm b/create-srpm index fc235bf..5223d45 100755 --- a/create-srpm +++ b/create-srpm @@ -52,7 +52,8 @@ class CmdIface: packager=packager, revname=1, svnlog=1, - scripts=target.scripts) + scripts=target.scripts, + macros=target.macros) uploadsrpm = get_helper("upload-srpm") if uploadsrpm: diff --git a/repsys.conf b/repsys.conf index 8eeea05..dce1fe3 100644 --- a/repsys.conf +++ b/repsys.conf @@ -40,3 +40,21 @@ default = Cooker target = /export/home/repsys allowed = svn+ssh://svn.mandriva.com/svn/packages/cooker scripts = /usr/share/repsys/rebrand-mdk +## +## rpm-macros refers to the sections containing the macros used for this +## target. The values will be used to build the rpmbuild command line. For +## example: +## +## [macros cooker] +## a = b +## c = %a +## +## will render in the command line: --define "a b" --define "c %a". +## +#rpm-macros = global cooker + +#[macros global] +#distsuffix = mdv + +#[macros cooker] +#mandriva_release = 2007.1 diff --git a/repsys.macros b/repsys.macros deleted file mode 100644 index 83caa21..0000000 --- a/repsys.macros +++ /dev/null @@ -1,6 +0,0 @@ -# Use this file to override the macros from the machine where repsys is -# being run. It is used when retrieving version-release to be used in the -# changelog of a package not released yet. - -#%mandriva_release 2007.1 -#%distsuffix mdv diff --git a/setup.py b/setup.py index 701f8d6..272ec84 100755 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ setup(name="repsys", "compatv15.chlog", "create-srpm", "rebrand-mdk"]), - ("/etc/", ["repsys.conf", "repsys.macros"])] + ("/etc/", ["repsys.conf"])] ) # vim:ts=4:sw=4:et -- cgit v1.2.1