Hello community,

here is the log from the commit of package buildstream for openSUSE:Factory 
checked in at 2020-04-02 17:43:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/buildstream (Old)
 and      /work/SRC/openSUSE:Factory/.buildstream.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "buildstream"

Thu Apr  2 17:43:30 2020 rev:14 rq:790719 version:1.4.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/buildstream/buildstream.changes  2019-09-04 
09:33:54.146712303 +0200
+++ /work/SRC/openSUSE:Factory/.buildstream.new.3248/buildstream.changes        
2020-04-02 17:43:31.753404104 +0200
@@ -1,0 +2,14 @@
+Wed Apr  1 15:27:11 UTC 2020 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.4.2:
+  + Support for python 3.8.
+  + Fix a stacktrace with a hang we can experience when we CTRL-C a
+    job twice.
+  + Workaround some servers which do not honor the 'If-None-Match'
+    HTTP header and avoid downloading files redundantly in these
+    cases.
+  + Allow specifying absolute paths in overlap-whitelist.
+  + Support systems with fuse3 (avoid passing unsupported argument
+    to fusermount3).
+
+-------------------------------------------------------------------

Old:
----
  BuildStream-1.4.1.tar.xz

New:
----
  BuildStream-1.4.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ buildstream.spec ++++++
--- /var/tmp/diff_new_pack.VmMCqu/_old  2020-04-02 17:43:32.389404597 +0200
+++ /var/tmp/diff_new_pack.VmMCqu/_new  2020-04-02 17:43:32.393404600 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package buildstream
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %define real_name BuildStream
 
 Name:           buildstream
-Version:        1.4.1
+Version:        1.4.2
 Release:        0
 Summary:        A framework for modelling build pipelines in YAML
 License:        LGPL-2.1-or-later

++++++ BuildStream-1.4.1.tar.xz -> BuildStream-1.4.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/BuildStream.egg-info/PKG-INFO 
new/BuildStream-1.4.2/BuildStream.egg-info/PKG-INFO
--- old/BuildStream-1.4.1/BuildStream.egg-info/PKG-INFO 2019-09-03 
13:07:12.000000000 +0200
+++ new/BuildStream-1.4.2/BuildStream.egg-info/PKG-INFO 2020-04-01 
16:47:06.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: BuildStream
-Version: 1.4.1
+Version: 1.4.2
 Summary: A framework for modelling build pipelines in YAML
 Home-page: https://gitlab.com/BuildStream/buildstream
 Author: BuildStream Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/BuildStream.egg-info/SOURCES.txt 
new/BuildStream-1.4.2/BuildStream.egg-info/SOURCES.txt
--- old/BuildStream-1.4.1/BuildStream.egg-info/SOURCES.txt      2019-09-03 
13:07:12.000000000 +0200
+++ new/BuildStream-1.4.2/BuildStream.egg-info/SOURCES.txt      2020-04-01 
16:47:06.000000000 +0200
@@ -118,6 +118,7 @@
 buildstream/_protos/google/rpc/status_pb2.py
 buildstream/_protos/google/rpc/status_pb2_grpc.py
 buildstream/_scheduler/__init__.py
+buildstream/_scheduler/_multiprocessing.py
 buildstream/_scheduler/resources.py
 buildstream/_scheduler/scheduler.py
 buildstream/_scheduler/jobs/__init__.py
@@ -528,13 +529,17 @@
 tests/frontend/consistencyerror/plugins/__init__.py
 tests/frontend/consistencyerror/plugins/consistencybug.py
 tests/frontend/consistencyerror/plugins/consistencyerror.py
+tests/frontend/overlaps/a-whitelisted-abs.bst
 tests/frontend/overlaps/a-whitelisted.bst
 tests/frontend/overlaps/a.bst
+tests/frontend/overlaps/b-whitelisted-abs.bst
 tests/frontend/overlaps/b-whitelisted.bst
 tests/frontend/overlaps/b.bst
+tests/frontend/overlaps/c-whitelisted-abs.bst
 tests/frontend/overlaps/c-whitelisted.bst
 tests/frontend/overlaps/c.bst
 tests/frontend/overlaps/collect-partially-whitelisted.bst
