package init
This commit is contained in:
parent
83b502b0ae
commit
ea624800c6
BIN
0.6.2.tar.gz
Normal file
BIN
0.6.2.tar.gz
Normal file
Binary file not shown.
BIN
1.11.0.tar.gz
Normal file
BIN
1.11.0.tar.gz
Normal file
Binary file not shown.
BIN
SPECS2-1.12.3.tar.gz
Normal file
BIN
SPECS2-1.12.3.tar.gz
Normal file
Binary file not shown.
232
climbing-nemesis.py
Normal file
232
climbing-nemesis.py
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Copyright 2013, 2014 Red Hat, Inc., and William C. Benton
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
import argparse
|
||||||
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from io import StringIO
|
||||||
|
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
|
||||||
|
from javapackages.xmvn.xmvn_resolve import (XMvnResolve, ResolutionRequest)
|
||||||
|
|
||||||
|
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, 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:
|
||||||
|
result = XMvnResolve.process_raw_request([ResolutionRequest(group, artifact, extension="pom")])[0]
|
||||||
|
if result:
|
||||||
|
return POM(result.artifactPath, ignored_deps=ignored_deps, override=override, extra_deps=extra_deps)
|
||||||
|
else:
|
||||||
|
return DummyPOM(group, artifact)
|
||||||
|
else:
|
||||||
|
return POM(pomfile, ignored_deps=ignored_deps, override=override, extra_deps=extra_deps)
|
||||||
|
|
||||||
|
def resolveJar(group, artifact):
|
||||||
|
result = XMvnResolve.process_raw_request([ResolutionRequest(group, artifact)])[0]
|
||||||
|
return result.artifactPath if result else None
|
||||||
|
|
||||||
|
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()
|
||||||
|
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, "wb")
|
||||||
|
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 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, 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()
|
||||||
BIN
ivy-2.3.0-rc1.jar
Normal file
BIN
ivy-2.3.0-rc1.jar
Normal file
Binary file not shown.
157
ivy-2.3.0-rc1.pom
Normal file
157
ivy-2.3.0-rc1.pom
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
-->
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.apache</groupId>
|
||||||
|
<artifactId>apache</artifactId>
|
||||||
|
<version>7</version>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.apache.ivy</groupId>
|
||||||
|
<artifactId>ivy</artifactId>
|
||||||
|
<version>2.3.0-rc1</version>
|
||||||
|
<name>Apache Ivy</name>
|
||||||
|
<url>http://ant.apache.org/ivy/</url>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:svn:http://svn.apache.org/repos/asf/ant/ivy/core/trunk/</connection>
|
||||||
|
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/ant/ivy/core/trunk</developerConnection>
|
||||||
|
<url>http://svn.apache.org/repos/asf/ant/ivy/core/trunk</url>
|
||||||
|
</scm>
|
||||||
|
<mailingLists>
|
||||||
|
<mailingList>
|
||||||
|
<name>Ant/Ivy Developers List</name>
|
||||||
|
<subscribe>dev-subscribe@ant.apache.org</subscribe>
|
||||||
|
<unsubscribe>dev-unsubscribe@ant.apache.org</unsubscribe>
|
||||||
|
<post>dev@ant.apache.org</post>
|
||||||
|
<archive>http://mail-archives.apache.org/mod_mbox/ant-dev</archive>
|
||||||
|
</mailingList>
|
||||||
|
<mailingList>
|
||||||
|
<name>Ivy Users List</name>
|
||||||
|
<subscribe>ivy-user-subscribe@ant.apache.org</subscribe>
|
||||||
|
<unsubscribe>ivy-user-unsubscribe@ant.apache.org</unsubscribe>
|
||||||
|
<post>ivy-user@ant.apache.org</post>
|
||||||
|
<archive>http://mail-archives.apache.org/mod_mbox/ant-ivy-user</archive>
|
||||||
|
</mailingList>
|
||||||
|
</mailingLists>
|
||||||
|
<issueManagement>
|
||||||
|
<system>jira</system>
|
||||||
|
<url>http://issues.apache.org/jira/browse/IVY</url>
|
||||||
|
</issueManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-nodeps</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-trax</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-httpclient</groupId>
|
||||||
|
<artifactId>commons-httpclient</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>oro</groupId>
|
||||||
|
<artifactId>oro</artifactId>
|
||||||
|
<version>2.0.8</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-vfs</groupId>
|
||||||
|
<artifactId>commons-vfs</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jcraft</groupId>
|
||||||
|
<artifactId>jsch</artifactId>
|
||||||
|
<version>0.1.31</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcpg-jdk14</artifactId>
|
||||||
|
<version>1.45</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcprov-jdk14</artifactId>
|
||||||
|
<version>1.45</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-testutil</artifactId>
|
||||||
|
<version>1.7.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ant</groupId>
|
||||||
|
<artifactId>ant-launcher</artifactId>
|
||||||
|
<version>1.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ant-contrib</groupId>
|
||||||
|
<artifactId>ant-contrib</artifactId>
|
||||||
|
<version>1.0b3</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>xerces</groupId>
|
||||||
|
<artifactId>xercesImpl</artifactId>
|
||||||
|
<version>2.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>xerces</groupId>
|
||||||
|
<artifactId>xmlParserAPIs</artifactId>
|
||||||
|
<version>2.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
157
ivy-2.3.0.pom
Normal file
157
ivy-2.3.0.pom
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
-->
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.apache</groupId>
|
||||||
|
<artifactId>apache</artifactId>
|
||||||
|
<version>7</version>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.apache.ivy</groupId>
|
||||||
|
<artifactId>ivy</artifactId>
|
||||||
|
<version>2.3.0</version>
|
||||||
|
<name>Apache Ivy</name>
|
||||||
|
<url>http://ant.apache.org/ivy/</url>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:svn:http://svn.apache.org/repos/asf/ant/ivy/core/trunk/</connection>
|
||||||
|
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/ant/ivy/core/trunk</developerConnection>
|
||||||
|
<url>http://svn.apache.org/repos/asf/ant/ivy/core/trunk</url>
|
||||||
|
</scm>
|
||||||
|
<mailingLists>
|
||||||
|
<mailingList>
|
||||||
|
<name>Ant/Ivy Developers List</name>
|
||||||
|
<subscribe>dev-subscribe@ant.apache.org</subscribe>
|
||||||
|
<unsubscribe>dev-unsubscribe@ant.apache.org</unsubscribe>
|
||||||
|
<post>dev@ant.apache.org</post>
|
||||||
|
<archive>http://mail-archives.apache.org/mod_mbox/ant-dev</archive>
|
||||||
|
</mailingList>
|
||||||
|
<mailingList>
|
||||||
|
<name>Ivy Users List</name>
|
||||||
|
<subscribe>ivy-user-subscribe@ant.apache.org</subscribe>
|
||||||
|
<unsubscribe>ivy-user-unsubscribe@ant.apache.org</unsubscribe>
|
||||||
|
<post>ivy-user@ant.apache.org</post>
|
||||||
|
<archive>http://mail-archives.apache.org/mod_mbox/ant-ivy-user</archive>
|
||||||
|
</mailingList>
|
||||||
|
</mailingLists>
|
||||||
|
<issueManagement>
|
||||||
|
<system>jira</system>
|
||||||
|
<url>http://issues.apache.org/jira/browse/IVY</url>
|
||||||
|
</issueManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-nodeps</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-trax</artifactId>
|
||||||
|
<version>1.7.1</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-httpclient</groupId>
|
||||||
|
<artifactId>commons-httpclient</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>oro</groupId>
|
||||||
|
<artifactId>oro</artifactId>
|
||||||
|
<version>2.0.8</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-vfs</groupId>
|
||||||
|
<artifactId>commons-vfs</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jcraft</groupId>
|
||||||
|
<artifactId>jsch</artifactId>
|
||||||
|
<version>0.1.31</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcpg-jdk14</artifactId>
|
||||||
|
<version>1.45</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcprov-jdk14</artifactId>
|
||||||
|
<version>1.45</version>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<version>2.6</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.ant</groupId>
|
||||||
|
<artifactId>ant-testutil</artifactId>
|
||||||
|
<version>1.7.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ant</groupId>
|
||||||
|
<artifactId>ant-launcher</artifactId>
|
||||||
|
<version>1.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ant-contrib</groupId>
|
||||||
|
<artifactId>ant-contrib</artifactId>
|
||||||
|
<version>1.0b3</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>xerces</groupId>
|
||||||
|
<artifactId>xercesImpl</artifactId>
|
||||||
|
<version>2.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>xerces</groupId>
|
||||||
|
<artifactId>xmlParserAPIs</artifactId>
|
||||||
|
<version>2.6.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
25
rpmbuild-sbt.boot.properties
Normal file
25
rpmbuild-sbt.boot.properties
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[scala]
|
||||||
|
version: FEDORA_SCALA_VERSION
|
||||||
|
|
||||||
|
[app]
|
||||||
|
org: ${sbt.organization-org.scala-sbt}
|
||||||
|
name: sbt
|
||||||
|
version: ${sbt.version-read(sbt.version)[FEDORA_SBT_VERSION]}
|
||||||
|
class: ${sbt.main.class-sbt.xMain}
|
||||||
|
components: xsbti,extra
|
||||||
|
cross-versioned: ${sbt.cross.versioned-false}
|
||||||
|
|
||||||
|
[repositories]
|
||||||
|
local: file:${fedora.sbt.ivy.dir-/usr/share/sbt/ivy-local}, [organization]/[module]/[revision]/ivy.xml, [organization]/[module]/[revision]/[artifact]-[revision].[ext]
|
||||||
|
|
||||||
|
[boot]
|
||||||
|
directory: ${fedora.sbt.boot.dir-/usr/share/sbt/boot}
|
||||||
|
|
||||||
|
[log]
|
||||||
|
level: debug
|
||||||
|
|
||||||
|
[ivy]
|
||||||
|
ivy-home: ${fedora.sbt.ivy.dir-/usr/share/sbt/ivy-local}
|
||||||
|
checksums: ${sbt.checksums-sha1,md5}
|
||||||
|
override-build-repos: true
|
||||||
|
|
||||||
17
sbt
Normal file
17
sbt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export JLINE=jline
|
||||||
|
|
||||||
|
export SBT_BOOT_DIR=${SBT_BOOT_DIR:-/usr/share/sbt/boot}
|
||||||
|
export SBT_IVY_DIR=${SBT_IVY_DIR:-/usr/share/sbt/ivy-local}
|
||||||
|
|
||||||
|
if \[ "x$RPM_PACKAGE_NAME" != x \] && \[ -f /etc/sbt/rpmbuild-sbt.boot.properties \] ; then
|
||||||
|
export SBT_BOOT_PROPERTIES=${SBT_BOOT_PROPERTIES:-/etc/sbt/rpmbuild-sbt.boot.properties}
|
||||||
|
else
|
||||||
|
export SBT_BOOT_PROPERTIES=${SBT_BOOT_PROPERTIES:-/etc/sbt/sbt.boot.properties}
|
||||||
|
fi
|
||||||
|
|
||||||
|
export BASE_CLASSPATH=$(build-classpath scala ivy sbt ${JLINE} jansi test-interface sbinary)
|
||||||
|
export JAVA_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled"
|
||||||
|
|
||||||
|
java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -Dfedora.sbt.boot.dir=${SBT_BOOT_DIR} -Dfedora.sbt.ivy.dir=${SBT_IVY_DIR} -Dsbt.boot.properties=${SBT_BOOT_PROPERTIES} -cp ${BASE_CLASSPATH} xsbt.boot.Boot "$@"
|
||||||
BIN
sbt-0.13.1-9.fc28.1.noarch.rpm
Normal file
BIN
sbt-0.13.1-9.fc28.1.noarch.rpm
Normal file
Binary file not shown.
12
sbt-0.13.1-RC3-release-scala.patch
Normal file
12
sbt-0.13.1-RC3-release-scala.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
--- old/project/Release.scala 2013-11-23 13:43:58.498256144 -0600
|
||||||
|
+++ new/project/Release.scala 2013-11-25 21:08:00.113468064 -0600
|
||||||
|
@@ -39,9 +39,6 @@
|
||||||
|
def deployLauncher(launcher: TaskKey[File]) =
|
||||||
|
(launcher, launcherRemotePath, credentials, remoteBase, streams) map { (launchJar, remotePath, creds, base, s) =>
|
||||||
|
val (uname, pwd) = getCredentials(creds, s.log)
|
||||||
|
- val request = dispatch.classic.url(base) / remotePath <<< (launchJar, "binary/octet-stream") as (uname, pwd)
|
||||||
|
- val http = new dispatch.classic.Http
|
||||||
|
- try { http(request.as_str) } finally { http.shutdown() }
|
||||||
|
()
|
||||||
|
}
|
||||||
|
def getCredentials(cs: Seq[Credentials], log: Logger): (String, String) =
|
||||||
150
sbt-0.13.1-ivy-2.3.0.patch
Normal file
150
sbt-0.13.1-ivy-2.3.0.patch
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
From ea9a2931f69e87fdcf5a8bce02940a30ea4ab56c Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Benton <willb@redhat.com>
|
||||||
|
Date: Fri, 13 Dec 2013 11:39:09 -0600
|
||||||
|
Subject: [PATCH 1/2] Support Ivy 2.3.0-final.
|
||||||
|
|
||||||
|
This entailed modifying ResolutionCache and the CustomPomParser
|
||||||
|
to reflect changes to the ResolutionCacheManager interface and
|
||||||
|
DefaultExtendsDescriptor class between Ivy 2.3.0-rc1 and
|
||||||
|
2.3.0-rc2. Specifically,
|
||||||
|
|
||||||
|
1. ResolutionCacheManager now includes two additional methods
|
||||||
|
that needed implementations in ResolutionCache:
|
||||||
|
getResolvedModuleDescriptor(mrid: ModuleRevisionId) and
|
||||||
|
saveResolvedModuleDescriptor(md: ModuleDescriptor). I adapted
|
||||||
|
the implementations for these (which are expressed primarily in
|
||||||
|
terms of other interface methods) from Ivy 2.3.0's
|
||||||
|
DefaultResolutionCacheManager.
|
||||||
|
|
||||||
|
2. Instead of taking a ModuleRevisionIdentifier and a resolved
|
||||||
|
ModuleRevisionIdentifier as its first two arguments, the
|
||||||
|
DefaultExtendsDescriptor constructor now takes a
|
||||||
|
ModuleDescriptor. This was a trivial change.
|
||||||
|
|
||||||
|
Note that ResolutionCache.getResolvedModuleDescriptor does not
|
||||||
|
appear to be used by Ivy as sbt uses Ivy and there is thus no
|
||||||
|
test coverage for its implementation. Also note that the
|
||||||
|
DefaultResolutionCacheManager object created in
|
||||||
|
Update.configureResolutionCache now requires a reference to an
|
||||||
|
IvySettings object; DRCM expects this to be non-null.
|
||||||
|
---
|
||||||
|
ivy/src/main/scala/sbt/CustomPomParser.scala | 2 +-
|
||||||
|
ivy/src/main/scala/sbt/Ivy.scala | 2 +-
|
||||||
|
ivy/src/main/scala/sbt/ResolutionCache.scala | 27 ++++++++++++++++++++++++++-
|
||||||
|
launch/src/main/scala/xsbt/boot/Update.scala | 4 +++-
|
||||||
|
project/Util.scala | 2 +-
|
||||||
|
5 files changed, 32 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ivy/src/main/scala/sbt/CustomPomParser.scala b/ivy/src/main/scala/sbt/CustomPomParser.scala
|
||||||
|
index 34147d9..7023ab8 100644
|
||||||
|
--- a/ivy/src/main/scala/sbt/CustomPomParser.scala
|
||||||
|
+++ b/ivy/src/main/scala/sbt/CustomPomParser.scala
|
||||||
|
@@ -203,7 +203,7 @@ object CustomPomParser
|
||||||
|
val unique = IvySbt.mergeDuplicateDefinitions(withExtra)
|
||||||
|
unique foreach dmd.addDependency
|
||||||
|
|
||||||
|
- for( ed <- md.getInheritedDescriptors) dmd.addInheritedDescriptor( new DefaultExtendsDescriptor( mrid, resolvedMrid, ed.getLocation, ed.getExtendsTypes) )
|
||||||
|
+ for( ed <- md.getInheritedDescriptors) dmd.addInheritedDescriptor( new DefaultExtendsDescriptor( md, ed.getLocation, ed.getExtendsTypes) )
|
||||||
|
for( conf <- md.getConfigurations) {
|
||||||
|
dmd.addConfiguration(conf)
|
||||||
|
for(art <- md.getArtifacts(conf.getName)) {
|
||||||
|
diff --git a/ivy/src/main/scala/sbt/Ivy.scala b/ivy/src/main/scala/sbt/Ivy.scala
|
||||||
|
index 6154bdb..e1dca53 100644
|
||||||
|
--- a/ivy/src/main/scala/sbt/Ivy.scala
|
||||||
|
+++ b/ivy/src/main/scala/sbt/Ivy.scala
|
||||||
|
@@ -310,7 +310,7 @@ private object IvySbt
|
||||||
|
private[this] def configureResolutionCache(settings: IvySettings, localOnly: Boolean, resCacheDir: Option[File])
|
||||||
|
{
|
||||||
|
val base = resCacheDir getOrElse settings.getDefaultResolutionCacheBasedir
|
||||||
|
- settings.setResolutionCacheManager(new ResolutionCache(base))
|
||||||
|
+ settings.setResolutionCacheManager(new ResolutionCache(base, settings))
|
||||||
|
}
|
||||||
|
// set the artifact resolver to be the main resolver.
|
||||||
|
// this is because sometimes the artifact resolver saved in the cache is not correct
|
||||||
|
diff --git a/ivy/src/main/scala/sbt/ResolutionCache.scala b/ivy/src/main/scala/sbt/ResolutionCache.scala
|
||||||
|
index ab69344..1243420 100644
|
||||||
|
--- a/ivy/src/main/scala/sbt/ResolutionCache.scala
|
||||||
|
+++ b/ivy/src/main/scala/sbt/ResolutionCache.scala
|
||||||
|
@@ -1,18 +1,24 @@
|
||||||
|
package sbt
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
+import java.io.FileInputStream
|
||||||
|
+import java.util.Properties
|
||||||
|
import org.apache.ivy.core
|
||||||
|
+import org.apache.ivy.plugins.parser
|
||||||
|
import core.IvyPatternHelper
|
||||||
|
+import core.settings.IvySettings
|
||||||
|
import core.cache.{CacheMetadataOptions, DefaultRepositoryCacheManager, DefaultResolutionCacheManager, ResolutionCacheManager}
|
||||||
|
import core.module.id.ModuleRevisionId
|
||||||
|
+import core.module.descriptor.ModuleDescriptor
|
||||||
|
import ResolutionCache.{Name, ReportDirectory, ResolvedName, ResolvedPattern}
|
||||||
|
+import parser.xml.XmlModuleDescriptorParser
|
||||||
|
|
||||||
|
/** Replaces the standard Ivy resolution cache in order to:
|
||||||
|
* 1. Separate cached resolved Ivy files from resolution reports, making the resolution reports easier to find.
|
||||||
|
* 2. Have them per-project for easier cleaning (possible with standard cache, but central to this custom one).
|
||||||
|
* 3. Cache location includes extra attributes so that cross builds of a plugin do not overwrite each other.
|
||||||
|
*/
|
||||||
|
-private[sbt] final class ResolutionCache(base: File) extends ResolutionCacheManager
|
||||||
|
+private[sbt] final class ResolutionCache(base: File, settings: IvySettings) extends ResolutionCacheManager
|
||||||
|
{
|
||||||
|
private[this] def resolvedFileInCache(m: ModuleRevisionId, name: String, ext: String): File = {
|
||||||
|
val p = ResolvedPattern
|
||||||
|
@@ -35,6 +41,25 @@ private[sbt] final class ResolutionCache(base: File) extends ResolutionCacheMana
|
||||||
|
new File(reportBase, resolveId + "-" + conf + ".xml")
|
||||||
|
def getConfigurationResolveReportsInCache(resolveId: String): Array[File] =
|
||||||
|
IO.listFiles(reportBase).filter(_.getName.startsWith(resolveId + "-"))
|
||||||
|
+
|
||||||
|
+ // XXX: this method is required by ResolutionCacheManager in Ivy 2.3.0 final,
|
||||||
|
+ // but it is apparently unused by Ivy as sbt uses Ivy. Therefore, it is
|
||||||
|
+ // unexercised in tests. Note that the implementation of this method in Ivy 2.3.0's
|
||||||
|
+ // DefaultResolutionCache also resolves parent properties for a given mrid
|
||||||
|
+ def getResolvedModuleDescriptor(mrid: ModuleRevisionId): ModuleDescriptor = {
|
||||||
|
+ val ivyFile = getResolvedIvyFileInCache(mrid)
|
||||||
|
+ if (!ivyFile.exists()) {
|
||||||
|
+ throw new IllegalStateException("Ivy file not found in cache for " + mrid + "!")
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return XmlModuleDescriptorParser.getInstance().parseDescriptor(settings, ivyFile.toURI().toURL(), false)
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ def saveResolvedModuleDescriptor(md: ModuleDescriptor): Unit = {
|
||||||
|
+ val mrid = md.getResolvedModuleRevisionId
|
||||||
|
+ val cachedIvyFile = getResolvedIvyFileInCache(mrid)
|
||||||
|
+ md.toIvyFile(cachedIvyFile)
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
private[sbt] object ResolutionCache
|
||||||
|
{
|
||||||
|
diff --git a/launch/src/main/scala/xsbt/boot/Update.scala b/launch/src/main/scala/xsbt/boot/Update.scala
|
||||||
|
index a39a70f..6c8c9f3 100644
|
||||||
|
--- a/launch/src/main/scala/xsbt/boot/Update.scala
|
||||||
|
+++ b/launch/src/main/scala/xsbt/boot/Update.scala
|
||||||
|
@@ -286,7 +286,9 @@ final class Update(config: UpdateConfiguration)
|
||||||
|
private[this] def configureResolutionCache(settings: IvySettings)
|
||||||
|
{
|
||||||
|
resolutionCacheBase.mkdirs()
|
||||||
|
- settings.setResolutionCacheManager(new DefaultResolutionCacheManager(resolutionCacheBase))
|
||||||
|
+ val drcm = new DefaultResolutionCacheManager(resolutionCacheBase)
|
||||||
|
+ drcm.setSettings(settings)
|
||||||
|
+ settings.setResolutionCacheManager(drcm)
|
||||||
|
}
|
||||||
|
private[this] def configureRepositoryCache(settings: IvySettings)
|
||||||
|
{
|
||||||
|
diff --git a/project/Util.scala b/project/Util.scala
|
||||||
|
index afddf87..13f99a0 100644
|
||||||
|
--- a/project/Util.scala
|
||||||
|
+++ b/project/Util.scala
|
||||||
|
@@ -167,7 +167,7 @@ object Common
|
||||||
|
def lib(m: ModuleID) = libraryDependencies += m
|
||||||
|
lazy val jlineDep = "jline" % "jline" % "2.11"
|
||||||
|
lazy val jline = lib(jlineDep)
|
||||||
|
- lazy val ivy = lib("org.apache.ivy" % "ivy" % "2.3.0-rc1")
|
||||||
|
+ lazy val ivy = lib("org.apache.ivy" % "ivy" % "2.3.0")
|
||||||
|
lazy val httpclient = lib("commons-httpclient" % "commons-httpclient" % "3.1")
|
||||||
|
lazy val jsch = lib("com.jcraft" % "jsch" % "0.1.46" intransitive() )
|
||||||
|
lazy val sbinary = libraryDependencies <+= Util.nightly211(n => "org.scala-tools.sbinary" % "sbinary" % "0.4.2" cross(if(n) CrossVersion.full else CrossVersion.binary))
|
||||||
|
--
|
||||||
|
1.8.3.4 (Apple Git-47)
|
||||||
|
|
||||||
11
sbt-0.13.1-ivy-2.4.0.patch
Normal file
11
sbt-0.13.1-ivy-2.4.0.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- ivy/src/main/scala/sbt/IvyLogger.scala~ 2015-07-21 12:06:06.883992874 +0200
|
||||||
|
+++ ivy/src/main/scala/sbt/IvyLogger.scala 2015-07-21 12:06:20.516805104 +0200
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
def warn(msg: String) = logger.warn(msg)
|
||||||
|
def error(msg: String) = if(SbtIvyLogger.acceptError(msg)) logger.error(msg)
|
||||||
|
|
||||||
|
- private def emptyList = java.util.Collections.emptyList[T forSome { type T}]
|
||||||
|
+ private def emptyList = java.util.Collections.emptyList[String]
|
||||||
|
def getProblems = emptyList
|
||||||
|
def getWarns = emptyList
|
||||||
|
def getErrors = emptyList
|
||||||
92
sbt-0.13.1-ivy-docs.patch
Normal file
92
sbt-0.13.1-ivy-docs.patch
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
From 8c6bddc7296652f0734c70a5f237c488fb5d8798 Mon Sep 17 00:00:00 2001
|
||||||
|
From: William Benton <willb@redhat.com>
|
||||||
|
Date: Fri, 13 Dec 2013 12:51:59 -0600
|
||||||
|
Subject: [PATCH 2/2] Update documentation references to Ivy 2.3.0
|
||||||
|
|
||||||
|
---
|
||||||
|
src/sphinx/Detailed-Topics/Artifacts.rst | 2 +-
|
||||||
|
src/sphinx/Detailed-Topics/Library-Management.rst | 8 ++++----
|
||||||
|
src/sphinx/Detailed-Topics/Publishing.rst | 2 +-
|
||||||
|
src/sphinx/Getting-Started/Library-Dependencies.rst | 2 +-
|
||||||
|
4 files changed, 7 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/sphinx/Detailed-Topics/Artifacts.rst b/src/sphinx/Detailed-Topics/Artifacts.rst
|
||||||
|
index 845c7e1..b6d9e45 100644
|
||||||
|
--- a/src/sphinx/Detailed-Topics/Artifacts.rst
|
||||||
|
+++ b/src/sphinx/Detailed-Topics/Artifacts.rst
|
||||||
|
@@ -128,7 +128,7 @@ For example:
|
||||||
|
Artifact("myproject", "jdk15")
|
||||||
|
|
||||||
|
See the `Ivy
|
||||||
|
-documentation <http://ant.apache.org/ivy/history/2.3.0-rc1/ivyfile/dependency-artifact.html>`_
|
||||||
|
+documentation <http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency-artifact.html>`_
|
||||||
|
for more details on artifacts. See the `Artifact
|
||||||
|
API <../../api/sbt/Artifact$.html>`_ for
|
||||||
|
combining the parameters above and specifying [Configurations] and extra
|
||||||
|
diff --git a/src/sphinx/Detailed-Topics/Library-Management.rst b/src/sphinx/Detailed-Topics/Library-Management.rst
|
||||||
|
index 8dc2e9c..a01a514 100644
|
||||||
|
--- a/src/sphinx/Detailed-Topics/Library-Management.rst
|
||||||
|
+++ b/src/sphinx/Detailed-Topics/Library-Management.rst
|
||||||
|
@@ -124,7 +124,7 @@ the version of Scala you are using. See :doc:`Cross-Build` for details.
|
||||||
|
Ivy can select the latest revision of a module according to constraints
|
||||||
|
you specify. Instead of a fixed revision like `"1.6.1"`, you specify
|
||||||
|
`"latest.integration"`, `"2.9.+"`, or `"[1.0,)"`. See the `Ivy
|
||||||
|
-revisions <http://ant.apache.org/ivy/history/2.3.0-rc1/ivyfile/dependency.html#revision>`_
|
||||||
|
+revisions <http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html#revision>`_
|
||||||
|
documentation for details.
|
||||||
|
|
||||||
|
Resolvers
|
||||||
|
@@ -320,7 +320,7 @@ Extra Attributes
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
`Extra
|
||||||
|
-attributes <http://ant.apache.org/ivy/history/2.3.0-rc1/concept.html#extra>`_
|
||||||
|
+attributes <http://ant.apache.org/ivy/history/2.3.0/concept.html#extra>`_
|
||||||
|
can be specified by passing key/value pairs to the `extra` method.
|
||||||
|
|
||||||
|
To select dependencies by extra attributes:
|
||||||
|
@@ -527,7 +527,7 @@ Configurations
|
||||||
|
Ivy configurations are a useful feature for your build when you need
|
||||||
|
custom groups of dependencies, such as for a plugin. Ivy configurations
|
||||||
|
are essentially named sets of dependencies. You can read the
|
||||||
|
-`Ivy documentation <http://ant.apache.org/ivy/history/2.3.0-rc1/tutorial/conf.html>`_
|
||||||
|
+`Ivy documentation <http://ant.apache.org/ivy/history/2.3.0/tutorial/conf.html>`_
|
||||||
|
for details.
|
||||||
|
|
||||||
|
The built-in use of configurations in sbt is similar to scopes in Maven.
|
||||||
|
@@ -549,7 +549,7 @@ your dependency definition:
|
||||||
|
|
||||||
|
This says that your project's `"test"` configuration uses
|
||||||
|
`ScalaTest`'s `"compile"` configuration. See the `Ivy
|
||||||
|
-documentation <http://ant.apache.org/ivy/history/2.3.0-rc1/tutorial/conf.html>`_
|
||||||
|
+documentation <http://ant.apache.org/ivy/history/2.3.0/tutorial/conf.html>`_
|
||||||
|
for more advanced mappings. Most projects published to Maven
|
||||||
|
repositories will use the `"compile"` configuration.
|
||||||
|
|
||||||
|
diff --git a/src/sphinx/Detailed-Topics/Publishing.rst b/src/sphinx/Detailed-Topics/Publishing.rst
|
||||||
|
index 67dc2bb..ea5d7a2 100644
|
||||||
|
--- a/src/sphinx/Detailed-Topics/Publishing.rst
|
||||||
|
+++ b/src/sphinx/Detailed-Topics/Publishing.rst
|
||||||
|
@@ -163,5 +163,5 @@ change the version number each time you publish. Ivy maintains a cache,
|
||||||
|
and it stores even local projects in that cache. If Ivy already has a
|
||||||
|
version cached, it will not check the local repository for updates,
|
||||||
|
unless the version number matches a `changing
|
||||||
|
-pattern <http://ant.apache.org/ivy/history/2.3.0-rc1/concept.html#change>`_,
|
||||||
|
+pattern <http://ant.apache.org/ivy/history/2.3.0/concept.html#change>`_,
|
||||||
|
and `SNAPSHOT` is one such pattern.
|
||||||
|
diff --git a/src/sphinx/Getting-Started/Library-Dependencies.rst b/src/sphinx/Getting-Started/Library-Dependencies.rst
|
||||||
|
index 536fe8a..08f84ab 100644
|
||||||
|
--- a/src/sphinx/Getting-Started/Library-Dependencies.rst
|
||||||
|
+++ b/src/sphinx/Getting-Started/Library-Dependencies.rst
|
||||||
|
@@ -155,7 +155,7 @@ be a single fixed version. Ivy can select the latest revision of a
|
||||||
|
module according to constraints you specify. Instead of a fixed revision
|
||||||
|
like `"1.6.1"`, you specify `"latest.integration"`, `"2.9.+"`, or
|
||||||
|
`"[1.0,)"`. See the `Ivy
|
||||||
|
-revisions <http://ant.apache.org/ivy/history/2.3.0-rc1/ivyfile/dependency.html#revision>`_
|
||||||
|
+revisions <http://ant.apache.org/ivy/history/2.3.0/ivyfile/dependency.html#revision>`_
|
||||||
|
documentation for details.
|
||||||
|
|
||||||
|
Resolvers
|
||||||
|
--
|
||||||
|
1.8.3.4 (Apple Git-47)
|
||||||
|
|
||||||
42
sbt-0.13.1-sbt-scala.patch
Normal file
42
sbt-0.13.1-sbt-scala.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
--- old/project/Sbt.scala 2013-11-23 13:43:58.498256144 -0600
|
||||||
|
+++ new/project/Sbt.scala 2013-11-26 09:59:50.591828593 -0600
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
def buildSettings = Seq(
|
||||||
|
organization := "org.scala-sbt",
|
||||||
|
version := "0.13.1",
|
||||||
|
+ scalaHome := Some(file("scala")),
|
||||||
|
publishArtifact in packageDoc := false,
|
||||||
|
scalaVersion := "2.10.3",
|
||||||
|
publishMavenStyle := false,
|
||||||
|
@@ -97,9 +98,6 @@
|
||||||
|
// Compiler-side interface to compiler that is compiled against the compiler being used either in advance or on the fly.
|
||||||
|
// Includes API and Analyzer phases that extract source API and relationships.
|
||||||
|
lazy val compileInterfaceSub = baseProject(compilePath / "interface", "Compiler Interface") dependsOn(interfaceSub, ioSub % "test->test", logSub % "test->test", launchSub % "test->test") settings( compileInterfaceSettings : _*)
|
||||||
|
- lazy val precompiled282 = precompiled("2.8.2")
|
||||||
|
- lazy val precompiled292 = precompiled("2.9.2")
|
||||||
|
- lazy val precompiled293 = precompiled("2.9.3")
|
||||||
|
|
||||||
|
// Implements the core functionality of detecting and propagating changes incrementally.
|
||||||
|
// Defines the data structures for representing file fingerprints and relationships and the overall source analysis
|
||||||
|
@@ -135,7 +133,7 @@
|
||||||
|
// Strictly for bringing implicits and aliases from subsystems into the top-level sbt namespace through a single package object
|
||||||
|
// technically, we need a dependency on all of mainSub's dependencies, but we don't do that since this is strictly an integration project
|
||||||
|
// with the sole purpose of providing certain identifiers without qualification (with a package object)
|
||||||
|
- lazy val sbtSub = baseProject(sbtPath, "sbt") dependsOn(mainSub, compileInterfaceSub, precompiled282, precompiled292, precompiled293, scriptedSbtSub % "test->test") settings(sbtSettings : _*)
|
||||||
|
+ lazy val sbtSub = baseProject(sbtPath, "sbt") dependsOn(mainSub, compileInterfaceSub, scriptedSbtSub % "test->test") settings(sbtSettings : _*)
|
||||||
|
|
||||||
|
/* Nested subproject paths */
|
||||||
|
def sbtPath = file("sbt")
|
||||||
|
@@ -211,10 +209,10 @@
|
||||||
|
publishAll <<= inAll(nonRoots, publishLocal.task),
|
||||||
|
publishAll <<= (publishAll, publishLocal).map((x,y)=> ()) // publish all normal deps as well as the sbt-launch jar
|
||||||
|
)
|
||||||
|
- def fullDocSettings = Util.baseScalacOptions ++ Docs.settings ++ Sxr.settings ++ Seq(
|
||||||
|
+ def fullDocSettings = Util.baseScalacOptions ++ Sxr.settings ++ Seq(
|
||||||
|
scalacOptions += "-Ymacro-no-expand", // for both sxr and doc
|
||||||
|
sources in sxr <<= deepTasks(sources in Compile), //sxr
|
||||||
|
- sources in (Compile,doc) <<= sources in sxr, // doc
|
||||||
|
+ sources in (Compile) <<= sources in sxr, // doc
|
||||||
|
Sxr.sourceDirectories <<= deep(sourceDirectories in Compile).map(_.flatten), // to properly relativize the source paths
|
||||||
|
fullClasspath in sxr <<= (externalDependencyClasspath in Compile in sbtSub),
|
||||||
|
dependencyClasspath in (Compile,doc) <<= fullClasspath in sxr
|
||||||
19
sbt-0.13.1-sxr.patch
Normal file
19
sbt-0.13.1-sxr.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
--- a/project/Sxr.scala 2014-01-20 15:50:18.561978172 -0600
|
||||||
|
+++ b/project/Sxr.scala 2014-01-20 15:35:04.949702779 -0600
|
||||||
|
@@ -11,15 +11,10 @@
|
||||||
|
lazy val settings: Seq[Setting[_]] = inTask(sxr)(inSxrSettings) ++ baseSettings
|
||||||
|
|
||||||
|
def baseSettings = Seq(
|
||||||
|
- libraryDependencies += "org.scala-sbt.sxr" % "sxr_2.10" % "0.3.0" % sxrConf.name
|
||||||
|
)
|
||||||
|
def inSxrSettings = Seq(
|
||||||
|
managedClasspath := update.value.matching( configurationFilter(sxrConf.name) ).classpath,
|
||||||
|
- scalacOptions += "-P:sxr:base-directory:" + sourceDirectories.value.absString,
|
||||||
|
- scalacOptions += "-Xplugin:" + managedClasspath.value.files.filter(_.getName.contains("sxr")).absString,
|
||||||
|
- scalacOptions += "-Ystop-after:sxr",
|
||||||
|
- target := target.in(taskGlobal).value / "browse",
|
||||||
|
- sxr in taskGlobal <<= sxrTask
|
||||||
|
+ scalacOptions += "-P:sxr:base-directory:" + sourceDirectories.value.absString
|
||||||
|
)
|
||||||
|
def taskGlobal = ThisScope.copy(task = Global)
|
||||||
|
def sxrTask = (sources, target, scalacOptions, classpathOptions, scalaInstance, fullClasspath, streams) map { (srcs, out, opts, cpOpts, si, cp, s) =>
|
||||||
26
sbt.boot.properties
Normal file
26
sbt.boot.properties
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[scala]
|
||||||
|
version: FEDORA_SCALA_VERSION
|
||||||
|
|
||||||
|
[app]
|
||||||
|
org: ${sbt.organization-org.scala-sbt}
|
||||||
|
name: sbt
|
||||||
|
version: ${sbt.version-read(sbt.version)[FEDORA_SBT_VERSION]}
|
||||||
|
class: ${sbt.main.class-sbt.xMain}
|
||||||
|
components: xsbti,extra
|
||||||
|
cross-versioned: ${sbt.cross.versioned-false}
|
||||||
|
|
||||||
|
[repositories]
|
||||||
|
local
|
||||||
|
fedora: file:${fedora.sbt.ivy.dir-ivy-local}, [organization]/[module]/[revision]/ivy.xml, [organization]/[module]/[revision]/[artifact]-[revision].[ext]
|
||||||
|
typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
|
||||||
|
maven-central
|
||||||
|
sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots
|
||||||
|
|
||||||
|
[boot]
|
||||||
|
directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}
|
||||||
|
|
||||||
|
[ivy]
|
||||||
|
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}
|
||||||
|
checksums: ${sbt.checksums-sha1,md5}
|
||||||
|
override-build-repos: ${sbt.override.build.repos-false}
|
||||||
|
repository-config: ${sbt.repository.config-${sbt.global.base-${user.home}/.sbt}/repositories}
|
||||||
481
sbt.spec
Normal file
481
sbt.spec
Normal file
@ -0,0 +1,481 @@
|
|||||||
|
# doing a bootstrap build from public sbt binaries
|
||||||
|
%global do_bootstrap 0
|
||||||
|
|
||||||
|
# build non-bootstrap packages with tests, cross-referenced sources, etc
|
||||||
|
%global do_proper 0
|
||||||
|
%global scala_version 2.10.6
|
||||||
|
%global scala_short_version 2.10
|
||||||
|
%global sbt_bootstrap_version 0.13.1
|
||||||
|
%global sbt_major 0
|
||||||
|
%global sbt_minor 13
|
||||||
|
%global sbt_patch 1
|
||||||
|
%global sbt_build %{nil}
|
||||||
|
%global sbt_short_version %{sbt_major}.%{sbt_minor}
|
||||||
|
%global sbt_version %{sbt_major}.%{sbt_minor}.%{sbt_patch}
|
||||||
|
%global sbt_full_version %{sbt_version}%{sbt_build}
|
||||||
|
%global typesafe_repo http://repo.typesafe.com/typesafe/ivy-releases
|
||||||
|
|
||||||
|
%global ivy_local_dir ivy-local
|
||||||
|
|
||||||
|
%global installed_ivy_local %{_datadir}/%{name}/%{ivy_local_dir}
|
||||||
|
|
||||||
|
%global generic_ivy_artifact() %{1}/%{2}/%{3}/%{4}/jars/%{5}.jar
|
||||||
|
%global generic_ivy_descriptor() %{1}/%{2}/%{3}/%{4}/ivys/ivy.xml#/%{5}-%{4}-ivy.xml
|
||||||
|
|
||||||
|
%global sbt_ivy_artifact() %{typesafe_repo}/org.scala-sbt/%{1}/%{sbt_bootstrap_version}/jars/%{1}.jar
|
||||||
|
%global sbt_ivy_descriptor() %{typesafe_repo}/org.scala-sbt/%{1}/%{sbt_bootstrap_version}/ivys/ivy.xml#/%{1}-%{sbt_bootstrap_version}-ivy.xml
|
||||||
|
|
||||||
|
%global sbt_ghpages_version 0.5.1
|
||||||
|
%global sbt_git_version 0.6.3
|
||||||
|
%global sbt_site_version 0.6.2
|
||||||
|
%global sbt_site_jar_version 0.6.2
|
||||||
|
|
||||||
|
%global want_sxr 1
|
||||||
|
%global want_specs2 0
|
||||||
|
%global want_scalacheck 1
|
||||||
|
%global want_dispatch_http 1
|
||||||
|
|
||||||
|
|
||||||
|
%global sxr_version 0.3.0
|
||||||
|
%global sbinary_version 0.4.2
|
||||||
|
%global scalacheck_version 1.11.0
|
||||||
|
%global specs2_version 1.12.3
|
||||||
|
%global testinterface_version 1.0
|
||||||
|
%global dispatch_http_version 0.8.9
|
||||||
|
|
||||||
|
Name: sbt
|
||||||
|
Version: %{sbt_version}
|
||||||
|
Release: 1
|
||||||
|
Summary: The simple build tool for Scala and Java projects
|
||||||
|
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
License: BSD
|
||||||
|
URL: http://www.scala-sbt.org
|
||||||
|
Source0: https://github.com/sbt/sbt/archive/v%{version}%{sbt_build}.tar.gz
|
||||||
|
Patch0: sbt-0.13.1-sbt-scala.patch
|
||||||
|
Patch1: sbt-0.13.1-RC3-release-scala.patch
|
||||||
|
Patch2: sbt-0.13.1-ivy-2.3.0.patch
|
||||||
|
Patch3: sbt-0.13.1-ivy-docs.patch
|
||||||
|
Patch4: sbt-0.13.1-sxr.patch
|
||||||
|
Patch5: sbt-0.13.1-ivy-2.4.0.patch
|
||||||
|
|
||||||
|
# sbt-ghpages plugin
|
||||||
|
Source1: https://github.com/sbt/sbt-ghpages/archive/v%{sbt_ghpages_version}.tar.gz
|
||||||
|
|
||||||
|
# sbt-git plugin
|
||||||
|
Source2: https://github.com/sbt/sbt-git/archive/v%{sbt_git_version}.tar.gz
|
||||||
|
|
||||||
|
# sbt-site plugin
|
||||||
|
Source3: https://github.com/sbt/sbt-site/archive/%{sbt_site_version}.tar.gz
|
||||||
|
|
||||||
|
# sxr
|
||||||
|
Source4: https://github.com/harrah/browse/archive/v%{sxr_version}.tar.gz
|
||||||
|
|
||||||
|
# scalacheck
|
||||||
|
# nb: no "v" in this tarball URL
|
||||||
|
%if %{?want_scalacheck}
|
||||||
|
Source6: https://github.com/rickynils/scalacheck/archive/%{scalacheck_version}.tar.gz
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# specs
|
||||||
|
# nb: no "v" in this tarball url
|
||||||
|
# nb: this depends on scalaz; might need to excise
|
||||||
|
Source7: https://github.com/etorreborre/specs2/archive/SPECS2-%{specs2_version}.tar.gz
|
||||||
|
|
||||||
|
Source16: https://raw.github.com/willb/climbing-nemesis/master/climbing-nemesis.py
|
||||||
|
Source17: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/sbt.boot.properties
|
||||||
|
Source15: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/rpmbuild-sbt.boot.properties
|
||||||
|
|
||||||
|
# Ivy POM
|
||||||
|
# necessary for bootstrapping with sbt 0.13.1
|
||||||
|
Source18: http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.3.0-rc1/ivy-2.3.0-rc1.pom
|
||||||
|
# necessary for F19 (which doesn't ship with an Ivy pom)
|
||||||
|
Source20: http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.3.0/ivy-2.3.0.pom
|
||||||
|
|
||||||
|
# Ivy 2.3.0-rc1 jar (necessary for bootstrapping with sbt 0.13.1)
|
||||||
|
Source19: http://repo1.maven.org/maven2/org/apache/ivy/ivy/2.3.0-rc1/ivy-2.3.0-rc1.jar
|
||||||
|
|
||||||
|
|
||||||
|
# sbt script (to be obsoleted in future releases)
|
||||||
|
Source21: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/sbt
|
||||||
|
|
||||||
|
BuildRequires: mvn(org.scala-lang:scala-compiler) java-devel python3
|
||||||
|
# maven is required because climbing-nemesis.py uses xmvn-resolve
|
||||||
|
BuildRequires: maven-local
|
||||||
|
|
||||||
|
BuildRequires: mvn(org.bouncycastle:bcprov-jdk16) mvn(org.bouncycastle:bcpg-jdk16) hawtjni
|
||||||
|
BuildRequires: mvn(org.fusesource.jansi:jansi) jline2 proguard
|
||||||
|
|
||||||
|
BuildRequires: javapackages-tools
|
||||||
|
Requires: javapackages-tools
|
||||||
|
|
||||||
|
BuildRequires: mvn(oro:oro) mvn(com.jcraft:jsch) mvn(commons-httpclient:commons-httpclient)
|
||||||
|
BuildRequires: apache-ivy mvn(org.scala-lang:scala-compiler) mvn(org.scala-lang:scala-library)
|
||||||
|
BuildRequires: mvn(org.scala-lang:scala-reflect) mvn(org.jsoup:jsoup)
|
||||||
|
|
||||||
|
Requires: mvn(oro:oro) mvn(com.jcraft:jsch) mvn(commons-httpclient:commons-httpclient)
|
||||||
|
Requires: apache-ivy mvn(org.scala-lang:scala-compiler) mvn(org.scala-lang:scala-library)
|
||||||
|
Requires: mvn(org.scala-lang:scala-reflect) mvn(org.jsoup:jsoup) proguard
|
||||||
|
|
||||||
|
Requires: mvn(org.bouncycastle:bcprov-jdk16) mvn(org.bouncycastle:bcpg-jdk16)
|
||||||
|
Requires: mvn(org.fusesource.jansi:jansi) jline2
|
||||||
|
|
||||||
|
BuildRequires: sbinary = %{sbinary_version} test-interface = %{testinterface_version}
|
||||||
|
|
||||||
|
Requires: sbinary = %{sbinary_version} test-interface = %{testinterface_version}
|
||||||
|
|
||||||
|
%if !%{do_bootstrap}
|
||||||
|
BuildRequires: sbt = %{sbt_bootstrap_version}
|
||||||
|
|
||||||
|
%if %{do_proper}
|
||||||
|
BuildRequires: sbt-ghpages = %{sbt_ghpages_version} sbt-site = %{sbt_site_version}
|
||||||
|
BuildRequires: sbt-git = %{sbt_git_version}
|
||||||
|
|
||||||
|
BuildRequires: sxr = %{sxr_version} scalacheck = %{scalacheck_version}
|
||||||
|
BuildRequires: specs2 = %{specs2_version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
sbt is the simple build tool for Scala and Java projects.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n %{name}-%{sbt_version}%{sbt_build}
|
||||||
|
|
||||||
|
%patch0 -p1
|
||||||
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
|
||||||
|
%if !%{do_proper}
|
||||||
|
%patch4 -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%patch5
|
||||||
|
|
||||||
|
sed -i -e '/% "test"/d' project/Util.scala
|
||||||
|
|
||||||
|
cp %{SOURCE16} .
|
||||||
|
cp %{SOURCE15} .
|
||||||
|
chmod 755 climbing-nemesis.py
|
||||||
|
|
||||||
|
cp %{SOURCE17} .
|
||||||
|
|
||||||
|
%if %{do_bootstrap}
|
||||||
|
cp %{SOURCE63} .
|
||||||
|
%endif
|
||||||
|
|
||||||
|
sed -i -e '/dispatch-http/d' project/p.sbt
|
||||||
|
sed -i -e '/sbt-site/d' project/p.sbt
|
||||||
|
sed -i -e '/sbt-ghpages/d' project/p.sbt
|
||||||
|
|
||||||
|
|
||||||
|
sed -i -e 's/0.7.1/0.6.2/g' project/p.sbt
|
||||||
|
|
||||||
|
for props in rpmbuild-sbt.boot.properties sbt.boot.properties ; do
|
||||||
|
sed -i -e 's/FEDORA_SCALA_VERSION/%{scala_version}/g' $props
|
||||||
|
sed -i -e 's/FEDORA_SBT_VERSION/%{sbt_version}/g' $props
|
||||||
|
done
|
||||||
|
|
||||||
|
sed -i -e 's/0.13.0/%{sbt_bootstrap_version}/g' project/build.properties
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Here we're going to use the climbing-nemesis script to populate a local
|
||||||
|
# Ivy repository. sbt needs these dependencies to be resolvable by Ivy
|
||||||
|
# and not merely on the classpath. When we build a package, we'll be taking
|
||||||
|
# this repository and installing it alongside the sbt jars so our sbt binary
|
||||||
|
# can use it.
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
./climbing-nemesis.py org.jsoup jsoup %{ivy_local_dir} --version 1.7.1
|
||||||
|
|
||||||
|
./climbing-nemesis.py com.jcraft jsch %{ivy_local_dir} --version 0.1.46
|
||||||
|
|
||||||
|
# scala compiler; nb; we may need to treat the compiler specially to remove the spurious jline dependency
|
||||||
|
./climbing-nemesis.py org.scala-lang scala-library %{ivy_local_dir} --version %{scala_version}
|
||||||
|
./climbing-nemesis.py org.scala-lang scala-compiler %{ivy_local_dir} --version %{scala_version}
|
||||||
|
./climbing-nemesis.py org.scala-lang scala-reflect %{ivy_local_dir} --version %{scala_version}
|
||||||
|
|
||||||
|
./climbing-nemesis.py jline jline %{ivy_local_dir} --version 2.11
|
||||||
|
./climbing-nemesis.py org.fusesource.jansi jansi %{ivy_local_dir} --version 1.12
|
||||||
|
./climbing-nemesis.py org.fusesource.jansi jansi-native %{ivy_local_dir} --version 1.8
|
||||||
|
./climbing-nemesis.py org.fusesource.hawtjni hawtjni-runtime %{ivy_local_dir} --version 1.16
|
||||||
|
|
||||||
|
%if %{do_bootstrap}
|
||||||
|
# we need to use the bundled ivy in the bootstrap build because 2.3.0
|
||||||
|
# is source and binary incompatible with 2.3.0-rc1 (which upstream sbt
|
||||||
|
# 0.13.1 is built against)
|
||||||
|
|
||||||
|
./climbing-nemesis.py org.apache.ivy ivy %{ivy_local_dir} --version 2.3.0-rc1 --pomfile %{SOURCE18} --jarfile %{SOURCE19} # --extra-dep org.bouncycastle:bcpg-jdk16:1.46 --extra-dep org.bouncycastle:bcprov-jdk16:1.46
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# we're building against Ivy 2.3.0, though
|
||||||
|
./climbing-nemesis.py org.apache.ivy ivy %{ivy_local_dir} --version 2.3.0 --pomfile %{SOURCE20} --jarfile %{_javadir}/ivy.jar # --extra-dep org.bouncycastle:bcpg-jdk16:1.46 --extra-dep org.bouncycastle:bcprov-jdk16:1.46
|
||||||
|
|
||||||
|
## BEGIN OPTIONAL IVY DEPS
|
||||||
|
|
||||||
|
# bouncycastle pgp signature generator
|
||||||
|
# ./climbing-nemesis.py org.bouncycastle bcpg-jdk16 %{ivy_local_dir} --version 1.46
|
||||||
|
# ./climbing-nemesis.py org.bouncycastle bcprov-jdk16 %{ivy_local_dir} --version 1.46
|
||||||
|
|
||||||
|
# ORO (blast from the past)
|
||||||
|
./climbing-nemesis.py oro oro %{ivy_local_dir} --version 2.0.8
|
||||||
|
|
||||||
|
# JSCH
|
||||||
|
./climbing-nemesis.py com.jcraft jsch %{ivy_local_dir} --version 0.1.31
|
||||||
|
|
||||||
|
# commons-httpclient
|
||||||
|
./climbing-nemesis.py commons-httpclient commons-httpclient %{ivy_local_dir} --version 3.0
|
||||||
|
|
||||||
|
## END OPTIONAL IVY DEPS
|
||||||
|
|
||||||
|
./climbing-nemesis.py net.sf.proguard proguard-base %{ivy_local_dir} --version 4.8 --jarfile %{_javadir}/proguard/proguard.jar
|
||||||
|
|
||||||
|
%if %{do_bootstrap}
|
||||||
|
cp %{SOURCE132} org.scala-sbt.ivy-%{sbt_bootstrap_version}.ivy.xml
|
||||||
|
cp %{SOURCE171} org.scala-sbt.sbt-%{sbt_bootstrap_version}.ivy.xml
|
||||||
|
|
||||||
|
sed -i -e '/precompiled/d' org.scala-sbt.ivy-%{sbt_bootstrap_version}.ivy.xml
|
||||||
|
sed -i -e '/precompiled/d' org.scala-sbt.sbt-%{sbt_bootstrap_version}.ivy.xml
|
||||||
|
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE32} --ivyfile org.scala-sbt.ivy-%{sbt_bootstrap_version}.ivy.xml org.scala-sbt ivy %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE33} --ivyfile %{SOURCE133} org.scala-sbt task-system %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE34} --ivyfile %{SOURCE134} org.scala-sbt compiler-interface-src %{ivy_local_dir} --version %{sbt_bootstrap_version} --override org.scala-sbt:compiler-interface --override-dir-only
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE35} --ivyfile %{SOURCE135} org.scala-sbt compiler-interface-bin %{ivy_local_dir} --version %{sbt_bootstrap_version} --override org.scala-sbt:compiler-interface --override-dir-only
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE36} --ivyfile %{SOURCE136} org.scala-sbt testing %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE37} --ivyfile %{SOURCE137} org.scala-sbt command %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE38} --ivyfile %{SOURCE138} org.scala-sbt test-agent %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE39} --ivyfile %{SOURCE139} org.scala-sbt launcher-interface %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE40} --ivyfile %{SOURCE140} org.scala-sbt run %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE41} --ivyfile %{SOURCE141} org.scala-sbt compiler-ivy-integration %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE42} --ivyfile %{SOURCE142} org.scala-sbt scripted-sbt %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE44} --ivyfile %{SOURCE144} org.scala-sbt collections %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE45} --ivyfile %{SOURCE145} org.scala-sbt persist %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE46} --ivyfile %{SOURCE146} org.scala-sbt classfile %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE47} --ivyfile %{SOURCE147} org.scala-sbt control %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE48} --ivyfile %{SOURCE148} org.scala-sbt launcher %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE49} --ivyfile %{SOURCE149} org.scala-sbt apply-macro %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE50} --ivyfile %{SOURCE150} org.scala-sbt datatype-generator %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE51} --ivyfile %{SOURCE151} org.scala-sbt interface %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE52} --ivyfile %{SOURCE152} org.scala-sbt main-settings %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE53} --ivyfile %{SOURCE153} org.scala-sbt incremental-compiler %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE54} --ivyfile %{SOURCE154} org.scala-sbt cache %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE55} --ivyfile %{SOURCE155} org.scala-sbt compiler-integration %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE56} --ivyfile %{SOURCE156} org.scala-sbt api %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE57} --ivyfile %{SOURCE157} org.scala-sbt main %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE58} --ivyfile %{SOURCE158} org.scala-sbt classpath %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE59} --ivyfile %{SOURCE159} org.scala-sbt logging %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE60} --ivyfile %{SOURCE160} org.scala-sbt compile %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE61} --ivyfile %{SOURCE161} org.scala-sbt process %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE62} --ivyfile %{SOURCE162} org.scala-sbt actions %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE63} --ivyfile %{SOURCE163} org.scala-sbt sbt-launch %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE64} --ivyfile %{SOURCE164} org.scala-sbt scripted-plugin %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE65} --ivyfile %{SOURCE165} org.scala-sbt tracking %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE66} --ivyfile %{SOURCE166} org.scala-sbt tasks %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE67} --ivyfile %{SOURCE167} org.scala-sbt completion %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE68} --ivyfile %{SOURCE168} org.scala-sbt cross %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE69} --ivyfile %{SOURCE169} org.scala-sbt relation %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE70} --ivyfile %{SOURCE170} org.scala-sbt io %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE71} --ivyfile org.scala-sbt.sbt-%{sbt_bootstrap_version}.ivy.xml org.scala-sbt sbt %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE72} --ivyfile %{SOURCE172} org.scala-sbt scripted-framework %{ivy_local_dir} --version %{sbt_bootstrap_version}
|
||||||
|
|
||||||
|
# plugins
|
||||||
|
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE73} com.typesafe.sbt sbt-ghpages %{ivy_local_dir} --version %{sbt_ghpages_version} --meta e:scalaVersion=%{scala_short_version} --meta e:sbtVersion=%{sbt_short_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE74} com.typesafe.sbt sbt-site %{ivy_local_dir} --version %{sbt_site_version} --meta e:scalaVersion=%{scala_short_version} --meta e:sbtVersion=%{sbt_short_version}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE75} com.typesafe.sbt sbt-git %{ivy_local_dir} --version %{sbt_git_version} --meta e:scalaVersion=%{scala_short_version} --meta e:sbtVersion=%{sbt_short_version}
|
||||||
|
|
||||||
|
# SXR
|
||||||
|
%if %{?want_sxr}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE76} org.scala-sbt.sxr sxr %{ivy_local_dir} --version %{sxr_version} --scala %{scala_short_version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# test-interface
|
||||||
|
./climbing-nemesis.py org.scala-sbt test-interface %{ivy_local_dir} --version 1.0
|
||||||
|
|
||||||
|
# sbinary
|
||||||
|
./climbing-nemesis.py org.scala-tools.sbinary sbinary_%{scala_short_version} %{ivy_local_dir} # --scala %{scala_short_version}
|
||||||
|
|
||||||
|
# scalacheck
|
||||||
|
%if %{?want_scalacheck}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE78} org.scalacheck scalacheck %{ivy_local_dir} --version %{scalacheck_version} --scala %{scala_short_version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# specs2
|
||||||
|
%if %{?want_specs2}
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE79} org.specs2 specs2 %{ivy_local_dir} --version %{specs2_version} --scala %{scala_short_version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %{?want_dispatch_http}
|
||||||
|
# dispatch-http
|
||||||
|
./climbing-nemesis.py --jarfile %{SOURCE81} net.databinder dispatch-http_%{scala_short_version} %{ivy_local_dir} --version %{dispatch_http_version}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%else
|
||||||
|
# If we aren't bootstrapping, copy installed jars into local ivy cache
|
||||||
|
# dir. In the future, we'll use Mikołaj's new xmvn Ivy resolver.
|
||||||
|
|
||||||
|
# sbt components
|
||||||
|
for jar in actions api apply-macro cache classfile classpath collections command compile compiler-integration compiler-ivy-integration completion control cross datatype-generator incremental-compiler interface io ivy launcher launcher-interface logging main main-settings persist process relation run sbt scripted-framework scripted-plugin scripted-sbt tasks task-system test-agent testing tracking; do
|
||||||
|
./climbing-nemesis.py --jarfile %{_javadir}/%{name}/${jar}.jar --ivyfile %{installed_ivy_local}/org.scala-sbt/${jar}/%{sbt_bootstrap_version}/ivy.xml org.scala-sbt ${jar} %{ivy_local_dir}
|
||||||
|
done
|
||||||
|
|
||||||
|
./climbing-nemesis.py --jarfile %{_javadir}/%{name}/compiler-interface-src.jar --ivyfile %{installed_ivy_local}/org.scala-sbt/compiler-interface/%{sbt_bootstrap_version}/ivy.xml org.scala-sbt compiler-interface-src %{ivy_local_dir} --version %{sbt_bootstrap_version} --override org.scala-sbt:compiler-interface --override-dir-only
|
||||||
|
|
||||||
|
./climbing-nemesis.py --jarfile %{_javadir}/%{name}/compiler-interface-bin.jar --ivyfile %{installed_ivy_local}/org.scala-sbt/compiler-interface/%{sbt_bootstrap_version}/ivy.xml org.scala-sbt compiler-interface-bin %{ivy_local_dir} --version %{sbt_bootstrap_version} --override org.scala-sbt:compiler-interface --override-dir-only
|
||||||
|
|
||||||
|
# test-interface
|
||||||
|
./climbing-nemesis.py org.scala-sbt test-interface %{ivy_local_dir} --version 1.0
|
||||||
|
|
||||||
|
# sbinary
|
||||||
|
./climbing-nemesis.py org.scala-tools.sbinary sbinary_%{scala_short_version} %{ivy_local_dir} # --scala %{scala_short_version}
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# better not to try and compile the docs project
|
||||||
|
rm -f project/Docs.scala
|
||||||
|
|
||||||
|
mkdir sbt-boot-dir
|
||||||
|
|
||||||
|
%if %{do_bootstrap}
|
||||||
|
mkdir -p sbt-boot-dir/scala-%{scala_version}/org.scala-sbt/%{name}/%{sbt_bootstrap_version}/
|
||||||
|
mkdir -p sbt-boot-dir/scala-%{scala_version}/lib
|
||||||
|
|
||||||
|
for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep fusesource) ; do
|
||||||
|
cp --symbolic-link $(readlink $jar) sbt-boot-dir/scala-%{scala_version}/lib
|
||||||
|
done
|
||||||
|
|
||||||
|
# this is a hack, obvs
|
||||||
|
for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep bouncycastle) ; do
|
||||||
|
cp --symbolic-link $(readlink $jar) sbt-boot-dir/scala-%{scala_version}/lib
|
||||||
|
done
|
||||||
|
|
||||||
|
%endif
|
||||||
|
mkdir -p scala/lib
|
||||||
|
for jar in %{_javadir}/scala/*.jar ; do
|
||||||
|
cp --symbolic-link $jar scala/lib
|
||||||
|
done
|
||||||
|
|
||||||
|
sed -i -e 's/["]2[.]10[.][234]["]/\"%{scala_version}\"/g' $(find . -name \*.sbt -type f) $(find . -name \*.xml) $(find . -name \*.scala)
|
||||||
|
sed -i -e 's/["]2[.]10[.]2-RC2["]/\"%{scala_version}\"/g' $(find . -name \*.sbt -type f)
|
||||||
|
|
||||||
|
# work around proguard bugs with the Scala library
|
||||||
|
sed -i -e 's/"-dontnote",/"-dontnote", "-dontshrink", "-dontoptimize",/g' project/Proguard.scala
|
||||||
|
sed -i -e 's/mapLibraryJars.all filterNot in[.]toSet./mapLibraryJars(all.map {f => new java.io.File(f.getCanonicalPath())} filterNot in.map {f => new java.io.File(f.getCanonicalPath())}.toSet)/g' project/Proguard.scala
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
export SBT_IVY_DIR=$PWD/ivy-local
|
||||||
|
export SBT_BOOT_DIR=$PWD/sbt-boot-dir
|
||||||
|
export SBT_BOOT_PROPERTIES=rpmbuild-sbt.boot.properties
|
||||||
|
sbt package "set publishTo in Global := Some(Resolver.file(\"published\", file(\"published\"))(Resolver.ivyStylePatterns) ivys \"$(pwd)/published/[organization]/[module]/[revision]/ivy.xml\" artifacts \"$(pwd)/published/[organization]/[module]/[revision]/[artifact]-[revision].[ext]\")" publish makePom
|
||||||
|
|
||||||
|
# XXX: this is a hack; we seem to get correct metadata but bogus JARs
|
||||||
|
# from "sbt publish" for some reason
|
||||||
|
for f in $(find published -name \*.jar ) ; do
|
||||||
|
find . -ipath \*target\* -and -name $(basename $f) -exec cp '{}' $f \;
|
||||||
|
done
|
||||||
|
|
||||||
|
%install
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}/%{_javadir}/%{name}
|
||||||
|
|
||||||
|
# collect and install SBT jars
|
||||||
|
find published -name \*.jar | grep -v sbt-launch.jar | grep %{sbt_full_version}.jar | xargs -I JAR cp JAR %{buildroot}/%{_javadir}/%{name}
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}/%{_bindir}
|
||||||
|
cp -p %{SOURCE21} %{buildroot}/%{_bindir}/%{name}
|
||||||
|
chmod 755 %{buildroot}/%{_bindir}/%{name}
|
||||||
|
|
||||||
|
pushd %{buildroot}/%{_javadir}/%{name}
|
||||||
|
for jar in *.jar ; do
|
||||||
|
mv $jar $(echo $jar | sed -e 's/-%{sbt_full_version}//g')
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
|
||||||
|
rm -f %{buildroot}/%{_javadir}/%{name}/sbt-launch.jar
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}
|
||||||
|
|
||||||
|
# XXXXXXX
|
||||||
|
for props in rpmbuild-sbt.boot.properties sbt.boot.properties ; do
|
||||||
|
sed 's/debug/info/' < $props > %{buildroot}/%{_sysconfdir}/%{name}/$props
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p %{buildroot}/%{installed_ivy_local}
|
||||||
|
|
||||||
|
# remove things that we only needed for the bootstrap build
|
||||||
|
|
||||||
|
rm -rf %{ivy_local_dir}/net.databinder
|
||||||
|
rm -rf %{ivy_local_dir}/com.typesafe.sbt
|
||||||
|
rm -rf %{ivy_local_dir}/org.scalacheck
|
||||||
|
rm -rf %{ivy_local_dir}/org.scala-sbt.sxr
|
||||||
|
rm -rf %{ivy_local_dir}/cache
|
||||||
|
|
||||||
|
rm -rf %{ivy_local_dir}/org.scala-sbt/sbt-launch
|
||||||
|
|
||||||
|
(cd %{ivy_local_dir} ; tar --exclude=.md5 --exclude=.sha1 -cf - .) | (cd %{buildroot}/%{installed_ivy_local} ; tar -xf - )
|
||||||
|
(cd published ; tar --exclude=\*.md5 --exclude=\*.sha1 -cf - .) | (cd %{buildroot}/%{installed_ivy_local} ; tar -xf - )
|
||||||
|
|
||||||
|
for bootjar in $(find %{buildroot}/%{installed_ivy_local}/org.scala-sbt -type l) ; do
|
||||||
|
rm -f $bootjar
|
||||||
|
ln -s %{_javadir}/%{name}/$(basename $bootjar) $bootjar
|
||||||
|
done
|
||||||
|
|
||||||
|
%if %{do_bootstrap}
|
||||||
|
# remove bootstrap ivy 2.3.0-rc1 jar if we're using it
|
||||||
|
find %{buildroot}/%{installed_ivy_local} -lname %{SOURCE19} | xargs dirname | xargs rm -rf
|
||||||
|
|
||||||
|
concretize() {
|
||||||
|
src=$(readlink $1)
|
||||||
|
rm $1 && cp $src $1
|
||||||
|
}
|
||||||
|
|
||||||
|
# copy other bootstrap dependency jars from their sources
|
||||||
|
for depjar in $(find %{buildroot}/%{installed_ivy_local} -lname %{_sourcedir}\* ) ; do
|
||||||
|
concretize $depjar
|
||||||
|
done
|
||||||
|
|
||||||
|
%endif # do_bootstrap
|
||||||
|
|
||||||
|
find %{buildroot}/%{installed_ivy_local} -name \*.lock -delete
|
||||||
|
|
||||||
|
find %{buildroot}/%{_datadir}/%{name} -name \*test-interface\* | xargs rm -rf
|
||||||
|
./climbing-nemesis.py org.scala-sbt test-interface %{buildroot}/%{installed_ivy_local} --version %{testinterface_version}
|
||||||
|
|
||||||
|
### install POM files
|
||||||
|
mkdir -p %{buildroot}/%{_mavenpomdir}
|
||||||
|
rm -f .rpm_pomfiles
|
||||||
|
touch .rpm_pomfiles
|
||||||
|
declare -a shortnames
|
||||||
|
|
||||||
|
for pom in $(find . -name \*.pom | grep -v compiler-interface | grep -v launch-test | grep -v sbt-launch ) ; do
|
||||||
|
shortname=$(echo $pom | sed -e 's/^.*[/]\([a-z-]\+\)-0.13.1.pom$/\1/g')
|
||||||
|
echo installing POM $pom to %{_mavenpomdir}/JPP.%{name}-${shortname}.pom
|
||||||
|
cp $pom %{buildroot}/%{_mavenpomdir}/JPP.%{name}-${shortname}.pom
|
||||||
|
echo %{_mavenpomdir}/JPP.%{name}-${shortname}.pom >> .rpm_pomfiles
|
||||||
|
shortnames=( "${shortnames[@]}" $shortname )
|
||||||
|
done
|
||||||
|
|
||||||
|
echo shortnames are ${shortnames[@]}
|
||||||
|
|
||||||
|
for sub in ${shortnames[@]} ; do
|
||||||
|
echo running add_maven_depmap JPP.%{name}-${sub}.pom %{name}/${sub}.jar
|
||||||
|
%add_maven_depmap JPP.%{name}-${sub}.pom %{name}/${sub}.jar
|
||||||
|
done
|
||||||
|
|
||||||
|
%files -f .mfiles
|
||||||
|
%{_datadir}/%{name}
|
||||||
|
%{_bindir}/%{name}*
|
||||||
|
%{_javadir}/%{name}
|
||||||
|
%{_javadir}/%{name}/compiler-interface-src.jar
|
||||||
|
%{_javadir}/%{name}/compiler-interface-bin.jar
|
||||||
|
|
||||||
|
%{_sysconfdir}/%{name}
|
||||||
|
%doc README.md LICENSE NOTICE
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Sep 1 2020 wangxiao <wangxiao65@huawei.com> - %{sbt_version}-1
|
||||||
|
- package init
|
||||||
BIN
v0.13.1.tar.gz
Normal file
BIN
v0.13.1.tar.gz
Normal file
Binary file not shown.
BIN
v0.3.0.tar.gz
Normal file
BIN
v0.3.0.tar.gz
Normal file
Binary file not shown.
BIN
v0.5.1.tar.gz
Normal file
BIN
v0.5.1.tar.gz
Normal file
Binary file not shown.
BIN
v0.6.3.tar.gz
Normal file
BIN
v0.6.3.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user