diff --git a/client-py3/full/linux/.gitignore b/client-py3/full/linux/.gitignore index d15bc789..f9d49083 100644 --- a/client-py3/full/linux/.gitignore +++ b/client-py3/full/linux/.gitignore @@ -2,3 +2,7 @@ /udsclient-[0-9]*.spec /debian/udsclient /targz +/UDSClientDir +/UDSClient*.AppImage +/appimage* +/UDSClient.desktop diff --git a/client-py3/full/linux/Makefile b/client-py3/full/linux/Makefile index 323d2350..7a7f3053 100644 --- a/client-py3/full/linux/Makefile +++ b/client-py3/full/linux/Makefile @@ -46,8 +46,22 @@ endif ifeq ($(DISTRO),rh) endif - # chmod 0755 $(BINDIR)/udsclient uninstall: rm -rf $(LIBDIR) # rm -f $(BINDIR)/udsclient # rm -rf $(CFGDIR) + +build-appimage: + cat udsclient-appimage.recipe | sed -e s/"version: 0.0.0"/"version: $(VERSION)"/g > appimage.recipe + appimage-builder --recipe appimage.recipe +# Now create dist and move appimage + rm -rf $(DESTDIR) + mkdir -p $(DESTDIR) + cp UDSClient-$(VERSION)-x86_64.AppImage $(DESTDIR) +# Generate the .desktop fixed for new path + cat desktop/UDSClient.desktop | sed -e s/".usr.lib.UDSClient.UDSClient.py"/"\/usr\/bin\/UDSClient-$(VERSION)-x86_64.AppImage"/g > $(DESTDIR)/UDSClient.desktop +# And also, generater installer + cat installer-appimage-template.sh | sed -e s/"0.0.0"/"$(VERSION)"/g > $(DESTDIR)/installer.sh + chmod 755 $(DESTDIR)/installer.sh + tar czvf ../udsclient3-portable-$(VERSION).tar.gz -C $(DESTDIR) . +# Now diff --git a/client-py3/full/linux/build-packages.sh b/client-py3/full/linux/build-packages.sh index 775da32d..779f337a 100755 --- a/client-py3/full/linux/build-packages.sh +++ b/client-py3/full/linux/build-packages.sh @@ -12,6 +12,9 @@ cat udsclient-template.spec | sed -e s/"version 0.0.0"/"version ${VERSION}"/g | sed -e s/"release 1"/"release ${RELEASE}"/g > udsclient-$VERSION.spec +cat appimage-udsclient.recipe | + sed -e s/"version: 0.0.0"/"version: ${VERSION}"/g > appimage.recipe + # Now fix dependencies for opensuse # Note: Right now, opensuse & rh seems to have same dependencies, only 1 package needed # cat udsclient-template.spec | @@ -32,6 +35,10 @@ done #rm udsclient-$VERSION +# Make .tar.gz with source make DESTDIR=targz DISTRO=targz VERSION=${VERSION} install +# And make portable .tar.gz +make DESTDIR=appimage DISTRO=appimage VERSION=${VERSION} build-appimage + rpm --addsign ../*rpm diff --git a/client-py3/full/linux/installer-appimage-template.sh b/client-py3/full/linux/installer-appimage-template.sh new file mode 100644 index 00000000..2ca9cf5b --- /dev/null +++ b/client-py3/full/linux/installer-appimage-template.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +echo "Installing UDSClient portable..." + +cp UDSClient-0.0.0-x86_64.AppImage /usr/bin +cp UDSClient.desktop /usr/share/applications +update-desktop-database + +echo "Installation process done." diff --git a/client-py3/full/linux/udsclient-appimage.recipe b/client-py3/full/linux/udsclient-appimage.recipe new file mode 100644 index 00000000..1367345f --- /dev/null +++ b/client-py3/full/linux/udsclient-appimage.recipe @@ -0,0 +1,56 @@ +version: 1 +script: + # Remove any previous build + - rm -rf UDSClientDir | true + # Make usr and icons dirs + - mkdir -p UDSClientDir/usr/src + # Copy the python application code into the UDSClientDir + - cp ../src/UDS*.py UDSClientDir/usr/src + - cp -r ../src/uds UDSClientDir/usr/src + # Remove __pycache__ and .mypy if exists + - rm UDSClientDir/usr/src/.mypy_cache -rf 2>&1 > /dev/null + - rm UDSClientDir/usr/src/uds/.mypy_cache -rf 2>&1 > /dev/null + - rm UDSClientDir/usr/src/__pycache__ -rf 2>&1 > /dev/null + - rm UDSClientDir/usr/src/uds/__pycache__ -rf 2>&1 > /dev/null + +AppDir: + path: ./UDSClientDir + + app_info: + id: com.udsenterprise.UDSClient3 + name: UDSClient + icon: utilities-terminal + version: 0.0.0 + # Set the python executable as entry point + exec: usr/bin/python3 + # Set the application main script path as argument. Use '$@' to forward CLI parameters + exec_args: "$APPDIR/usr/src/UDSClient.py $@" + + apt: + arch: amd64 + sources: + - sourceline: 'deb [arch=amd64] http://ftp.de.debian.org/debian/ bullseye main contrib non-free' + key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x04EE7237B7D453EC' + + include: + - python3 + - python3-pkg-resources + - python3-pyqt5 + - python3-paramiko + - python3-cryptography + - freerdp2-x11 + exclude: [] + + runtime: + env: + # Set python home + # See https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHOME + PYTHONHOME: '${APPDIR}/usr' + # Path to the site-packages dir or other modules dirs + # See https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH + PYTHONPATH: '${APPDIR}/usr/lib/python3.9/site-packages' + +AppImage: + update-information: None + sign-key: None + arch: x86_64