aboutsummaryrefslogtreecommitdiff
path: root/wrap.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-05-31 12:58:50 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-05-31 12:58:50 +0300
commit63d101674d176338b51f00e7a01be13933caac76 (patch)
tree8cb2155ffc688ff4b37d99637c532ea887631caf /wrap.py
parentb896af9c5fdd8386b7ee5ca965eae21506c6d64d (diff)
downloadmeson-63d101674d176338b51f00e7a01be13933caac76.zip
meson-63d101674d176338b51f00e7a01be13933caac76.tar.gz
meson-63d101674d176338b51f00e7a01be13933caac76.tar.bz2
Can create a subdirectory for projects whose zip files do not have one.
Diffstat (limited to 'wrap.py')
-rw-r--r--wrap.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/wrap.py b/wrap.py
index f1c7bdc..1f8bce7 100644
--- a/wrap.py
+++ b/wrap.py
@@ -132,8 +132,18 @@ class Resolver:
pass
except ImportError:
pass
- if os.path.isdir(os.path.join(self.subdir_root, package.get('directory'))):
+ target_dir = os.path.join(self.subdir_root, package.get('directory'))
+ if os.path.isdir(target_dir):
return
- shutil.unpack_archive(os.path.join(self.cachedir, package.get('source_filename')), self.subdir_root)
+ extract_dir = self.subdir_root
+ # Some upstreams ship packages that do not have a leading directory.
+ # Create one for them.
+ try:
+ package.get('lead_directory_missing')
+ os.mkdir(target_dir)
+ extract_dir = target_dir
+ except KeyError:
+ pass
+ shutil.unpack_archive(os.path.join(self.cachedir, package.get('source_filename')), extract_dir)
if package.has_patch():
shutil.unpack_archive(os.path.join(self.cachedir, package.get('patch_filename')), self.subdir_root)