+tests/frontend/overlaps/collect-whitelisted-abs.bst
 tests/frontend/overlaps/collect-whitelisted.bst
 tests/frontend/overlaps/collect.bst
 tests/frontend/overlaps/script.bst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/NEWS new/BuildStream-1.4.2/NEWS
--- old/BuildStream-1.4.1/NEWS  2019-09-03 13:05:52.000000000 +0200
+++ new/BuildStream-1.4.2/NEWS  2020-04-01 16:45:28.000000000 +0200
@@ -1,4 +1,20 @@
 =================
+buildstream 1.4.2
+=================
+
+  o Support for python 3.8
+
+  o Fix a stacktrace with a hang we can experience when we CTRL-C a job twice.
+
+  o Workaround some servers which do not honor the 'If-None-Match' HTTP header
+    and avoid downloading files redundantly in these cases.
+
+  o Allow specifying absolute paths in overlap-whitelist (issue #721)
+
+  o Support systems with fuse3 (avoid passing unsupported argument
+    to fusermount3)
+
+=================
 buildstream 1.4.1
 =================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/PKG-INFO 
new/BuildStream-1.4.2/PKG-INFO
--- old/BuildStream-1.4.1/PKG-INFO      2019-09-03 13:07:12.000000000 +0200
+++ new/BuildStream-1.4.2/PKG-INFO      2020-04-01 16:47:07.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: BuildStream
-Version: 1.4.1
+Version: 1.4.2
 Summary: A framework for modelling build pipelines in YAML
 Home-page: https://gitlab.com/BuildStream/buildstream
 Author: BuildStream Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/_frontend/app.py 
new/BuildStream-1.4.2/buildstream/_frontend/app.py
--- old/BuildStream-1.4.1/buildstream/_frontend/app.py  2019-09-03 
11:15:20.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/_frontend/app.py  2020-04-01 
15:49:07.000000000 +0200
@@ -504,7 +504,10 @@
                 choice = click.prompt("Choice:",
                                       
value_proc=_prefix_choice_value_proc(['continue', 'quit', 'terminate']),
                                       default='continue', err=True)
-            except click.Abort:
+            except (click.Abort, SystemError):
+                # In some cases, the readline buffer underlying the prompt 
gets corrupted on the second CTRL+C
+                # This throws a SystemError, which doesn't seem to be 
problematic for the rest of the program
+
                 # Ensure a newline after automatically printed '^C'
                 click.echo("", err=True)
                 choice = 'terminate'
@@ -599,7 +602,10 @@
                 try:
                     choice = click.prompt("Choice:", default='continue', 
err=True,
                                           
value_proc=_prefix_choice_value_proc(choices))
-                except click.Abort:
+                except (click.Abort, SystemError):
+                    # In some cases, the readline buffer underlying the prompt 
gets corrupted on the second CTRL+C
+                    # This throws a SystemError, which doesn't seem to be 
problematic for the rest of the program
+
                     # Ensure a newline after automatically printed '^C'
                     click.echo("", err=True)
                     choice = 'terminate'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/_fuse/mount.py 
new/BuildStream-1.4.2/buildstream/_fuse/mount.py
--- old/BuildStream-1.4.1/buildstream/_fuse/mount.py    2019-09-02 
14:01:36.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/_fuse/mount.py    2020-04-01 
15:49:07.000000000 +0200
@@ -184,7 +184,7 @@
         # Run fuse in foreground in this child process, internally libfuse
         # will handle SIGTERM and gracefully exit it's own little main loop.
         #
-        FUSE(self.__operations, self.__mountpoint, nothreads=True, 
foreground=True, nonempty=True)
+        FUSE(self.__operations, self.__mountpoint, nothreads=True, 
foreground=True)
 
         # Explicit 0 exit code, if the operations crashed for some reason, the 
exit
         # code will not be 0, and we want to know about it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/buildstream/_scheduler/_multiprocessing.py 
new/BuildStream-1.4.2/buildstream/_scheduler/_multiprocessing.py
--- old/BuildStream-1.4.1/buildstream/_scheduler/_multiprocessing.py    
1970-01-01 01:00:00.000000000 +0100
+++ new/BuildStream-1.4.2/buildstream/_scheduler/_multiprocessing.py    
2020-04-01 15:49:07.000000000 +0200
@@ -0,0 +1,79 @@
+#
+#  Copyright (C) 2019 Bloomberg Finance LP
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2 of the License, or (at your option) any later version.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# TLDR:
+# ALWAYS use `.AsyncioSafeProcess` when you have an asyncio event loop running 
and need a `multiprocessing.Process`
+#
+#
+# The upstream asyncio library doesn't play well with forking subprocesses 
while an event loop is running.
+#
+# The main problem that affects us is that the parent and the child will share 
some file handlers.
+# The most important one for us is the sig_handler_fd, which the loop uses to 
buffer signals received
+# by the app so that the asyncio loop can treat them afterwards.
+#
+# This sharing means that when we send a signal to the child, the sighandler 
in the child will write
+# it back to the parent sig_handler_fd, making the parent have to treat it too.
+# This is a problem for example when we sigterm the process. The scheduler 
will send sigterms to all its children,
+# which in turn will make the scheduler receive N SIGTERMs (one per child). 
Which in turn will send sigterms to
+# the children...
+#
+# We therefore provide a `AsyncioSafeProcess` derived from 
multiprocessing.Process  that automatically
+# tries to cleanup the loop and never calls `waitpid` on the child process, 
which breaks our child watchers.
+#
+#
+# Relevant issues:
+#  - Asyncio: support fork (https://bugs.python.org/issue21998)
+#  - Asyncio: support multiprocessing (support fork) 
(https://bugs.python.org/issue22087)
+#  - Signal delivered to a subprocess triggers parent's handler 
(https://bugs.python.org/issue31489)
+#
+#
+
+import multiprocessing
+import signal
+import sys
+from asyncio import set_event_loop_policy
+
+
+# _AsyncioSafeForkAwareProcess()
+#
+# Process class that doesn't call waitpid on its own.
+# This prevents conflicts with the asyncio child watcher.
+#
+# Also automatically close any running asyncio loop before calling
+# the actual run target
+#
+class _AsyncioSafeForkAwareProcess(multiprocessing.Process):
+    # pylint: disable=attribute-defined-outside-init
+    def start(self):
+        self._popen = self._Popen(self)
+        self._sentinel = self._popen.sentinel
+
+    def run(self):
+        signal.set_wakeup_fd(-1)
+        set_event_loop_policy(None)
+
+        super().run()
+
+
+if sys.platform != "win32":
+    # Set the default event loop policy to automatically close our asyncio 
loop in child processes
+    AsyncioSafeProcess = _AsyncioSafeForkAwareProcess
+
+else:
+    # Windows doesn't support ChildWatcher that way anyways, we'll need another
+    # implementation if we want it
+    AsyncioSafeProcess = multiprocessing.Process
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/_scheduler/jobs/job.py 
new/BuildStream-1.4.2/buildstream/_scheduler/jobs/job.py
--- old/BuildStream-1.4.1/buildstream/_scheduler/jobs/job.py    2019-09-02 
14:01:36.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/_scheduler/jobs/job.py    2020-04-01 
15:49:07.000000000 +0200
@@ -1,5 +1,6 @@
 #
 #  Copyright (C) 2018 Codethink Limited
+#  Copyright (C) 2019 Bloomberg Finance LP
 #
 #  This program is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU Lesser General Public
@@ -32,6 +33,7 @@
 from ..._exceptions import ImplError, BstError, set_last_task_error, SkipJob
 from ..._message import Message, MessageType, unconditional_messages
 from ... import _signals, utils
+from .. import _multiprocessing
 
 # Return code values shutdown of job handling child processes
 #
@@ -64,15 +66,6 @@
         self.message = message
 
 
-# Process class that doesn't call waitpid on its own.
-# This prevents conflicts with the asyncio child watcher.
-class Process(multiprocessing.Process):
-    # pylint: disable=attribute-defined-outside-init
-    def start(self):
-        self._popen = self._Popen(self)
-        self._sentinel = self._popen.sentinel
-
-
 # Job()
 #
 # The Job object represents a parallel task, when calling Job.spawn(),
@@ -127,39 +120,23 @@
         self._parent_start_listening()
 
         # Spawn the process
-        self._process = Process(target=self._child_action, args=[self._queue])
+        self._process = 
_multiprocessing.AsyncioSafeProcess(target=self._child_action, 
args=[self._queue])
 
         # Block signals which are handled in the main process such that
         # the child process does not inherit the parent's state, but the main
         # process will be notified of any signal after we launch the child.
         #
         with _signals.blocked([signal.SIGINT, signal.SIGTSTP, signal.SIGTERM], 
ignore=False):
-            self._process.start()
+            with asyncio.get_child_watcher() as watcher:
+                self._process.start()
+                # Register the process to call `_parent_child_completed` once 
it is done
+
+                # Here we delay the call to the next loop tick. This is in 
order to be running
+                # in the main thread, as the callback itself must be thread 
safe.
+                def on_completion(pid, returncode):
+                    
asyncio.get_event_loop().call_soon(self._parent_child_completed, pid, 
returncode)
 
-        # Wait for the child task to complete.
-        #
-        # This is a tricky part of python which doesnt seem to
-        # make it to the online docs:
-        #
-        #  o asyncio.get_child_watcher() will return a SafeChildWatcher() 
instance
-        #    which is the default type of watcher, and the instance belongs to 
the
-        #    "event loop policy" in use (so there is only one in the main 
process).
-        #
-        #  o SafeChildWatcher() will register a SIGCHLD handler with the 
asyncio
-        #    loop, and will selectively reap any child pids which have been
-        #    terminated.
-        #
-        #  o At registration time, the process will immediately be checked with
-        #    `os.waitpid()` and will be reaped immediately, before 
add_child_handler()
-        #    returns.
-        #
-        # The self._parent_child_completed callback passed here will normally
-        # be called after the child task has been reaped with `os.waitpid()`, 
in
-        # an event loop callback. Otherwise, if the job completes too fast, 
then
-        # the callback is called immediately.
-        #
-        self._watcher = asyncio.get_child_watcher()
-        self._watcher.add_child_handler(self._process.pid, 
self._parent_child_completed)
+                watcher.add_child_handler(self._process.pid, on_completion)
 
     # terminate()
     #
@@ -182,21 +159,15 @@
 
         self._terminated = True
 
-    # terminate_wait()
+    # get_terminated()
     #
-    # Wait for terminated jobs to complete
-    #
-    # Args:
-    #    timeout (float): Seconds to wait
+    # Check if a job has been terminated.
     #
     # Returns:
-    #    (bool): True if the process terminated cleanly, otherwise False
+    #     (bool): True in the main process if Job.terminate() was called.
     #
-    def terminate_wait(self, timeout):
-
-        # Join the child process after sending SIGTERM
-        self._process.join(timeout)
-        return self._process.exitcode is not None
+    def get_terminated(self):
+        return self._terminated
 
     # kill()
     #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/buildstream/_scheduler/scheduler.py 
new/BuildStream-1.4.2/buildstream/_scheduler/scheduler.py
--- old/BuildStream-1.4.1/buildstream/_scheduler/scheduler.py   2019-09-02 
14:01:36.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/_scheduler/scheduler.py   2020-04-01 
15:49:07.000000000 +0200
@@ -137,6 +137,12 @@
         # Hold on to the queues to process
         self.queues = queues
 
+        # NOTE: Enforce use of `SafeChildWatcher` as we generally don't want
+        # background threads.
+        # In Python 3.8+, `ThreadedChildWatcher` is the default watcher, and
+        # not `SafeChildWatcher`.
+        asyncio.set_child_watcher(asyncio.SafeChildWatcher())
+
         # Ensure that we have a fresh new event loop, in case we want
         # to run another test in this thread.
         self.loop = asyncio.new_event_loop()
@@ -516,21 +522,15 @@
         self.loop.remove_signal_handler(signal.SIGTERM)
 
     def _terminate_jobs_real(self):
-        # 20 seconds is a long time, it can take a while and sometimes
-        # we still fail, need to look deeper into this again.
-        wait_start = datetime.datetime.now()
-        wait_limit = 20.0
+        def kill_jobs():
+            for job_ in self._active_jobs:
+                job_.kill()
 
-        # First tell all jobs to terminate
-        for job in self._active_jobs:
-            job.terminate()
+        # Schedule all jobs to be killed if they have not exited in 20 sec
+        self.loop.call_later(20, kill_jobs)
 
-        # Now wait for them to really terminate
         for job in self._active_jobs:
-            elapsed = datetime.datetime.now() - wait_start
-            timeout = max(wait_limit - elapsed.total_seconds(), 0.0)
-            if not job.terminate_wait(timeout):
-                job.kill()
+            job.terminate()
 
     # Regular timeout for driving status in the UI
     def _tick(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/_version.py 
new/BuildStream-1.4.2/buildstream/_version.py
--- old/BuildStream-1.4.1/buildstream/_version.py       2019-09-03 
13:07:12.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/_version.py       2020-04-01 
16:47:07.000000000 +0200
@@ -8,11 +8,11 @@
 
 version_json = '''
 {
- "date": "2019-09-03T11:05:36+0000",
+ "date": "2020-04-01T14:45:22+0000",
  "dirty": false,
  "error": null,
- "full-revisionid": "2ece1287f75c3a1eaf4bd1a9f4f9c7b895fe3993",
- "version": "1.4.1"
+ "full-revisionid": "506e1723efc0afbd09361df3c050c88201fdd268",
+ "version": "1.4.2"
 }
 '''  # END VERSION_JSON
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/element.py 
new/BuildStream-1.4.2/buildstream/element.py
--- old/BuildStream-1.4.1/buildstream/element.py        2019-09-03 
11:15:20.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/element.py        2020-04-01 
15:49:07.000000000 +0200
@@ -2362,7 +2362,7 @@
             if include_file and not exclude_file:
                 yield filename.lstrip(os.sep)
 
-    def __file_is_whitelisted(self, pattern):
+    def __file_is_whitelisted(self, path):
         # Considered storing the whitelist regex for re-use, but public data
         # can be altered mid-build.
         # Public data is not guaranteed to stay the same for the duration of
@@ -2374,7 +2374,7 @@
             whitelist_expressions = 
[utils._glob2re(self.__variables.subst(exp.strip())) for exp in whitelist]
             expression = ('^(?:' + '|'.join(whitelist_expressions) + ')$')
             self.__whitelist_regex = re.compile(expression)
-        return self.__whitelist_regex.match(pattern)
+        return self.__whitelist_regex.match(path) or 
self.__whitelist_regex.match(os.path.join(os.sep, path))
 
     # __extract():
     #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/buildstream/plugins/elements/cmake.yaml 
new/BuildStream-1.4.2/buildstream/plugins/elements/cmake.yaml
--- old/BuildStream-1.4.1/buildstream/plugins/elements/cmake.yaml       
2019-09-02 14:01:36.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/plugins/elements/cmake.yaml       
2020-04-01 15:49:07.000000000 +0200
@@ -19,7 +19,7 @@
   cmake-args: |
 
     -DCMAKE_INSTALL_PREFIX:PATH="%{prefix}" \
-    -DCMAKE_INSTALL_LIBDIR=%{lib} %{cmake-extra} %{cmake-global} %{cmake-local}
+    -DCMAKE_INSTALL_LIBDIR:PATH="%{lib}" %{cmake-extra} %{cmake-global} 
%{cmake-local}
 
   cmake: |
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/buildstream/plugins/sources/_downloadablefilesource.py 
new/BuildStream-1.4.2/buildstream/plugins/sources/_downloadablefilesource.py
--- 
old/BuildStream-1.4.1/buildstream/plugins/sources/_downloadablefilesource.py    
    2019-09-02 14:01:36.000000000 +0200
+++ 
new/BuildStream-1.4.2/buildstream/plugins/sources/_downloadablefilesource.py    
    2020-04-01 15:49:07.000000000 +0200
@@ -121,7 +121,11 @@
                 with contextlib.closing(urllib.request.urlopen(request)) as 
response:
                     info = response.info()
 
-                    etag = info['ETag'] if 'ETag' in info else None
+                    # some servers don't honor the 'If-None-Match' header
+                    if self.ref and etag and info["ETag"] == etag:
+                        return self.ref
+
+                    etag = info["ETag"]
 
                     filename = info.get_filename(default_name)
                     filename = os.path.basename(filename)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/buildstream/plugins/sources/pip.py 
new/BuildStream-1.4.2/buildstream/plugins/sources/pip.py
--- old/BuildStream-1.4.1/buildstream/plugins/sources/pip.py    2019-09-03 
11:15:20.000000000 +0200
+++ new/BuildStream-1.4.2/buildstream/plugins/sources/pip.py    2020-04-01 
15:49:07.000000000 +0200
@@ -90,6 +90,7 @@
     'python3.5',
     'python3.6',
     'python3.7',
+    'python3.8',
 ]
 
 # List of allowed extensions taken from
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/requirements/dev-requirements.txt 
new/BuildStream-1.4.2/requirements/dev-requirements.txt
--- old/BuildStream-1.4.1/requirements/dev-requirements.txt     2019-09-03 
12:23:08.000000000 +0200
+++ new/BuildStream-1.4.2/requirements/dev-requirements.txt     2020-04-01 
15:49:07.000000000 +0200
@@ -19,7 +19,7 @@
 mccabe==0.6.1
 more-itertools==7.2.0
 packaging==19.1
-pluggy==0.12.0
+pluggy==0.13.1
 py==1.8.0
 pyparsing==2.4.2
 pytest-cache==1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/tests/format/variables.py 
new/BuildStream-1.4.2/tests/format/variables.py
--- old/BuildStream-1.4.1/tests/format/variables.py     2019-09-02 
14:01:36.000000000 +0200
+++ new/BuildStream-1.4.2/tests/format/variables.py     2020-04-01 
15:49:07.000000000 +0200
@@ -20,7 +20,7 @@
     ('autotools.bst', 'make-install', "make -j1 
DESTDIR=\"/buildstream-install\" install"),
     ('cmake.bst', 'cmake',
      "cmake -B_builddir -H. -G\"Unix Makefiles\" 
-DCMAKE_INSTALL_PREFIX:PATH=\"/usr\" \\\n" +
-     "-DCMAKE_INSTALL_LIBDIR=lib   "),
+     "-DCMAKE_INSTALL_LIBDIR:PATH=\"lib\"   "),
     ('distutils.bst', 'python-install',
      "python3 setup.py install --prefix \"/usr\" \\\n" +
      "--root \"/buildstream-install\""),
@@ -46,7 +46,7 @@
     ('autotools.bst', 'make-install', "make -j1 
DESTDIR=\"/custom/install/root\" install"),
     ('cmake.bst', 'cmake',
      "cmake -B_builddir -H. -G\"Ninja\" -DCMAKE_INSTALL_PREFIX:PATH=\"/opt\" 
\\\n" +
-     "-DCMAKE_INSTALL_LIBDIR=lib   "),
+     "-DCMAKE_INSTALL_LIBDIR:PATH=\"lib\"   "),
     ('distutils.bst', 'python-install',
      "python3 setup.py install --prefix \"/opt\" \\\n" +
      "--root \"/custom/install/root\""),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/tests/frontend/overlaps/a-whitelisted-abs.bst 
