From: Gerhard Sittig Date: Sun, 29 Jan 2023 07:38:04 +0000 (+0100) Subject: sigrok-fwextract-kingst-la2016: concentrate RCC flags in one spot X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-util.git;a=commitdiff_plain;h=HEAD;hp=c6f2b1ae107483c6d203288c1f72b72b844e4a87;ds=sidebyside sigrok-fwextract-kingst-la2016: concentrate RCC flags in one spot Move the symbolic identifiers for RCC flag bits to one common location in the Qt resource handling support code. Previous versions kept them local to individual methods which referenced them. --- diff --git a/cross-compile/macosx/contrib/pulseview b/cross-compile/macosx/contrib/pulseview index e41b4ad..a77ae3e 100755 --- a/cross-compile/macosx/contrib/pulseview +++ b/cross-compile/macosx/contrib/pulseview @@ -20,6 +20,7 @@ DIR="$(dirname "$0")" cd "$DIR" +export DYLD_LIBRARY_PATH="../Frameworks" export PYTHONHOME="../Frameworks/Python.framework/Versions/3.7" export SIGROK_FIRMWARE_DIR="../share/sigrok-firmware" export SIGROKDECODE_DIR="../share/libsigrokdecode/decoders" diff --git a/cross-compile/macosx/contrib/sigrok-cli b/cross-compile/macosx/contrib/sigrok-cli index f3adbb0..3eb8ee2 100755 --- a/cross-compile/macosx/contrib/sigrok-cli +++ b/cross-compile/macosx/contrib/sigrok-cli @@ -20,6 +20,7 @@ DIR="$(dirname "$0")" cd "$DIR" +export DYLD_LIBRARY_PATH="../Frameworks" export PYTHONHOME="../Frameworks/Python.framework/Versions/3.7" export SIGROK_FIRMWARE_DIR="../share/sigrok-firmware" export SIGROKDECODE_DIR="../share/libsigrokdecode/decoders" diff --git a/cross-compile/macosx/create_dmg b/cross-compile/macosx/create_dmg index effe378..be97673 100755 --- a/cross-compile/macosx/create_dmg +++ b/cross-compile/macosx/create_dmg @@ -116,7 +116,7 @@ install_name_tool -change \ install_name_tool -change \ /usr/local/opt/python/Frameworks/Python.framework/Versions/$PYVER/Python \ @executable_path/../Frameworks/Python.framework/Versions/$PYVER/Python \ - $FRAMEWORKSDIR/libirmp.*.dylib + $PREFIX/lib/libirmp.*.dylib # Add wrapper (sets PYTHONHOME/SIGROK_FIRMWARE_DIR/SIGROKDECODE_DIR). mv $MACOSDIR/$APPNAME_BINARY $MACOSDIR/$APPNAME_BINARY.real diff --git a/cross-compile/mingw/libusb1_upgrade.patch b/cross-compile/mingw/libusb1_upgrade.patch index dd2d4af..8dc8646 100644 --- a/cross-compile/mingw/libusb1_upgrade.patch +++ b/cross-compile/mingw/libusb1_upgrade.patch @@ -24,27 +24,9 @@ index ab01bf69..53aed36e 100644 define $(PKG)_BUILD - cd '$(1)' && ./configure \ + cd '$(1)' && autoreconf -i && ./configure \ - $(MXE_CONFIGURE_OPTS) \ - CFLAGS=-D_WIN32_WINNT=0x0500 + $(MXE_CONFIGURE_OPTS) $(MAKE) -C '$(1)' -j '$(JOBS)' install - - -diff --git a/src/libusb1.mk b/src/libusb1.mk -index ab01bf69..53aed36e 100644 ---- a/src/libusb1.mk -+++ b/src/libusb1.mk -@@ -4,8 +4,8 @@ PKG := libusb1 - $(PKG)_WEBSITE := https://libusb.info/ - $(PKG)_DESCR := LibUsb-1.0 - $(PKG)_IGNORE := --$(PKG)_VERSION := 1.0.24 --$(PKG)_CHECKSUM := 7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a -+$(PKG)_VERSION := 1.0.25 -+$(PKG)_CHECKSUM := 8a28ef197a797ebac2702f095e81975e2b02b2eeff2774fa909c78a74ef50849 - $(PKG)_SUBDIR := libusb-$($(PKG)_VERSION) - $(PKG)_FILE := libusb-$($(PKG)_VERSION).tar.bz2 - $(PKG)_URL := https://$(SOURCEFORGE_MIRROR)/project/libusb/libusb-1.0/libusb-$($(PKG)_VERSION)/$($(PKG)_FILE) - + diff --git a/src/libusb1-1-fixes.patch b/src/libusb1-1-fixes.patch new file mode 100644 diff --git a/cross-compile/mingw/mxe_fixes.patch b/cross-compile/mingw/mxe_fixes.patch index 72a4dd0..b62d513 100644 --- a/cross-compile/mingw/mxe_fixes.patch +++ b/cross-compile/mingw/mxe_fixes.patch @@ -1,3 +1,12 @@ +Implementor's note: These patches currently (2022-11) don't apply to +recent MXE, their context has changed. The patches' motivation might +have become obsolete, too. This needs reconsideration. When in doubt, +attempt to build with an MXE toolchain which omits these "MXE fixes" +(which actually are downgrades of tools and libraries, while mainline +MXE has upgraded and could have fixed previous issues). Older notes +from a previous implementation follow below. + + These patches are currently required to get a properly working MXE setup for sigrok usage. @@ -15,6 +24,9 @@ MXE setup for sigrok usage. See the other file for a libusb discussion. + +Change from binutils 2.28 to 2.35. + diff --git a/src/binutils-1-fixes.patch b/src/binutils-1-fixes.patch deleted file mode 100644 index 357428fe..00000000 @@ -168,6 +180,7 @@ index 357428fe..00000000 - - if (pe_def_file->version_major != -1) - { + diff --git a/src/binutils.mk b/src/binutils.mk index 9721b581..8eab8bf3 100644 --- a/src/binutils.mk @@ -183,6 +196,10 @@ index 9721b581..8eab8bf3 100644 $(PKG)_SUBDIR := binutils-$($(PKG)_VERSION) $(PKG)_FILE := binutils-$($(PKG)_VERSION).tar.bz2 $(PKG)_URL := https://ftp.gnu.org/gnu/binutils/$($(PKG)_FILE) + + +Provide glib fixing patches. As well as downgrade to 2.44.1. + diff --git a/src/glib-1-fixes.patch b/src/glib-1-fixes.patch index 764ece9e..428cc6a9 100644 --- a/src/glib-1-fixes.patch @@ -494,6 +511,7 @@ index 764ece9e..428cc6a9 100644 - { - g_set_error (error, - G_IO_ERROR, + diff --git a/src/glib-2-format.patch b/src/glib-2-format.patch new file mode 100644 index 00000000..3d594af0 @@ -577,6 +595,7 @@ index 00000000..3d594af0 + glib_gpi_cast='(gint64)' + glib_gpui_cast='(guint64)' + ;; + diff --git a/src/glib.mk b/src/glib.mk index 825b86bb..499a45b8 100644 --- a/src/glib.mk @@ -598,7 +617,7 @@ index 825b86bb..499a45b8 100644 cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ $(MXE_CONFIGURE_OPTS) \ --enable-regex \ -+ --disable-compile-warnings \ ++ --disable-compile-warnings \ --disable-threads \ --disable-selinux \ --disable-inotify \ @@ -606,7 +625,7 @@ index 825b86bb..499a45b8 100644 cd '$(SOURCE_DIR)' && NOCONFIGURE=true ./autogen.sh cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ $(MXE_CONFIGURE_OPTS) \ -+ --disable-compile-warnings \ ++ --disable-compile-warnings \ --enable-regex \ --disable-threads \ --disable-selinux \ @@ -614,7 +633,7 @@ index 825b86bb..499a45b8 100644 cd '$(SOURCE_DIR)' && NOCONFIGURE=true ./autogen.sh cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ $(MXE_CONFIGURE_OPTS) \ -+ --disable-compile-warnings \ ++ --disable-compile-warnings \ --with-threads=win32 \ --with-pcre=system \ --with-libiconv=gnu \ diff --git a/cross-compile/mingw/sigrok-cross-mingw b/cross-compile/mingw/sigrok-cross-mingw index 12c68ec..7a2fa04 100755 --- a/cross-compile/mingw/sigrok-cross-mingw +++ b/cross-compile/mingw/sigrok-cross-mingw @@ -228,7 +228,7 @@ cd .. $ECHO "component sigrok-dumps ..." $GIT_CLONE $REPO_BASE/sigrok-dumps cd sigrok-dumps -make install DESTDIR=$PREFIX/share/sigrok-dumps $V +make install PREFIX=$PREFIX $V cd .. # sigrok-cli diff --git a/firmware/kingst-la/sigrok-fwextract-kingst-la2016 b/firmware/kingst-la/sigrok-fwextract-kingst-la2016 index 3575b04..d690719 100755 --- a/firmware/kingst-la/sigrok-fwextract-kingst-la2016 +++ b/firmware/kingst-la/sigrok-fwextract-kingst-la2016 @@ -39,6 +39,9 @@ parseelf = importlib.util.module_from_spec(spec) spec.loader.exec_module(parseelf) class qt_resources(object): + RCCFileInfo_Compressed = 0x01 + RCCFileInfo_Directory = 0x02 + def __init__(self, program): self._elf = parseelf.elf(program) self._elf_sections = {} # idx -> data @@ -75,7 +78,6 @@ class qt_resources(object): return self._res_datas[offset:offset + length] def _read_resources(self): - RCCFileInfo_Directory = 0x02 def read_table(): table = [] offset = 0 @@ -83,7 +85,7 @@ class qt_resources(object): name_offset, flags = struct.unpack(">IH", self._res_struct[offset:offset+4+2]) offset += 6 name = self._get_resource_name(name_offset) - if flags & RCCFileInfo_Directory: + if flags & self.RCCFileInfo_Directory: child_count, first_child_offset = struct.unpack(">II", self._res_struct[offset:offset + 4 + 4]) offset += 4 + 4 table.append((name, flags, child_count, first_child_offset)) @@ -94,29 +96,35 @@ class qt_resources(object): return table def read_dir_entries(table, which, parents=[]): name, flags = which[:2] - if not flags & RCCFileInfo_Directory: + if not flags & self.RCCFileInfo_Directory: raise Exception("not a directory!") child_count, first_child = which[2:] for i in range(child_count): child = table[first_child + i] - if child[1] & RCCFileInfo_Directory: + flags = child[1] + if flags & self.RCCFileInfo_Directory: read_dir_entries(table, child, parents + [child[0]]) else: country, language, data_offset = child[2:] full_name = "/".join(parents + [child[0]]) self._resources[full_name] = data_offset + self._resource_flags[full_name] = flags self._res_datas = self._get_elf_sym_value("_ZL16qt_resource_data") self._res_names = self._get_elf_sym_value("_ZL16qt_resource_name") self._res_struct = self._get_elf_sym_value("_ZL18qt_resource_struct") self._resources = {} # res_fn -> res_offset + self._resource_flags = {} # res_fn -> RCC_flags table = read_table() read_dir_entries(table, table[0]) def get_resource(self, res_fn): offset = self._resources[res_fn] + flags = self._resource_flags[res_fn] data = self._get_resource_data(offset) + if flags & self.RCCFileInfo_Compressed: + data = zlib.decompress(data[4:]) return data def find_resource_names(self, res_fn_re): diff --git a/source/drv-protocol.c b/source/drv-protocol.c index 1b300bb..b331b6b 100644 --- a/source/drv-protocol.c +++ b/source/drv-protocol.c @@ -27,10 +27,12 @@ SR_PRIV int {lib}_receive_data(int fd, int revents, void *cb_data) (void)fd; - if (!(sdi = cb_data)) + sdi = cb_data; + if (!sdi) return TRUE; - if (!(devc = sdi->priv)) + devc = sdi->priv; + if (!devc) return TRUE; if (revents == G_IO_IN) {{