Overall unmaintained but there exists a fork of the currently used repo
which fixed stuff for Python 3.5.2 on Windows:
https://github.com/wittrup/jefferson/commit/852aeebbb5a8fb2fd07f365122a4e136a750f4df

This is the only commit besides another minor one on top of upstream and
it fixes Python 3.x on anything.

I came here because removing Python 2.7 from my system would remove this
port and eventually binwalk, which I'd like to keep.

For testing, I created a JFFS2 image on Debian with

        # apt install mtd-utils
        $ mkdir testdir
        $ touch testdir/{a,b}
        $ /usr/sbin/mkfs.jffs2 -r testdir -o jffs2.img

On OpenBSD, current binwalk and jefferson can extract this:

        $ binwalk -e jffs2.img                   

        DECIMAL       HEXADECIMAL     DESCRIPTION
        
--------------------------------------------------------------------------------
        0             0x0             JFFS2 filesystem, little endian

        $  cd _jffs2.img.extracted/ ; find .
        .
        ./0.jffs2
        ./jffs2-root
        ./jffs2-root/fs_1
        ./jffs2-root/fs_1/a
        ./jffs2-root/fs_1/b

I then changed upstream and upgraded jefferson, but extraction wouldn't
work.  This was due to the LZMA/Python 2 patch still i place, so I
removed the patch and dependency, upgraded jefferson again, uninstalled
py-backport-lzma;  this time binwalk was able to extract the image again
just like before.

Feedback? OK?


Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/jefferson/Makefile,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Makefile
--- Makefile    21 Dec 2019 14:16:53 -0000      1.1.1.1
+++ Makefile    14 Mar 2020 14:05:50 -0000
@@ -3,10 +3,11 @@
 COMMENT =              JFFS2 filesystem extraction tool
 
 MODPY_EGG_VERSION =    0.2
-GH_COMMIT =            6f9169bad3ceb4e212fae62ad710eeca3350226b
+GH_COMMIT =            d1aff710928f05e889b0ae23d97d1b9640eecbd0
 GH_PROJECT =           jefferson
-GH_ACCOUNT =           sviehb
+GH_ACCOUNT =           wittrup
 DISTNAME =             jefferson-${MODPY_EGG_VERSION}
+REVISION =             0
 
 CATEGORIES =           sysutils
 
@@ -20,7 +21,7 @@ MODULES =             lang/python
 #  File "/usr/local/lib/python3.7/site-packages/jefferson/rtime.py", line 7, 
in decompress
 #    value = ord(data_in[pos])
 # TypeError: ord() expected string of length 1, but int found
-#MODPY_VERSION =               ${MODPY_DEFAULT_VERSION_3}
+MODPY_VERSION =                ${MODPY_DEFAULT_VERSION_3}
 
 RUN_DEPENDS =          archivers/py-backports-lzma \
                        devel/py-cstruct${MODPY_FLAVOR}
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/jefferson/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo    21 Dec 2019 14:16:53 -0000      1.1.1.1
+++ distinfo    14 Mar 2020 13:34:51 -0000
@@ -1,2 +1,2 @@
-SHA256 (jefferson-0.2-6f9169ba.tar.gz) = 
ajxy578hjddkR8C/2F7BcPpAEq+5n37pnr+6dykXzTI=
-SIZE (jefferson-0.2-6f9169ba.tar.gz) = 6258
+SHA256 (jefferson-0.2-d1aff710.tar.gz) = 
im3zXhqvZDRWa7WCuP8KXwvdrGdxWw/ees3iqlM2VQ8=
+SIZE (jefferson-0.2-d1aff710.tar.gz) = 6446
Index: patches/patch-src_jefferson_jffs2_lzma_py
===================================================================
RCS file: patches/patch-src_jefferson_jffs2_lzma_py
diff -N patches/patch-src_jefferson_jffs2_lzma_py
--- patches/patch-src_jefferson_jffs2_lzma_py   21 Dec 2019 14:16:53 -0000      
1.1.1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-$OpenBSD: patch-src_jefferson_jffs2_lzma_py,v 1.1.1.1 2019/12/21 14:16:53 
jasper Exp $
-
-Use backports.lzma on python2
-
-Index: src/jefferson/jffs2_lzma.py
---- src/jefferson/jffs2_lzma.py.orig
-+++ src/jefferson/jffs2_lzma.py
-@@ -1,6 +1,6 @@
- import struct
- 
--import lzma
-+import backports.lzma
- 
- LZMA_BEST_LC = 0
- LZMA_BEST_LP = 0
-@@ -18,4 +18,4 @@ def decompress(data, outlen):
-     lzma_header = struct.pack('<BIQ', PROPERTIES, DICT_SIZE, outlen)
-     lzma_data = lzma_header + data
-     decompressed = lzma.decompress(lzma_data)
--    return decompressed
-\ No newline at end of file
-+    return decompressed

Reply via email to