new/BuildStream-1.4.2/tests/frontend/overlaps/a-whitelisted-abs.bst
--- old/BuildStream-1.4.1/tests/frontend/overlaps/a-whitelisted-abs.bst 
1970-01-01 01:00:00.000000000 +0100
+++ new/BuildStream-1.4.2/tests/frontend/overlaps/a-whitelisted-abs.bst 
2020-04-01 15:49:07.000000000 +0200
@@ -0,0 +1,13 @@
+kind: import
+config:
+  source: /
+  target: /
+depends:
+- b-whitelisted.bst
+sources:
+- kind: local
+  path: "a"
+public:
+  bst:
+    overlap-whitelist:
+    - "/file*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/tests/frontend/overlaps/b-whitelisted-abs.bst 
new/BuildStream-1.4.2/tests/frontend/overlaps/b-whitelisted-abs.bst
--- old/BuildStream-1.4.1/tests/frontend/overlaps/b-whitelisted-abs.bst 
1970-01-01 01:00:00.000000000 +0100
+++ new/BuildStream-1.4.2/tests/frontend/overlaps/b-whitelisted-abs.bst 
2020-04-01 15:49:07.000000000 +0200
@@ -0,0 +1,16 @@
+kind: import
+config:
+  source: /
+  target: /
+depends:
+- c.bst
+sources:
+- kind: local
+  path: "b"
+variables:
+  FILE: /file
+public:
+  bst:
+    overlap-whitelist:
+    - /file2
+    - "%{FILE}3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/tests/frontend/overlaps/c-whitelisted-abs.bst 
new/BuildStream-1.4.2/tests/frontend/overlaps/c-whitelisted-abs.bst
--- old/BuildStream-1.4.1/tests/frontend/overlaps/c-whitelisted-abs.bst 
1970-01-01 01:00:00.000000000 +0100
+++ new/BuildStream-1.4.2/tests/frontend/overlaps/c-whitelisted-abs.bst 
2020-04-01 15:49:07.000000000 +0200
@@ -0,0 +1,11 @@
+kind: import
+config:
+  source: /
+  target: /
+sources:
+- kind: local
+  path: "c"
+public:
+  bst:
+    overlap-whitelist:
+    - "/file*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/BuildStream-1.4.1/tests/frontend/overlaps/collect-whitelisted-abs.bst 
new/BuildStream-1.4.2/tests/frontend/overlaps/collect-whitelisted-abs.bst
--- old/BuildStream-1.4.1/tests/frontend/overlaps/collect-whitelisted-abs.bst   
1970-01-01 01:00:00.000000000 +0100
+++ new/BuildStream-1.4.2/tests/frontend/overlaps/collect-whitelisted-abs.bst   
2020-04-01 15:49:07.000000000 +0200
@@ -0,0 +1,9 @@
+kind: compose
+
+depends:
+- filename: a-whitelisted-abs.bst
+  type: build
+- filename: b-whitelisted-abs.bst
+  type: build
+- filename: c.bst
+  type: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/BuildStream-1.4.1/tests/frontend/overlaps.py 
new/BuildStream-1.4.2/tests/frontend/overlaps.py
--- old/BuildStream-1.4.1/tests/frontend/overlaps.py    2019-09-03 
11:15:20.000000000 +0200
+++ new/BuildStream-1.4.2/tests/frontend/overlaps.py    2020-04-01 
15:49:07.000000000 +0200
@@ -47,20 +47,22 @@
 
 
 @pytest.mark.datafiles(DATA_DIR)
-def test_overlaps_whitelist(cli, datafiles):
+@pytest.mark.parametrize("element", ["collect-whitelisted.bst", 
"collect-whitelisted-abs.bst"])
+def test_overlaps_whitelist(cli, datafiles, element):
     project_dir = str(datafiles)
     gen_project(project_dir, True)
     result = cli.run(project=project_dir, silent=True, args=[
-        'build', 'collect-whitelisted.bst'])
+        'build', element])
     result.assert_success()
 
 
 @pytest.mark.datafiles(DATA_DIR)
-def test_overlaps_whitelist_ignored(cli, datafiles):
+@pytest.mark.parametrize("element", ["collect-whitelisted.bst", 
"collect-whitelisted-abs.bst"])
+def test_overlaps_whitelist_ignored(cli, datafiles, element):
     project_dir = str(datafiles)
     gen_project(project_dir, False)
     result = cli.run(project=project_dir, silent=True, args=[
-        'build', 'collect-whitelisted.bst'])
+        'build', element])
     result.assert_success()
 
 


Reply via email to