commit 95ed9465c675a21b728a7b0dfc869b9a16385985
Author: Michal Srb <msrb(a)redhat.com>
Date: Wed Jun 24 08:21:34 2015 +0200
Implement auxiliary function for finding files in buildroot
python/javapackages/common/util.py | 29 ++++++++++++++++++++
.../maven/lib/symlink_outside_of_buildroot.jar | 1 +
python/test/util_test.py | 17 +++++++++++
3 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py
index add1322..b892bba 100644
--- a/python/javapackages/common/util.py
+++ b/python/javapackages/common/util.py
@@ -37,8 +37,10 @@ import sys
import six
import subprocess
import logging
+import re
from optparse import OptionParser
from javapackages.common.exception import JavaPackagesToolsException
+from javapackages.common.config import get_buildroot
def kill_parent_process(rpmconf):
@@ -116,3 +118,30 @@ def get_logger(name):
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
+
+
+def get_buildroot_files(regexp=None,
+ inside_buildroot_only=True,
+ exclude_broken_symlinks=True,
+ buildroot_path=None):
+ if not buildroot_path:
+ buildroot_path = get_buildroot()
+ files = set()
+ for dirpath, dirnames, filenames in os.walk(buildroot_path):
+ for filename in filenames:
+ f = os.path.realpath(os.path.join(dirpath, filename))
+
+ if inside_buildroot_only:
+ if not f.startswith(buildroot_path):
+ continue
+
+ if exclude_broken_symlinks:
+ if not os.path.exists(f):
+ continue
+
+ if regexp:
+ match = re.search(regexp, f)
+ if not match:
+ continue
+ files.add(f)
+ return files
diff --git a/python/test/data/buildroots/br1/usr/share/java/regular.jar
b/python/test/data/buildroots/br1/usr/share/java/regular.jar
new file mode 100644
index 0000000..e69de29
diff --git a/python/test/data/buildroots/br1/usr/share/maven-metadata/metadata.xml
b/python/test/data/buildroots/br1/usr/share/maven-metadata/metadata.xml
new file mode 100644
index 0000000..e69de29
diff --git
a/python/test/data/buildroots/br1/usr/share/maven/lib/symlink_outside_of_buildroot.jar
b/python/test/data/buildroots/br1/usr/share/maven/lib/symlink_outside_of_buildroot.jar
new file mode 120000
index 0000000..f3c9549
--- /dev/null
+++
b/python/test/data/buildroots/br1/usr/share/maven/lib/symlink_outside_of_buildroot.jar
@@ -0,0 +1 @@
+/usr/share/java/this_target_definitely_doesnt_exist.jar
\ No newline at end of file
diff --git a/python/test/util_test.py b/python/test/util_test.py
new file mode 100644
index 0000000..5740984
--- /dev/null
+++ b/python/test/util_test.py
@@ -0,0 +1,17 @@
+import os
+import unittest
+
+from javapackages.common.util import get_buildroot_files
+
+
+class TestUtil(unittest.TestCase):
+
+ def test_br_files_basic(self):
+ br_path = os.path.abspath("data/buildroots/br1/")
+ files = get_buildroot_files(regexp="jar$", buildroot_path=br_path)
+ self.assertEqual(1, len(files))
+
self.assertTrue(next(iter(files)).endswith("/usr/share/java/regular.jar"))
+
+
+if __name__ == '__main__':
+ unittest.main()
Show replies by date