diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 44478a7..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/v0.4.2.tar.gz diff --git a/climbing-nemesis.py b/climbing-nemesis.py deleted file mode 100644 index e78fd0c..0000000 --- a/climbing-nemesis.py +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/env python - -import xml.etree.ElementTree as ET -import argparse -import StringIO -import re -import subprocess -import logging - -from os.path import exists as pathexists -from os.path import realpath -from os.path import join as pathjoin -from os import makedirs -from os import symlink -from os import remove as rmfile -from shutil import copyfile - -class Artifact(object): - def __init__(self, a, g, v): - self.artifact = a - self.group = g - self.version = v - - @classmethod - def fromCoords(k, coords): - g,a,v = coords.split(":") - return k(a, g, v) - - @classmethod - def fromSubtree(k, t, ns): - a = t.find("./%sartifactId" % ns).text - g = t.find("./%sgroupId" % ns).text - v = t.find("./%sversion" % ns).text - return k(a, g, v) - - def contains(self, substrings): - for s in substrings: - if s in self.artifact or s in self.group: - cn_debug("ignoring %r because it contains %s" % (self, s)) - return True - if len(substrings) > 0: - cn_debug("not ignoring %r; looked for %r" % (self, substrings)) - return False - - def __repr__(self): - return "%s:%s:%s" % (self.group, self.artifact, self.version) - -class DummyPOM(object): - def __init__(self, groupID=None, artifactID=None, version=None): - self.groupID = groupID - self.artifactID = artifactID - self.version = version - self.deps = [] - -def interestingDep(dt, namespace): - if len(dt.findall("./%soptional" % namespace)) != 0: - cn_debug("ignoring optional dep %r" % Artifact.fromSubtree(dt, namespace)) - return False - if [e for e in dt.findall("./%sscope" % namespace) if e.text == "test"] != []: - cn_debug("ignoring test dep %r" % Artifact.fromSubtree(dt, namespace)) - return False - return True - -class POM(object): - def __init__(self, filename, suppliedGroupID=None, suppliedArtifactID=None, ignored_deps=[], override=None, extra_deps=[]): - self.filename = filename - self.sGroupID = suppliedGroupID - self.sArtifactID = suppliedArtifactID - self.logger = logging.getLogger("com.freevariable.climbing-nemesis") - self.deps = [] - self.ignored_deps = ignored_deps - self.extra_deps = extra_deps - cn_debug("POM: extra_deps is %r" % extra_deps) - self._parsePom() - self.claimedGroup, self.claimedArtifact = override is not None and override or (self.groupID, self.artifactID) - - def _parsePom(self): - tree = ET.parse(self.filename) - project = tree.getroot() - self.logger.info("parsing POM %s", self.filename) - self.logger.debug("project tag is '%s'", project.tag) - tagmatch = re.match("[{](.*)[}].*", project.tag) - namespace = tagmatch and "{%s}" % tagmatch.groups()[0] or "" - self.logger.debug("looking for '%s'", ("./%sgroupId" % namespace)) - groupIDtag = project.find("./%sgroupId" % namespace) - if groupIDtag is None: - groupIDtag = project.find("./%sparent/%sgroupId" % (namespace,namespace)) - - versiontag = project.find("./%sversion" % namespace) - if versiontag is None: - versiontag = project.find("./%sparent/%sversion" % (namespace,namespace)) - self.logger.debug("group ID tag is '%s'", groupIDtag) - self.groupID = groupIDtag.text - self.artifactID = project.find("./%sartifactId" % namespace).text - self.version = versiontag.text - depTrees = project.findall(".//%sdependencies/%sdependency" % (namespace, namespace)) - alldeps = [Artifact.fromSubtree(depTree, namespace) for depTree in depTrees if interestingDep(depTree, namespace)] - alldeps = [dep for dep in alldeps if not (dep.group == self.groupID and dep.artifact == self.artifactID)] - self.deps = [dep for dep in alldeps if not dep.contains(self.ignored_deps)] + [Artifact.fromCoords(xtra) for xtra in self.extra_deps] - jarmatch = re.match(".*JPP-(.*).pom", self.filename) - self.jarname = (jarmatch and jarmatch.groups()[0] or None) - -def cn_debug(*args): - logging.getLogger("com.freevariable.climbing-nemesis").debug(*args) - -def cn_info(*args): - logging.getLogger("com.freevariable.climbing-nemesis").info(*args) - -def resolveArtifact(group, artifact, pomfile=None, kind="jar", ignored_deps=[], override=None, extra_deps=[]): - # XXX: some error checking would be the responsible thing to do here - cn_debug("rA: extra_deps is %r" % extra_deps) - if pomfile is None: - try: - if getFedoraRelease() > 19: - [pom] = subprocess.check_output(["xmvn-resolve", "%s:%s:pom:%s" % (group, artifact, kind)]).split() - else: - [pom] = subprocess.check_output(["xmvn-resolve", "%s:%s:%s" % (group, artifact, kind)]).split() - return POM(pom, ignored_deps=ignored_deps, override=override, extra_deps=extra_deps) - except: - return DummyPOM(group, artifact) - else: - return POM(pomfile, ignored_deps=ignored_deps, override=override, extra_deps=extra_deps) - -def resolveArtifacts(identifiers): - coords = ["%s:%s:jar" % (group, artifact) for (group, artifact) in identifiers] - poms = subprocess.check_output(["xmvn-resolve"] + coords).split() - return [POM(pom) for pom in poms] - -def resolveJar(group, artifact): - [jar] = subprocess.check_output(["xmvn-resolve", "%s:%s:jar:jar" % (group, artifact)]).split() - return jar - -def makeIvyXmlTree(org, module, revision, status="release", meta={}, deps=[]): - ivy_module = ET.Element("ivy-module", {"version":"1.0", "xmlns:e":"http://ant.apache.org/ivy/extra"}) - info = ET.SubElement(ivy_module, "info", dict({"organisation":org, "module":module, "revision":revision, "status":status}.items() + meta.items())) - info.text = " " # ensure a close tag - confs = ET.SubElement(ivy_module, "configurations") - for conf in ["default", "provided", "test"]: - ET.SubElement(confs, "conf", {"name":conf}) - pubs = ET.SubElement(ivy_module, "publications") - ET.SubElement(pubs, "artifact", {"name":module, "type":"jar"}) - if len(deps) > 0: - deptree = ET.SubElement(ivy_module, "dependencies") - for dep in deps: - ET.SubElement(deptree, "dependency", {"org":dep.group, "name":dep.artifact, "rev":dep.version}) - return ET.ElementTree(ivy_module) - -def writeIvyXml(org, module, revision, status="release", fileobj=None, meta={}, deps=[]): - # XXX: handle deps! - if fileobj is None: - fileobj = StringIO.StringIO() - tree = makeIvyXmlTree(org, module, revision, status, meta=meta, deps=deps) - tree.write(fileobj, xml_declaration=True) - return fileobj - -def ivyXmlAsString(org, module, revision, status, meta={}, deps=[]): - return writeIvyXml(org, module, revision, status, meta=meta, deps=deps).getvalue() - -def placeArtifact(artifact_file, repo_dirname, org, module, revision, status="release", meta={}, deps=[], supplied_ivy_file=None, scala=None, override=None, override_dir_only=False): - if scala is not None: - module = module + "_%s" % scala - jarmodule = module - if override is not None: - org, module = override - if not override_dir_only: - jarmodule = module - repo_dir = realpath(repo_dirname) - artifact_dir = pathjoin(*[repo_dir] + [org] + [module, revision]) - ivyxml_path = pathjoin(artifact_dir, "ivy.xml") - artifact_repo_path = pathjoin(artifact_dir, "%s-%s.jar" % (jarmodule, revision)) - - if not pathexists(artifact_dir): - makedirs(artifact_dir) - - ivyxml_file = open(ivyxml_path, "w") - if supplied_ivy_file is None: - writeIvyXml(org, module, revision, status, ivyxml_file, meta=meta, deps=deps) - else: - copyfile(supplied_ivy_file, ivyxml_path) - - if pathexists(artifact_repo_path): - rmfile(artifact_repo_path) - - symlink(artifact_file, artifact_repo_path) - -def getFedoraRelease(): - cmd = "rpm -q --qf %{version} fedora-release" - return int(subprocess.check_output(cmd.split())) - -def main(): - parser = argparse.ArgumentParser(description="Place a locally-installed artifact in a custom local Ivy repository; get metadata from Maven") - parser.add_argument("group", metavar="GROUP", type=str, help="name of group") - parser.add_argument("artifact", metavar="ARTIFACT", type=str, help="name of artifact") - parser.add_argument("repodir", metavar="REPO", type=str, help="location for local repo") - parser.add_argument("--version", metavar="VERSION", type=str, help="version to advertise this artifact as, overriding Maven metadata") - parser.add_argument("--meta", metavar="K=V", type=str, help="extra metadata to store in ivy.xml", action='append') - parser.add_argument("--jarfile", metavar="JAR", type=str, help="local jar file (use instead of POM metadata") - parser.add_argument("--pomfile", metavar="POM", type=str, help="local pom file (use instead of xmvn-resolved one") - parser.add_argument("--log", metavar="LEVEL", type=str, help="logging level") - parser.add_argument("--ivyfile", metavar="IVY", type=str, help="supplied Ivy file (use instead of POM metadata)") - parser.add_argument("--scala", metavar="VERSION", type=str, help="encode given scala version in artifact name") - parser.add_argument("--ignore", metavar="STR", type=str, help="ignore dependencies whose artifact or group contains str", action='append') - parser.add_argument("--override", metavar="ORG:NAME", type=str, help="override organization and/or artifact name") - parser.add_argument("--override-dir-only", action='store_true', help="override organization and/or artifact name") - parser.add_argument("--extra-dep", metavar="ORG:NAME:VERSION", action='append', help="add the given dependencya") - args = parser.parse_args() - - if args.log is not None: - logging.basicConfig(level=getattr(logging, args.log.upper())) - - override = args.override and args.override.split(":") or None - cn_debug("cl: args.extra_dep is %r" % args.extra_dep) - extra_deps = args.extra_dep is not None and args.extra_dep or [] - - pom = resolveArtifact(args.group, args.artifact, args.pomfile, "jar", ignored_deps=(args.ignore or []), override=((not args.override_dir_only) and override or None), extra_deps=extra_deps) - - if args.jarfile is None: - jarfile = resolveJar(pom.groupID or args.group, pom.artifactID or args.artifact) - else: - jarfile = args.jarfile - - version = (args.version or pom.version) - - meta = dict([kv.split("=") for kv in (args.meta or [])]) - cn_debug("meta is %r" % meta) - - placeArtifact(jarfile, args.repodir, pom.groupID, pom.artifactID, version, meta=meta, deps=pom.deps, supplied_ivy_file=args.ivyfile, scala=args.scala, override=override, override_dir_only=args.override_dir_only) - -if __name__ == "__main__": - main() diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..5204a84 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Orphaned for 6+ weeks diff --git a/sbinary.spec b/sbinary.spec deleted file mode 100644 index 5b1c8fa..0000000 --- a/sbinary.spec +++ /dev/null @@ -1,190 +0,0 @@ -%global sbinary_version 0.4.2 -%global scala_version 2.10 -%global scala_long_version 2.10.3 -%global build_with_sbt 0 -%global want_scalacheck 0 - -Name: sbinary -Version: %{sbinary_version} -Release: 15%{?dist} -Summary: Library for describing binary formats for Scala types - -License: MIT -URL: https://github.com/harrah/sbinary -Source0: https://github.com/harrah/sbinary/archive/v%{sbinary_version}.tar.gz -Source1: https://raw.github.com/willb/climbing-nemesis/master/climbing-nemesis.py - -BuildArch: noarch -%if %{build_with_sbt} -BuildRequires: sbt -BuildRequires: python -%else -BuildRequires: java-devel -%endif -BuildRequires: mvn(org.scala-lang:scala-compiler) -BuildRequires: mvn(net.sourceforge.fmpp:fmpp) -BuildRequires: mvn(org.beanshell:bsh) -BuildRequires: mvn(xml-resolver:xml-resolver) -BuildRequires: mvn(org.freemarker:freemarker) -BuildRequires: maven-local -BuildRequires: javapackages-tools -Requires: javapackages-tools -Requires: scala - -%description - -SBinary is a library for describing binary protocols, in the form of -mappings between Scala types and binary formats. It can be used as a -robust serialization mechanism for Scala objects or a way of dealing -with existing binary formats found in the wild. - -It started out life as a loose port of Haskell's Data.Binary. It's -since evolved a bit from there to take advantage of the features Scala -implicits offer over Haskell type classes, but the core idea has -remained the same. - -%package javadoc -Summary: Javadoc for %{name} - -%description javadoc -Javadoc for %{name}. - -%prep -%setup -q - -%if %{build_with_sbt} -sed -i -e 's/2[.]10[.]2/2.10.3/g' project/SBinaryProject.scala - -sed -i -e 's|"scalacheck" % "1[.]10[.]0"|"scalacheck" % "1.11.0"|g' project/SBinaryProject.scala -sed -i -e 's|[.]identity||g' project/SBinaryProject.scala -sed -i -e 's/0[.]13[.]0/0.13.1/g' project/build.properties || echo sbt.version=0.13.1 > project/build.properties - -cp -r /usr/share/java/sbt/ivy-local . -mkdir boot - -cp %{SOURCE1} . - -chmod 755 climbing-nemesis.py - -%if %{want_scalacheck} -./climbing-nemesis.py --jarfile /usr/share/java/scalacheck.jar org.scalacheck scalacheck ivy-local --version 1.11.0 --scala %{scala_version} -%endif - -./climbing-nemesis.py net.sourceforge.fmpp fmpp ivy-local -./climbing-nemesis.py org.freemarker freemarker ivy-local -./climbing-nemesis.py org.beanshell bsh ivy-local --override org.beanshell:bsh -./climbing-nemesis.py xml-resolver xml-resolver ivy-local -%endif - -%build - -%if %{build_with_sbt} - -export SBT_BOOT_DIR=boot -export SBT_IVY_DIR=ivy-local -sbt package deliverLocal publishM2Configuration - -%else # build without sbt - -mkdir -p core/target/scala-%{scala_version}/src_managed -mkdir -p core/target/scala-%{scala_version}/classes -mkdir -p core/target/scala-%{scala_version}/api - -java -cp $(build-classpath fmpp freemarker bsh oro) fmpp.tools.CommandLine -S core/src -O core/target/scala-%{scala_version}/src_managed - -scalac core/target/scala-%{scala_version}/src_managed/*.scala -d core/target/scala-%{scala_version}/classes -jar -cvf core/target/scala-%{scala_version}/%{name}_%{scala_version}-%{version}.jar -C core/target/scala-%{scala_version}/classes . - -scaladoc core/target/scala-2.10/src_managed/*.scala -d core/target/scala-2.10/api - -cat << EOF > core/target/scala-%{scala_version}/%{name}_%{scala_version}-%{version}.pom - - - 4.0.0 - org.scala-tools.sbinary - sbinary_%{scala_version} - jar - SBinary - %{version} - SBinary - - org.scala-tools.sbinary - - - - org.scala-lang - scala-library - %{scala_long_version} - - - -EOF - -%endif - -%install -mkdir -p %{buildroot}/%{_javadir} -mkdir -p %{buildroot}/%{_mavenpomdir} - -mkdir -p %{buildroot}/%{_javadocdir}/%{name} - -install -pm 644 core/target/scala-%{scala_version}/%{name}_%{scala_version}-%{version}.jar %{buildroot}/%{_javadir}/%{name}.jar -install -pm 644 core/target/scala-%{scala_version}/%{name}_%{scala_version}-%{version}.pom %{buildroot}/%{_mavenpomdir}/JPP-%{name}.pom - -cp -rp core/target/scala-%{scala_version}/api/* %{buildroot}/%{_javadocdir}/%{name} - -%add_maven_depmap JPP-%{name}.pom %{name}.jar - -%files -f .mfiles -%doc LICENSE README - -%files javadoc -%{_javadocdir}/%{name} -%doc LICENSE - -%changelog -* Sat Aug 01 2020 Fedora Release Engineering - 0.4.2-15 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 0.4.2-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Sat Jul 11 2020 Jiri Vanek - 0.4.2-13 -- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 - -* Thu Jan 30 2020 Fedora Release Engineering - 0.4.2-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Jul 26 2019 Fedora Release Engineering - 0.4.2-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 0.4.2-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 0.4.2-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 0.4.2-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.4.2-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 0.4.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Feb 04 2016 Fedora Release Engineering - 0.4.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 0.4.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Tue Jun 10 2014 Mat Booth - 0.4.2-3 -- Migrate to .mfiles - -* Sun Jun 08 2014 Fedora Release Engineering - 0.4.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Tue Jan 7 2014 William Benton - 0.4.2-1 -- initial package diff --git a/sources b/sources deleted file mode 100644 index f20d9db..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -913307c1b44723d58ab125c9170cfd9d v0.4.2.tar.gz