diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-10-01 01:21:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-01 01:21:12 +0300 |
commit | 7d49d1d2d77223a4f403cf0c723aa10ac15e8c59 (patch) | |
tree | 008ffa447523d2685e6262c0f177f84c2b9da93a /mesonbuild/wrap/wrap.py | |
parent | ea5ae8ef27690fa1682b1f164cdbc96fab08e03d (diff) | |
parent | a90e47bd4f0f81c156c582f00d3cc005887547e2 (diff) | |
download | meson-7d49d1d2d77223a4f403cf0c723aa10ac15e8c59.zip meson-7d49d1d2d77223a4f403cf0c723aa10ac15e8c59.tar.gz meson-7d49d1d2d77223a4f403cf0c723aa10ac15e8c59.tar.bz2 |
Merge pull request #2373 from leiflm/svn-wraps
introduce svn wrap support
Diffstat (limited to 'mesonbuild/wrap/wrap.py')
-rw-r--r-- | mesonbuild/wrap/wrap.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index 81a2f88..26a3489 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -19,6 +19,7 @@ import subprocess import sys from pathlib import Path from . import WrapMode +from ..mesonlib import Popen_safe try: import ssl @@ -78,6 +79,8 @@ class PackageDefinition: self.type = 'git' elif first == '[wrap-hg]': self.type = 'hg' + elif first == '[wrap-svn]': + self.type = 'svn' else: raise RuntimeError('Invalid format of package file') for line in ifile: @@ -145,6 +148,8 @@ class Resolver: self.get_git(p) elif p.type == "hg": self.get_hg(p) + elif p.type == "svn": + self.get_svn(p) else: raise AssertionError('Unreachable code.') return p.get('directory') @@ -228,6 +233,27 @@ class Resolver: subprocess.check_call(['hg', 'checkout', revno], cwd=checkoutdir) + def get_svn(self, p): + checkoutdir = os.path.join(self.subdir_root, p.get('directory')) + revno = p.get('revision') + is_there = os.path.isdir(checkoutdir) + if is_there: + p, out = Popen_safe(['svn', 'info', '--show-item', 'revision', checkoutdir]) + current_revno = out + if current_revno == revno: + return + + if revno.lower() == 'head': + # Failure to do pull is not a fatal error, + # because otherwise you can't develop without + # a working net connection. + subprocess.call(['svn', 'update'], cwd=checkoutdir) + else: + subprocess.check_call(['svn', 'update', '-r', revno], cwd=checkoutdir) + else: + subprocess.check_call(['svn', 'checkout', '-r', revno, p.get('url'), + p.get('directory')], cwd=self.subdir_root) + def get_data(self, url): blocksize = 10 * 1024 h = hashlib.sha256() |