Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension
@ 2017-09-19 16:08 Jonathan Rajotte
  2017-09-19 16:08 ` [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting Jonathan Rajotte
  2017-09-19 17:07 ` [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Mathieu Desnoyers
  0 siblings, 2 replies; 4+ messages in thread
From: Jonathan Rajotte @ 2017-09-19 16:08 UTC (permalink / raw)


Previous replace was done on the complete path. A path containing
.c or .o would result in a corrupted file path.

Reported-by: Gunnar Strand <Gunnar.Strand at ericsson.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 tools/lttng-gen-tp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
index b62cd990..6aa1bba1 100755
--- a/tools/lttng-gen-tp
+++ b/tools/lttng-gen-tp
@@ -79,7 +79,9 @@ class CFile:
     def write(self):
         outputFile = open(self.outputFilename,"w")
 
-        headerFilename = self.outputFilename.replace(".c",".h")
+        headerFilename = self.outputFilename
+        if headerFilename.endswith(".c"):
+            headerFilename = headerFilename[:-2] + ".h"
 
         outputFile.write(CFile.FILE_TPL.format(
                                            headerFilename = headerFilename))
@@ -126,7 +128,10 @@ class ObjFile:
         return cc
 
     def write(self):
-        cFilename = self.outputFilename.replace(".o",".c")
+        cFilename = self.outputFilename
+        if cFilename.endswith(".o"):
+            cFilename = cFilename[:-2] + ".c"
+
         cc = self._detectCC()
         if cc == "":
             raise RuntimeError("No C Compiler detected")
-- 
2.11.0



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting
  2017-09-19 16:08 [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Jonathan Rajotte
@ 2017-09-19 16:08 ` Jonathan Rajotte
  2017-09-19 17:08   ` Mathieu Desnoyers
  2017-09-19 17:07 ` [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Mathieu Desnoyers
  1 sibling, 1 reply; 4+ messages in thread
From: Jonathan Rajotte @ 2017-09-19 16:08 UTC (permalink / raw)


Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 tools/lttng-gen-tp | 73 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 42 insertions(+), 31 deletions(-)

diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
index 6aa1bba1..4ab91f36 100755
--- a/tools/lttng-gen-tp
+++ b/tools/lttng-gen-tp
@@ -23,12 +23,14 @@ import re
 import os
 import subprocess
 
+
 class Usage(Exception):
     def __init__(self, msg):
         self.msg = msg
 
+
 class HeaderFile:
-    HEADER_TPL="""
+    HEADER_TPL = """
 #undef TRACEPOINT_PROVIDER
 #define TRACEPOINT_PROVIDER {providerName}
 
@@ -41,30 +43,32 @@ class HeaderFile:
 #include <lttng/tracepoint.h>
 
 """
-    FOOTER_TPL="""
+    FOOTER_TPL = """
 #endif /* {includeGuard} */
 
 #include <lttng/tracepoint-event.h>
 """
+
     def __init__(self, filename, template):
         self.outputFilename = filename
         self.template = template
 
     def write(self):
-        outputFile = open(self.outputFilename,"w")
+        outputFile = open(self.outputFilename, "w")
         # Include guard macro will be created by uppercasing the filename and
         # replacing all non alphanumeric characters with '_'
         includeGuard = re.sub('[^0-9a-zA-Z]', '_', self.outputFilename.upper())
 
         outputFile.write(HeaderFile.HEADER_TPL.format(providerName=self.template.domain,
-                                           includeGuard = includeGuard,
-                                           headerFilename = self.outputFilename))
+                                           includeGuard=includeGuard,
+                                           headerFilename=self.outputFilename))
         outputFile.write(self.template.text)
-        outputFile.write(HeaderFile.FOOTER_TPL.format(includeGuard = includeGuard))
+        outputFile.write(HeaderFile.FOOTER_TPL.format(includeGuard=includeGuard))
         outputFile.close()
 
+
 class CFile:
-    FILE_TPL="""
+    FILE_TPL = """
 #define TRACEPOINT_CREATE_PROBES
 /*
  * The header containing our TRACEPOINT_EVENTs.
@@ -72,25 +76,28 @@ class CFile:
 #define TRACEPOINT_DEFINE
 #include "{headerFilename}"
 """
+
     def __init__(self, filename, template):
         self.outputFilename = filename
         self.template = template
 
     def write(self):
-        outputFile = open(self.outputFilename,"w")
+        outputFile = open(self.outputFilename, "w")
 
         headerFilename = self.outputFilename
         if headerFilename.endswith(".c"):
             headerFilename = headerFilename[:-2] + ".h"
 
         outputFile.write(CFile.FILE_TPL.format(
-                                           headerFilename = headerFilename))
+                                           headerFilename=headerFilename))
         outputFile.close()
 
+
 class ObjFile:
     def __init__(self, filename, template):
         self.outputFilename = filename
         self.template = template
+
     def _detectCC(self):
         cc = ""
         if 'CC' in os.environ:
@@ -153,33 +160,33 @@ class ObjFile:
             print("Compile command: " + command)
         subprocess.call(command.split())
 
+
 class TemplateFile:
     def __init__(self, filename):
         self.domain = ""
         self.inputFilename = filename
         self.parseTemplate()
 
-
     def parseTemplate(self):
-        f = open(self.inputFilename,"r")
+        f = open(self.inputFilename, "r")
 
         self.text = f.read()
 
-        #Remove # comments (from input and output file) but keep 
+        # Remove # comments (from input and output file) but keep
         # #include in the output file
-        removeComments = re.compile("#[^include].*$",flags=re.MULTILINE)
-        self.text = removeComments.sub("",self.text)
+        removeComments = re.compile("#[^include].*$", flags=re.MULTILINE)
+        self.text = removeComments.sub("", self.text)
         # Remove #include directive from the parsed text
-        removePreprocess = re.compile("#.*$",flags=re.MULTILINE)
+        removePreprocess = re.compile("#.*$", flags=re.MULTILINE)
         noPreprocess = removePreprocess.sub("", self.text)
-        #Remove // comments
-        removeLineComment = re.compile("\/\/.*$",flags=re.MULTILINE)
+        # Remove // comments
+        removeLineComment = re.compile("\/\/.*$", flags=re.MULTILINE)
         nolinecomment = removeLineComment.sub("", noPreprocess)
-        #Remove all spaces and lines
-        cleantext = re.sub("\s*","",nolinecomment)
-        #Remove multine C style comments
-        nocomment = re.sub("/\*.*?\*/","",cleantext)
-        entries = re.split("TRACEPOINT_.*?",nocomment)
+        # Remove all spaces and lines
+        cleantext = re.sub("\s*", "", nolinecomment)
+        # Remove multine C style comments
+        nocomment = re.sub("/\*.*?\*/", "", cleantext)
+        entries = re.split("TRACEPOINT_.*?", nocomment)
 
         for entry in entries:
             if entry != '':
@@ -194,9 +201,10 @@ class TemplateFile:
                     if self.domain != domain:
                         print("Warning: different domain provided (%s,%s)" % (self.domain, domain))
 
-verbose=False
 
-usage="""
+verbose = False
+
+usage = """
  lttng-gen-tp - Generate the LTTng-UST header and source based on a simple template
 
  usage: lttng-gen-tp TEMPLATE_FILE [-o OUTPUT_FILE][-o OUTPUT_FILE]
@@ -212,15 +220,17 @@ usage="""
  as per defined in the lttng/tracepoint.h file.
  See the lttng-ust(3) man page for more details on the format.
 """
+
+
 def main(argv=None):
     if argv is None:
         argv = sys.argv
 
     try:
         try:
-            opts, args = getopt.gnu_getopt(argv[1:], "ho:av", ["help","verbose"])
+            opts, args = getopt.gnu_getopt(argv[1:], "ho:av", ["help", "verbose"])
         except getopt.error as msg:
-             raise Usage(msg)
+            raise Usage(msg)
 
     except Usage as err:
         print(err.msg, file=sys.stderr)
@@ -232,9 +242,9 @@ def main(argv=None):
         if o in ("-h", "--help"):
             print(usage)
             return(0)
-        if o in ("-o",""):
+        if o in ("-o", ""):
             outputNames.append(a)
-        if o in ("-a",""):
+        if o in ("-a", ""):
             all = True
         if o in ("-v", "--verbose"):
             global verbose
@@ -295,26 +305,27 @@ def main(argv=None):
                 if headerFilename:
                     curFilename = headerFilename
                 else:
-                    curFilename = re.sub("\.tp$",".h",arg)
+                    curFilename = re.sub("\.tp$", ".h", arg)
                 doth = HeaderFile(curFilename, tpl)
                 doth.write()
             if doCFile:
                 if cFilename:
                     curFilename = cFilename
                 else:
-                    curFilename = re.sub("\.tp$",".c",arg)
+                    curFilename = re.sub("\.tp$", ".c", arg)
                 dotc = CFile(curFilename, tpl)
                 dotc.write()
             if doObj:
                 if objFilename:
                     curFilename = objFilename
                 else:
-                    curFilename = re.sub("\.tp$",".o",arg)
+                    curFilename = re.sub("\.tp$", ".o", arg)
                 dotobj = ObjFile(curFilename, tpl)
                 dotobj.write()
         except IOError as args:
             print("Cannot write output file " + args.filename + " " + args.strerror)
             return -1
 
+
 if __name__ == "__main__":
     sys.exit(main())
-- 
2.11.0



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension
  2017-09-19 16:08 [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Jonathan Rajotte
  2017-09-19 16:08 ` [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting Jonathan Rajotte
@ 2017-09-19 17:07 ` Mathieu Desnoyers
  1 sibling, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2017-09-19 17:07 UTC (permalink / raw)


Merged into master, 2.10, 2.9, thanks!

Mathieu

----- On Sep 19, 2017, at 12:08 PM, Jonathan Rajotte jonathan.rajotte-julien at efficios.com wrote:

> Previous replace was done on the complete path. A path containing
> .c or .o would result in a corrupted file path.
> 
> Reported-by: Gunnar Strand <Gunnar.Strand at ericsson.com>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> tools/lttng-gen-tp | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
> index b62cd990..6aa1bba1 100755
> --- a/tools/lttng-gen-tp
> +++ b/tools/lttng-gen-tp
> @@ -79,7 +79,9 @@ class CFile:
>     def write(self):
>         outputFile = open(self.outputFilename,"w")
> 
> -        headerFilename = self.outputFilename.replace(".c",".h")
> +        headerFilename = self.outputFilename
> +        if headerFilename.endswith(".c"):
> +            headerFilename = headerFilename[:-2] + ".h"
> 
>         outputFile.write(CFile.FILE_TPL.format(
>                                            headerFilename = headerFilename))
> @@ -126,7 +128,10 @@ class ObjFile:
>         return cc
> 
>     def write(self):
> -        cFilename = self.outputFilename.replace(".o",".c")
> +        cFilename = self.outputFilename
> +        if cFilename.endswith(".o"):
> +            cFilename = cFilename[:-2] + ".c"
> +
>         cc = self._detectCC()
>         if cc == "":
>             raise RuntimeError("No C Compiler detected")
> --
> 2.11.0

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting
  2017-09-19 16:08 ` [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting Jonathan Rajotte
@ 2017-09-19 17:08   ` Mathieu Desnoyers
  0 siblings, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2017-09-19 17:08 UTC (permalink / raw)


Merged into master, thanks!

Mathieu

----- On Sep 19, 2017, at 12:08 PM, Jonathan Rajotte jonathan.rajotte-julien at efficios.com wrote:

> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
> tools/lttng-gen-tp | 73 +++++++++++++++++++++++++++++++-----------------------
> 1 file changed, 42 insertions(+), 31 deletions(-)
> 
> diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
> index 6aa1bba1..4ab91f36 100755
> --- a/tools/lttng-gen-tp
> +++ b/tools/lttng-gen-tp
> @@ -23,12 +23,14 @@ import re
> import os
> import subprocess
> 
> +
> class Usage(Exception):
>     def __init__(self, msg):
>         self.msg = msg
> 
> +
> class HeaderFile:
> -    HEADER_TPL="""
> +    HEADER_TPL = """
> #undef TRACEPOINT_PROVIDER
> #define TRACEPOINT_PROVIDER {providerName}
> 
> @@ -41,30 +43,32 @@ class HeaderFile:
> #include <lttng/tracepoint.h>
> 
> """
> -    FOOTER_TPL="""
> +    FOOTER_TPL = """
> #endif /* {includeGuard} */
> 
> #include <lttng/tracepoint-event.h>
> """
> +
>     def __init__(self, filename, template):
>         self.outputFilename = filename
>         self.template = template
> 
>     def write(self):
> -        outputFile = open(self.outputFilename,"w")
> +        outputFile = open(self.outputFilename, "w")
>         # Include guard macro will be created by uppercasing the filename and
>         # replacing all non alphanumeric characters with '_'
>         includeGuard = re.sub('[^0-9a-zA-Z]', '_', self.outputFilename.upper())
> 
>         outputFile.write(HeaderFile.HEADER_TPL.format(providerName=self.template.domain,
> -                                           includeGuard = includeGuard,
> -                                           headerFilename =
> self.outputFilename))
> +                                           includeGuard=includeGuard,
> +                                           headerFilename=self.outputFilename))
>         outputFile.write(self.template.text)
> -        outputFile.write(HeaderFile.FOOTER_TPL.format(includeGuard =
> includeGuard))
> +
> outputFile.write(HeaderFile.FOOTER_TPL.format(includeGuard=includeGuard))
>         outputFile.close()
> 
> +
> class CFile:
> -    FILE_TPL="""
> +    FILE_TPL = """
> #define TRACEPOINT_CREATE_PROBES
> /*
>  * The header containing our TRACEPOINT_EVENTs.
> @@ -72,25 +76,28 @@ class CFile:
> #define TRACEPOINT_DEFINE
> #include "{headerFilename}"
> """
> +
>     def __init__(self, filename, template):
>         self.outputFilename = filename
>         self.template = template
> 
>     def write(self):
> -        outputFile = open(self.outputFilename,"w")
> +        outputFile = open(self.outputFilename, "w")
> 
>         headerFilename = self.outputFilename
>         if headerFilename.endswith(".c"):
>             headerFilename = headerFilename[:-2] + ".h"
> 
>         outputFile.write(CFile.FILE_TPL.format(
> -                                           headerFilename = headerFilename))
> +                                           headerFilename=headerFilename))
>         outputFile.close()
> 
> +
> class ObjFile:
>     def __init__(self, filename, template):
>         self.outputFilename = filename
>         self.template = template
> +
>     def _detectCC(self):
>         cc = ""
>         if 'CC' in os.environ:
> @@ -153,33 +160,33 @@ class ObjFile:
>             print("Compile command: " + command)
>         subprocess.call(command.split())
> 
> +
> class TemplateFile:
>     def __init__(self, filename):
>         self.domain = ""
>         self.inputFilename = filename
>         self.parseTemplate()
> 
> -
>     def parseTemplate(self):
> -        f = open(self.inputFilename,"r")
> +        f = open(self.inputFilename, "r")
> 
>         self.text = f.read()
> 
> -        #Remove # comments (from input and output file) but keep
> +        # Remove # comments (from input and output file) but keep
>         # #include in the output file
> -        removeComments = re.compile("#[^include].*$",flags=re.MULTILINE)
> -        self.text = removeComments.sub("",self.text)
> +        removeComments = re.compile("#[^include].*$", flags=re.MULTILINE)
> +        self.text = removeComments.sub("", self.text)
>         # Remove #include directive from the parsed text
> -        removePreprocess = re.compile("#.*$",flags=re.MULTILINE)
> +        removePreprocess = re.compile("#.*$", flags=re.MULTILINE)
>         noPreprocess = removePreprocess.sub("", self.text)
> -        #Remove // comments
> -        removeLineComment = re.compile("\/\/.*$",flags=re.MULTILINE)
> +        # Remove // comments
> +        removeLineComment = re.compile("\/\/.*$", flags=re.MULTILINE)
>         nolinecomment = removeLineComment.sub("", noPreprocess)
> -        #Remove all spaces and lines
> -        cleantext = re.sub("\s*","",nolinecomment)
> -        #Remove multine C style comments
> -        nocomment = re.sub("/\*.*?\*/","",cleantext)
> -        entries = re.split("TRACEPOINT_.*?",nocomment)
> +        # Remove all spaces and lines
> +        cleantext = re.sub("\s*", "", nolinecomment)
> +        # Remove multine C style comments
> +        nocomment = re.sub("/\*.*?\*/", "", cleantext)
> +        entries = re.split("TRACEPOINT_.*?", nocomment)
> 
>         for entry in entries:
>             if entry != '':
> @@ -194,9 +201,10 @@ class TemplateFile:
>                     if self.domain != domain:
>                         print("Warning: different domain provided (%s,%s)" % (self.domain, domain))
> 
> -verbose=False
> 
> -usage="""
> +verbose = False
> +
> +usage = """
>  lttng-gen-tp - Generate the LTTng-UST header and source based on a simple
>  template
> 
>  usage: lttng-gen-tp TEMPLATE_FILE [-o OUTPUT_FILE][-o OUTPUT_FILE]
> @@ -212,15 +220,17 @@ usage="""
>  as per defined in the lttng/tracepoint.h file.
>  See the lttng-ust(3) man page for more details on the format.
> """
> +
> +
> def main(argv=None):
>     if argv is None:
>         argv = sys.argv
> 
>     try:
>         try:
> -            opts, args = getopt.gnu_getopt(argv[1:], "ho:av",
> ["help","verbose"])
> +            opts, args = getopt.gnu_getopt(argv[1:], "ho:av", ["help",
> "verbose"])
>         except getopt.error as msg:
> -             raise Usage(msg)
> +            raise Usage(msg)
> 
>     except Usage as err:
>         print(err.msg, file=sys.stderr)
> @@ -232,9 +242,9 @@ def main(argv=None):
>         if o in ("-h", "--help"):
>             print(usage)
>             return(0)
> -        if o in ("-o",""):
> +        if o in ("-o", ""):
>             outputNames.append(a)
> -        if o in ("-a",""):
> +        if o in ("-a", ""):
>             all = True
>         if o in ("-v", "--verbose"):
>             global verbose
> @@ -295,26 +305,27 @@ def main(argv=None):
>                 if headerFilename:
>                     curFilename = headerFilename
>                 else:
> -                    curFilename = re.sub("\.tp$",".h",arg)
> +                    curFilename = re.sub("\.tp$", ".h", arg)
>                 doth = HeaderFile(curFilename, tpl)
>                 doth.write()
>             if doCFile:
>                 if cFilename:
>                     curFilename = cFilename
>                 else:
> -                    curFilename = re.sub("\.tp$",".c",arg)
> +                    curFilename = re.sub("\.tp$", ".c", arg)
>                 dotc = CFile(curFilename, tpl)
>                 dotc.write()
>             if doObj:
>                 if objFilename:
>                     curFilename = objFilename
>                 else:
> -                    curFilename = re.sub("\.tp$",".o",arg)
> +                    curFilename = re.sub("\.tp$", ".o", arg)
>                 dotobj = ObjFile(curFilename, tpl)
>                 dotobj.write()
>         except IOError as args:
>             print("Cannot write output file " + args.filename + " " + args.strerror)
>             return -1
> 
> +
> if __name__ == "__main__":
>     sys.exit(main())
> --
> 2.11.0

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-09-19 17:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-19 16:08 [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Jonathan Rajotte
2017-09-19 16:08 ` [lttng-dev] [PATCH lttng-ust 2/2] lttng-gen-tp: formatting Jonathan Rajotte
2017-09-19 17:08   ` Mathieu Desnoyers
2017-09-19 17:07 ` [lttng-dev] [PATCH lttng-ust 1/2] Fix: lttng-gen-tp: only replace file extension Mathieu Desnoyers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox