diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2016-12-08 11:08:58 -0800 |
---|---|---|
committer | becker33 <becker33@llnl.gov> | 2016-12-08 11:08:58 -0800 |
commit | be300eb6d55776581da9a4abafc69a4c3ca9fe74 (patch) | |
tree | 8d62dffc72ccc2e0ce34e595ff55ce230a3a4791 /lib | |
parent | 65df41744435ab80f50e0b592320832fd138adc5 (diff) | |
download | spack-be300eb6d55776581da9a4abafc69a4c3ca9fe74.tar.gz spack-be300eb6d55776581da9a4abafc69a4c3ca9fe74.tar.bz2 spack-be300eb6d55776581da9a4abafc69a4c3ca9fe74.tar.xz spack-be300eb6d55776581da9a4abafc69a4c3ca9fe74.zip |
Add support for parsing R-XML URL versions. (#2525)
* Add support for parsing R-XML URL versions.
* Better url-parse debug output.
- just print the debug stuff all the time.
* fix R-XML versions.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/cmd/url_parse.py | 10 | ||||
-rw-r--r-- | lib/spack/spack/test/url_parse.py | 5 | ||||
-rw-r--r-- | lib/spack/spack/url.py | 14 |
3 files changed, 21 insertions, 8 deletions
diff --git a/lib/spack/spack/cmd/url_parse.py b/lib/spack/spack/cmd/url_parse.py index b8c7c95040..2af9671459 100644 --- a/lib/spack/spack/cmd/url_parse.py +++ b/lib/spack/spack/cmd/url_parse.py @@ -53,15 +53,19 @@ def print_name_and_version(url): def url_parse(parser, args): url = args.url - ver, vs, vl = spack.url.parse_version_offset(url) - name, ns, nl = spack.url.parse_name_offset(url, ver) + ver, vs, vl = spack.url.parse_version_offset(url, debug=True) + name, ns, nl = spack.url.parse_name_offset(url, ver, debug=True) + print - tty.msg("Parsing URL:") + tty.msg("Detected:") try: print_name_and_version(url) except spack.url.UrlParseError as e: tty.error(str(e)) + print ' name: %s' % name + print ' version: %s' % ver + print tty.msg("Substituting version 9.9.9b:") newurl = spack.url.substitute_version(url, '9.9.9b') diff --git a/lib/spack/spack/test/url_parse.py b/lib/spack/spack/test/url_parse.py index 368532038f..818903c909 100644 --- a/lib/spack/spack/test/url_parse.py +++ b/lib/spack/spack/test/url_parse.py @@ -326,3 +326,8 @@ class UrlParseTest(unittest.TestCase): self.check( 'powerparser', '2.0.7', 'https://github.com/losalamos/CLAMR/blob/packages/PowerParser_v2.0.7.tgz?raw=true') + + def test_r_xml_version(self): + self.check( + 'xml', '3.98-1.4', + 'https://cran.r-project.org/src/contrib/XML_3.98-1.4.tar.gz') diff --git a/lib/spack/spack/url.py b/lib/spack/spack/url.py index 117f8488ee..d377a88bcc 100644 --- a/lib/spack/spack/url.py +++ b/lib/spack/spack/url.py @@ -163,7 +163,7 @@ def determine_url_file_extension(path): return ext -def parse_version_offset(path): +def parse_version_offset(path, debug=False): """Try to extract a version string from a filename or URL. This is taken largely from Homebrew's Version class.""" original_path = path @@ -209,8 +209,8 @@ def parse_version_offset(path): # e.g. lame-398-1 (r'-((\d)+-\d)', stem), - # e.g. foobar_1.2-3 - (r'_((\d+\.)+\d+(-\d+)?[a-z]?)', stem), + # e.g. foobar_1.2-3 or 3.98-1.4 + (r'_((\d+\.)+\d+(-(\d+(\.\d+)?))?[a-z]?)', stem), # e.g. foobar-4.5.1 (r'-((\d+\.)*\d+)$', stem), @@ -246,6 +246,10 @@ def parse_version_offset(path): regex, match_string = vtype match = re.search(regex, match_string) if match and match.group(1) is not None: + if debug: + tty.msg("Parsing URL: %s" % path, + " Matched regex %d: r'%s'" % (i, regex)) + version = match.group(1) start = match.start(1) @@ -266,9 +270,9 @@ def parse_version(path): return Version(ver) -def parse_name_offset(path, v=None): +def parse_name_offset(path, v=None, debug=False): if v is None: - v = parse_version(path) + v = parse_version(path, debug=debug) path, ext, suffix = split_url_extension(path) |