<p>osmith <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-iuh/+/16548">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">debian, asn1tostruct.py: switch to python3<br><br>Make build work with python3 and drop the python2 dependency.<br><br>Related: OS#2819<br>Change-Id: Idb9d7a349ddb7619c784823f740648c7956bae5e<br>---<br>M asn1/utils/asn1tostruct.py<br>M debian/control<br>2 files changed, 35 insertions(+), 35 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/asn1/utils/asn1tostruct.py b/asn1/utils/asn1tostruct.py</span><br><span>index 3c33980..220517d 100755</span><br><span>--- a/asn1/utils/asn1tostruct.py</span><br><span>+++ b/asn1/utils/asn1tostruct.py</span><br><span>@@ -1,4 +1,4 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python2</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span> </span><br><span> import re, os, sys, string</span><br><span> import datetime</span><br><span>@@ -27,11 +27,11 @@</span><br><span>     sys.stderr.write(FAIL + string + ENDC + "\n")</span><br><span> </span><br><span> def printWarning(string):</span><br><span style="color: hsl(0, 100%, 40%);">-    print WARN + string + ENDC</span><br><span style="color: hsl(120, 100%, 40%);">+    print(WARN + string + ENDC)</span><br><span> </span><br><span> def printDebug(string):</span><br><span>     if verbosity > 0:</span><br><span style="color: hsl(0, 100%, 40%);">-        print string</span><br><span style="color: hsl(120, 100%, 40%);">+        print(string)</span><br><span> </span><br><span> def outputHeaderToFile(f, filename):</span><br><span>     now = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))</span><br><span>@@ -57,7 +57,7 @@</span><br><span>         return lowered</span><br><span> </span><br><span>     for c in swapped:</span><br><span style="color: hsl(0, 100%, 40%);">-        if c in string.lowercase:</span><br><span style="color: hsl(120, 100%, 40%);">+        if c.islower():</span><br><span>             newstr += c</span><br><span>             idx += 1</span><br><span>         else:</span><br><span>@@ -70,14 +70,14 @@</span><br><span>     return newstr</span><br><span> </span><br><span> def usage():</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Python parser for asn1 v%s" % (version)</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Usage: python asn1tostruct.py [options]"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Available options:"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "-d        Enable script debug"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "-f [file] Input file to parse"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "-o [dir]  Output files to given directory"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "-p [pfx]  Prefix all types with given prefix"</span><br><span style="color: hsl(0, 100%, 40%);">-    print "-h        Print this help and return"</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Python parser for asn1 v%s" % (version))</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Usage: python asn1tostruct.py [options]")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Available options:")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("-d        Enable script debug")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("-f [file] Input file to parse")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("-o [dir]  Output files to given directory")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("-p [pfx]  Prefix all types with given prefix")</span><br><span style="color: hsl(120, 100%, 40%);">+    print("-h        Print this help and return")</span><br><span> </span><br><span> try:</span><br><span>     opts, args = getopt.getopt(sys.argv[1:], "df:ho:p:", ["debug", "file", "help", "outdir", "prefix"])</span><br><span>@@ -102,7 +102,7 @@</span><br><span>         sys.exit(2)</span><br><span> </span><br><span> for filename in filenames:</span><br><span style="color: hsl(0, 100%, 40%);">-    file = open(filename, 'r')</span><br><span style="color: hsl(120, 100%, 40%);">+    file = open(filename, 'r', encoding='utf-8')</span><br><span>     for line in file:</span><br><span>         # Removing any comment</span><br><span>         if line.find('--') >= 0:</span><br><span>@@ -139,17 +139,17 @@</span><br><span>     printFail("No Information Element parsed, exiting")</span><br><span>     sys.exit(0)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-f = open(outdir + fileprefix + '_ies_defs.h', 'w')</span><br><span style="color: hsl(120, 100%, 40%);">+f = open(outdir + fileprefix + '_ies_defs.h', 'w', encoding='utf-8')</span><br><span> outputHeaderToFile(f, filename)</span><br><span> f.write("#include \"%s_common.h\"\n\n" % (fileprefix))</span><br><span> f.write("#ifndef %s_IES_DEFS_H_\n#define %s_IES_DEFS_H_\n\n" % (fileprefix.upper(), fileprefix.upper()))</span><br><span> </span><br><span> for key in iesDefs:</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         continue</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for (i, j) in ieofielist.items():</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i, j) in list(ieofielist.items()):</span><br><span>         if j == key:</span><br><span>             break</span><br><span> </span><br><span>@@ -200,10 +200,10 @@</span><br><span> f.write("    uint8_t direction;\n")</span><br><span> f.write("    union {\n")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-messageList = iesDefs.keys()</span><br><span style="color: hsl(120, 100%, 40%);">+messageList = list(iesDefs.keys())</span><br><span> messageList.sort()</span><br><span> for message in messageList:</span><br><span style="color: hsl(0, 100%, 40%);">-    if message in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if message in list(ieofielist.values()):</span><br><span>         continue</span><br><span>     if len(iesDefs[message]["ies"]) == 0:</span><br><span>         continue</span><br><span>@@ -212,7 +212,7 @@</span><br><span> f.write("} %s_message;\n\n" % (fileprefix))</span><br><span> </span><br><span> for key in iesDefs:</span><br><span style="color: hsl(0, 100%, 40%);">-    if key in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key in list(ieofielist.values()):</span><br><span>         continue</span><br><span>     structName = re.sub('ies', '', key)</span><br><span>     asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))</span><br><span>@@ -242,7 +242,7 @@</span><br><span>     f.write("    %s_t *%s);\n\n" % (prefix + re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))</span><br><span> </span><br><span> for key in iesDefs:</span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         continue</span><br><span>     asn1cStruct = re.sub('-', '_', re.sub('IEs', '', key))</span><br><span>     asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)</span><br><span>@@ -276,11 +276,11 @@</span><br><span> f.write("#endif /* %s_IES_DEFS_H_ */\n\n" % (fileprefix.upper()))</span><br><span> </span><br><span> #Generate Decode functions</span><br><span style="color: hsl(0, 100%, 40%);">-f = open(outdir + fileprefix + '_decoder.c', 'w')</span><br><span style="color: hsl(120, 100%, 40%);">+f = open(outdir + fileprefix + '_decoder.c', 'w', encoding='utf-8')</span><br><span> outputHeaderToFile(f, filename)</span><br><span> f.write("#include \"%s_common.h\"\n#include \"%s_ies_defs.h\"\n\n" % (fileprefix, fileprefix))</span><br><span> for key in iesDefs:</span><br><span style="color: hsl(0, 100%, 40%);">-    if key in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key in list(ieofielist.values()):</span><br><span>         continue</span><br><span>     structName = re.sub('ies', '', key)</span><br><span>     asn1cStruct = re.sub('-', '_', re.sub('IEs', '', re.sub('-IEs', '', key)))</span><br><span>@@ -293,7 +293,7 @@</span><br><span>     asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)</span><br><span> </span><br><span>     iesaccess = ""</span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         iesaccess = "%s_ies." % (firstlower)</span><br><span> </span><br><span>     f.write("int %s_decode_%s(\n" % (fileprefix, re.sub('-', '_', structName.lower())))</span><br><span>@@ -346,7 +346,7 @@</span><br><span>         f.write("                decoded += tempDecoded;\n")</span><br><span>         f.write("                if (asn1_xer_print)\n")</span><br><span>         f.write("                    xer_fprint(stdout, &asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))</span><br><span style="color: hsl(0, 100%, 40%);">-        if ie[2] in ieofielist.keys():</span><br><span style="color: hsl(120, 100%, 40%);">+        if ie[2] in list(ieofielist.keys()):</span><br><span>             f.write("                if (%s_decode_%s(&%s->%s, %s_p) < 0) {\n" % (fileprefix, ietypeunderscore.lower(), lowerFirstCamelWord(re.sub('-', '_', key)), ienameunderscore, lowerFirstCamelWord(ietypesubst)))</span><br><span>             f.write("                    %s_DEBUG(\"Decoding of encapsulated IE %s failed\\n\");\n" % (fileprefix.upper(), lowerFirstCamelWord(ietypesubst)))</span><br><span>             f.write("                    ASN_STRUCT_FREE(asn_DEF_%s, %s_p);\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))</span><br><span>@@ -395,7 +395,7 @@</span><br><span>     f.write("}\n\n")</span><br><span> </span><br><span> for key in iesDefs:</span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         continue</span><br><span> </span><br><span>     keyname = re.sub('IEs', '', re.sub('Item', 'List', key))</span><br><span>@@ -437,12 +437,12 @@</span><br><span> </span><br><span> </span><br><span> #Generate IES Encode functions</span><br><span style="color: hsl(0, 100%, 40%);">-f = open(outdir + fileprefix + '_encoder.c', 'w')</span><br><span style="color: hsl(120, 100%, 40%);">+f = open(outdir + fileprefix + '_encoder.c', 'w', encoding='utf-8')</span><br><span> outputHeaderToFile(f,filename)</span><br><span> f.write("#include \"%s_common.h\"\n" % (fileprefix))</span><br><span> f.write("#include \"%s_ies_defs.h\"\n\n" % (fileprefix))</span><br><span> for key in iesDefs:</span><br><span style="color: hsl(0, 100%, 40%);">-    if key in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key in list(ieofielist.values()):</span><br><span>         continue</span><br><span> </span><br><span>     structName = re.sub('ies', '', key)</span><br><span>@@ -452,7 +452,7 @@</span><br><span>     asn1cStructfirstlower = asn1cStruct[:1].lower() + asn1cStruct[1:]</span><br><span> </span><br><span>     iesaccess = ""</span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         iesaccess = "%s_ies." % (firstwordlower)</span><br><span> </span><br><span>     keyName = re.sub('-', '_', key)</span><br><span>@@ -489,7 +489,7 @@</span><br><span>             f.write("        ASN_SEQUENCE_ADD(&%s->%slist, ie);\n" % (firstwordlower, iesaccess))</span><br><span>             f.write("    }\n\n")</span><br><span>         else:</span><br><span style="color: hsl(0, 100%, 40%);">-            if ie[2] in ieofielist.keys():</span><br><span style="color: hsl(120, 100%, 40%);">+            if ie[2] in list(ieofielist.keys()):</span><br><span>                 f.write("    %s_t %s;\n\n" % (prefix + ietypeunderscore, ienamefirstwordlower))</span><br><span>                 f.write("    memset(&%s, 0, sizeof(%s_t));\n" % (ienamefirstwordlower, ietypeunderscore))</span><br><span>                 f.write("\n")</span><br><span>@@ -497,21 +497,21 @@</span><br><span>             f.write("    if ((ie = %s_new_ie(%sProtocolIE_ID_%s,\n" % (fileprefix, prefix, re.sub('-', '_', ie[0])))</span><br><span>             f.write("                          %sCriticality_%s,\n" % (prefix, ie[1]))</span><br><span>             f.write("                          &asn_DEF_%s,\n" % (ietypeunderscore))</span><br><span style="color: hsl(0, 100%, 40%);">-            if ie[2] in ieofielist.keys():</span><br><span style="color: hsl(120, 100%, 40%);">+            if ie[2] in list(ieofielist.keys()):</span><br><span>                 f.write("                          &%s)) == NULL) {\n" % (ienamefirstwordlower))</span><br><span>             else:</span><br><span>                 f.write("                          &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))</span><br><span>             f.write("        return -1;\n")</span><br><span>             f.write("    }\n")</span><br><span>             f.write("    ASN_SEQUENCE_ADD(&%s->%slist, ie);\n\n" % (firstwordlower, iesaccess))</span><br><span style="color: hsl(0, 100%, 40%);">-            if ie[2] in ieofielist.keys():</span><br><span style="color: hsl(120, 100%, 40%);">+            if ie[2] in list(ieofielist.keys()):</span><br><span>                 f.write("    ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_%s, &%s);\n\n" % (ietypeunderscore, ienamefirstwordlower))</span><br><span> </span><br><span>     f.write("    return 0;\n")</span><br><span>     f.write("}\n\n")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-for (key, value) in iesDefs.items():</span><br><span style="color: hsl(0, 100%, 40%);">-    if key not in ieofielist.values():</span><br><span style="color: hsl(120, 100%, 40%);">+for (key, value) in list(iesDefs.items()):</span><br><span style="color: hsl(120, 100%, 40%);">+    if key not in list(ieofielist.values()):</span><br><span>         continue</span><br><span> </span><br><span>     ie = value["ies"][0]</span><br><span>@@ -520,7 +520,7 @@</span><br><span>     asn1cStruct = prefix + re.sub('Item', 'List', asn1cStruct)</span><br><span>     firstwordlower = re.sub('Item', 'List', re.sub('enb', 'eNB', lowerFirstCamelWord(asn1cStruct)))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for (i, j) in ieofielist.items():</span><br><span style="color: hsl(120, 100%, 40%);">+    for (i, j) in list(ieofielist.items()):</span><br><span>         if j == key:</span><br><span>             break</span><br><span>     f.write("int %s_encode_%s(\n" % (fileprefix, re.sub('-', '_', i).lower()))</span><br><span>diff --git a/debian/control b/debian/control</span><br><span>index 7e760acb..d07ab67 100644</span><br><span>--- a/debian/control</span><br><span>+++ b/debian/control</span><br><span>@@ -14,7 +14,7 @@</span><br><span>                libosmocore-dev (>= 0.12.0),</span><br><span>                libosmo-netif-dev (>= 0.3.0),</span><br><span>                libosmo-sigtran-dev (>= 0.10.0),</span><br><span style="color: hsl(0, 100%, 40%);">-               python (>= 2.7)</span><br><span style="color: hsl(120, 100%, 40%);">+               python3</span><br><span> Standards-Version: 3.9.8</span><br><span> Vcs-Git: git://git.osmocom.org/osmo-iuh.git</span><br><span> Vcs-Browser: https://git.osmocom.org/osmo-iuh/</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-iuh/+/16548">change 16548</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-iuh/+/16548"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-iuh </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Idb9d7a349ddb7619c784823f740648c7956bae5e </div>
<div style="display:none"> Gerrit-Change-Number: 16548 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>