From c9721d4d7fd4195ce64fc9fe87720125b1fdec1c Mon Sep 17 00:00:00 2001
From: Deomid Ryabkov <rojer@cesanta.com>
Date: Mon, 21 Nov 2016 22:30:19 +0000
Subject: [PATCH] Re-enable amalgam tools publishing

PUBLISHED_FROM=f7fb01509b3f3982724cc3b05e357d8dd385a546
---
 tools/{amalgam => amalgam.py}     | 14 +++++++++-----
 tools/{unamalgam => unamalgam.py} |  0
 2 files changed, 9 insertions(+), 5 deletions(-)
 rename tools/{amalgam => amalgam.py} (89%)
 rename tools/{unamalgam => unamalgam.py} (100%)

diff --git a/tools/amalgam b/tools/amalgam.py
similarity index 89%
rename from tools/amalgam
rename to tools/amalgam.py
index b60dc85af..d78370e69 100755
--- a/tools/amalgam
+++ b/tools/amalgam.py
@@ -51,6 +51,10 @@ parser.add_argument('--public-header', dest="public",
                     ' included at the beginning of the file')
 parser.add_argument('--autoinc', action='store_true',
                     help='automatically embed include files')
+parser.add_argument('--strict', action='store_true',
+                    help='fail loudly if an include file cannot be resolved')
+parser.add_argument('--norel', action='store_true',
+                    help="do not try to compute a friendly relative path")
 parser.add_argument('--exportable-headers', dest="export", action='store_true',
                     help='allow exporting internal headers')
 parser.add_argument('-I', default=".", dest='include_path', help='include path')
@@ -77,7 +81,7 @@ ignore_files = [i.strip() for i in args.ignore.split(',')]
 
 def should_ignore(name):
     return (name in already_included
-            or not os.path.exists(resolve(name))
+            or not (args.strict or os.path.exists(resolve(name)))
             or name in ignore_files)
 
 def resolve(path):
@@ -85,9 +89,9 @@ def resolve(path):
         p = path
     else:
         p = os.path.join(args.include_path, path)
-    if os.path.exists(p):
+    if os.path.exists(p) and not args.norel:
         p = os.path.realpath(p).replace('%s/' % os.getcwd(), '')
-#    print >>sys.stderr, '%s -> %s' % (path, p)
+    # print >>sys.stderr, '%s -> %s (cwd %s)' % (path, p, os.getcwd())
     return p
 
 def emit_line_directive(out, name):
@@ -100,13 +104,13 @@ def emit_line_directive(out, name):
 
 def emit_body(out, name):
     path = resolve(name)
-    if not os.path.exists(path):
+    if not args.strict and not os.path.exists(path):
         print >>out, '#include "%s"' % (name,)
         return
 
     with open(resolve(name)) as f:
         for l in f:
-            match = re.match('(#include "(.*)")', l)
+            match = re.match('( *#include "(.*)")', l)
             if match:
                 all, path = match.groups()
                 if args.autoinc:
diff --git a/tools/unamalgam b/tools/unamalgam.py
similarity index 100%
rename from tools/unamalgam
rename to tools/unamalgam.py
-- 
GitLab