From cfb8b6eb9bfcacdffc606bf720cdc7422e0a0adc Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Wed, 26 Apr 2017 12:05:25 +0200
Subject: [PATCH] Force debug flag from buildout (closes #17)

---
 bob/buildout/envwrapper.py      | 15 +++++++++++----
 bob/buildout/test_envwrapper.py |  2 +-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/bob/buildout/envwrapper.py b/bob/buildout/envwrapper.py
index e21020e..4ceb9b6 100644
--- a/bob/buildout/envwrapper.py
+++ b/bob/buildout/envwrapper.py
@@ -65,6 +65,14 @@ class EnvironmentWrapper(object):
         if value:
           self.environ[key] = value.strip(sep)
 
+    def __prepend_to_environ(key, value, sep=' '):
+      if self.environ.get(key):
+        if value:
+          self.environ[key] = value.strip(sep) + sep + self.environ[key]
+      else:
+        if value:
+          self.environ[key] = value.strip(sep)
+
     # joins all paths, respecting potential environment variables set by the
     # user, with priority
     __remove_environ('BOB_PREFIX_PATH')
@@ -92,11 +100,10 @@ class EnvironmentWrapper(object):
         __remove_environ(key)
         __append_to_environ(key, internal)
         __append_to_environ(key, saved)
-      __append_to_environ(key, os.environ.get(key))
+      __prepend_to_environ(key, os.environ.get(key))
 
-    # for these environment variables, values set on the environment come last
-    # so they can override, values set on the buildout recipe or our internal
-    # settings
+    # for these environment variables, values set on the environment come first
+    # so we can override with our debug flag
     if cflags is not None:
       _order_flags('CFLAGS', cflags)
       _order_flags('CXXFLAGS', cflags)
diff --git a/bob/buildout/test_envwrapper.py b/bob/buildout/test_envwrapper.py
index 15052e6..993ac8f 100644
--- a/bob/buildout/test_envwrapper.py
+++ b/bob/buildout/test_envwrapper.py
@@ -227,7 +227,7 @@ def test_preserve_user():
 
   nose.tools.eq_(len(os.environ) - len(before), 1)
 
-  assert os.environ['CFLAGS'].endswith('-BUILDOUT-TEST-STRING')
+  assert os.environ['CFLAGS'].startswith('-BUILDOUT-TEST-STRING')
 
   e.unset()
   for key in before:
-- 
GitLab