From 36271c324412c489f333bc3de6d55cd8f6ac17c6 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 8 Oct 2025 08:32:24 -0700 Subject: [PATCH] python (python3) replaces python2 https://github.com/upx/upx/issues/868 Thanks to 'tansy' for the patches to *.py . modified: .github/workflows/ci.yml modified: src/stub/scripts/bin2h.py modified: src/stub/scripts/brandelf.py modified: src/stub/scripts/gpp_inc.py modified: src/stub/scripts/xstrip.py modified: src/stub/src/arch/i086/cleanasm.py modified: src/stub/src/arch/i086/wdis2gas.py --- .github/workflows/ci.yml | 14 ++++++++------ src/stub/scripts/bin2h.py | 14 +++++++------- src/stub/scripts/brandelf.py | 2 +- src/stub/scripts/gpp_inc.py | 2 +- src/stub/scripts/xstrip.py | 8 ++++---- src/stub/src/arch/i086/cleanasm.py | 10 +++++----- src/stub/src/arch/i086/wdis2gas.py | 4 ++-- 7 files changed, 28 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f201e5c..e852cc88 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,12 +41,14 @@ jobs: apt-get update && apt-get upgrade -y # install system packages apt-get install -y --no-install-recommends bash ca-certificates curl git libmpc3 make perl-base tar time xz-utils libc6:i386 zlib1g:i386 - # install python2-minimal packages from Debian-11 - mkdir ../deps; cd ../deps; mkdir packages - curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb - curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb - dpkg -i ./*python2*.deb && rm ./*python2*.deb && ldconfig - ln -s -v python2.7 /usr/bin/python2 +# + ### install python2-minimal packages from Debian-11 + ## mkdir ../deps; cd ../deps; mkdir packages + ## curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb + ## curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb + ## dpkg -i ./*python2*.deb && rm ./*python2*.deb && ldconfig + ## ln -s -v python2.7 /usr/bin/python2 +# # manually unpack and install compat libs from Ubuntu-16.04 curl -sS -L -O https://archive.kernel.org/ubuntu-archive/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.6-1_amd64.deb for f in ./*.deb; do dpkg -x $f ./packages; done diff --git a/src/stub/scripts/bin2h.py b/src/stub/scripts/bin2h.py index 8de79a7e..be677501 100644 --- a/src/stub/scripts/bin2h.py +++ b/src/stub/scripts/bin2h.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # bin2h.py -- @@ -133,7 +133,7 @@ class _DataWriter_gas_u32(DataWriter): w(",") v = struct.unpack(self.DECODE, data[i:i+4]) assert len(v) == 1, v - w("0x%08x" % (v[0] & 0xffffffffL)) + w("0x%08x" % (v[0] & 0xffffffff)) self.w_eol() class DataWriter_gas_be32(_DataWriter_gas_u32): @@ -170,8 +170,8 @@ class DataWriter_nasm(DataWriter): def w_checksum_c(w, s, data): w("#define %s_SIZE %d\n" % (s, len(data))) - w("#define %s_ADLER32 0x%08x\n" % (s, 0xffffffffL & zlib.adler32(data))) - w("#define %s_CRC32 0x%08x\n" % (s, 0xffffffffL & zlib.crc32(data))) + w("#define %s_ADLER32 0x%08x\n" % (s, 0xffffffff & zlib.adler32(data))) + w("#define %s_CRC32 0x%08x\n" % (s, 0xffffffff & zlib.crc32(data))) w("\n") @@ -293,10 +293,10 @@ def main(argv): # check file size st = os.stat(ifile) if 1 and st.st_size <= 0: - print >> sys.stderr, "%s: ERROR: empty file" % (ifile) + sys.stderr.write("%s: ERROR: empty file\n" % (ifile)) sys.exit(1) if 1 and st.st_size > 128*1024: - print >> sys.stderr, "%s: ERROR: file is too big (%d bytes)" % (ifile, st.st_size) + sys.stderr.write("%s: ERROR: file is too big (%d bytes)\n" % (ifile, st.st_size)) sys.exit(1) # read ifile @@ -333,7 +333,7 @@ def main(argv): mdata.append(method) assert len(mdata) >= 1 mdata.reverse() - ##print opts.methods, [(i, len(mdata_odata[i])) for i in mdata] + ##print (opts.methods, [(i, len(mdata_odata[i])) for i in mdata]) # write ofile if opts.dry_run: diff --git a/src/stub/scripts/brandelf.py b/src/stub/scripts/brandelf.py index 71ffcf0c..7b2169d1 100644 --- a/src/stub/scripts/brandelf.py +++ b/src/stub/scripts/brandelf.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # brandelf.py -- diff --git a/src/stub/scripts/gpp_inc.py b/src/stub/scripts/gpp_inc.py index 91baa809..815ae178 100644 --- a/src/stub/scripts/gpp_inc.py +++ b/src/stub/scripts/gpp_inc.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # gpp_inc.py -- Generic PreProcessor: include diff --git a/src/stub/scripts/xstrip.py b/src/stub/scripts/xstrip.py index 5b629e3a..1de4f087 100644 --- a/src/stub/scripts/xstrip.py +++ b/src/stub/scripts/xstrip.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # xstrip.py -- truncate ELF objects created by multiarch-objcopy-2.17 @@ -54,9 +54,9 @@ def strip_with_dump(dump_fn, eh, idata): sh_size = int("0x" + f[2], 16) if sh_offset + sh_size > new_len: new_len = sh_offset + sh_size - ##print sh_offset, sh_size, f + ##print (sh_offset, sh_size, f) if new_len > len(eh): - ##print dump_fn, new_len + ##print (dump_fn, new_len) return eh, idata[:new_len-len(eh)] return eh, idata @@ -91,7 +91,7 @@ def check_dump(dump_fn): assert not section_names.has_key(e[0]), e assert not e[0].endswith(":"), ("bad section name", e) section_names[e[0]] = e - ##print sections + ##print (sections) # preprocessSymbols symbols = [] section = None diff --git a/src/stub/src/arch/i086/cleanasm.py b/src/stub/src/arch/i086/cleanasm.py index bfb11261..1061ef7c 100644 --- a/src/stub/src/arch/i086/cleanasm.py +++ b/src/stub/src/arch/i086/cleanasm.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # cleanasm.py -- @@ -135,7 +135,7 @@ def main(argv): pos += sgn(mlen) if mlen < 0: mpos.reverse() - if debug and 1: print mlen, m, [olines[x] for x in mpos] + if debug and 1: print (mlen, m, [olines[x] for x in mpos]) dpos = [] i = -abs(mlen) while i < 0: @@ -404,7 +404,7 @@ def main(argv): assert len(r) == len(dpos) pos = pos0 for inst, args in r: - ##print pos-pos0, inst, args + ##print (pos-pos0, inst, args) olines[pos][1] = inst olines[pos][2] = args pos += 1 @@ -438,7 +438,7 @@ def main(argv): if v[:2] == [1, 2]: # external 2-byte x = inline_map.get(v[2]) if x and v[3] <= x[1]: # max. number of calls - ##print "inline", v, x + ##print ("inline", v, x) if x: olines[i][1] = x[0] olines[i][2] = "/* inlined */" @@ -478,7 +478,7 @@ def main(argv): l = "%8s%-7s %s" % ("", inst, args) ofp.write(l.rstrip() + "\n") ofp.close() - ##print olines + ##print (olines) if __name__ == "__main__": diff --git a/src/stub/src/arch/i086/wdis2gas.py b/src/stub/src/arch/i086/wdis2gas.py index 973fcbf5..aa857ec5 100644 --- a/src/stub/src/arch/i086/wdis2gas.py +++ b/src/stub/src/arch/i086/wdis2gas.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python ## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*- # # wdis2gas.py -- @@ -138,7 +138,7 @@ def main(argv): for l in olines: ofp.write(l.rstrip() + "\n") ofp.close() - ##print olines + ##print (olines) if __name__ == "__main__":