build.plat: allow (easily) overriding with an empty string on Windows.
authorwhitequark <cz@m-labs.hk>
Tue, 4 Jun 2019 11:33:51 +0000 (11:33 +0000)
committerwhitequark <cz@m-labs.hk>
Tue, 4 Jun 2019 11:33:51 +0000 (11:33 +0000)
nmigen/build/plat.py

index 82508e784abeb6c774f513465c6cd55a7b197bc8..7ab2d7d01e1e476393211ac5c288c42d34172da2 100644 (file)
@@ -222,7 +222,11 @@ class TemplatedPlatform(Platform):
         def get_override(var):
             var_env = "NMIGEN_{}".format(var)
             if var_env in os.environ:
-                return os.environ[var_env]
+                # On Windows, there is no way to define an "empty but set" variable; it is tempting
+                # to use a quoted empty string, but it doesn't do what one would expect. Recognize
+                # this as a useful pattern anyway, and treat `set VAR=""` on Windows the same way
+                # `export VAR=` is treated on Linux.
+                return re.sub(r'^\"\"$', "", os.environ[var_env])
             elif var in kwargs:
                 return kwargs[var]
             else: