From beb94d9d07de1f85f7d3da39d6ac3a3204ea3e2d Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 3 Aug 2019 23:20:23 +0200 Subject: [PATCH 1/2] One-Dir spec files for Windows and Linux --- spec_files/Linux/Artemis_onedir.spec | 40 ++++++++++++++++++++++++++ spec_files/Windows/Artemis_onedir.spec | 40 ++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 spec_files/Linux/Artemis_onedir.spec create mode 100644 spec_files/Windows/Artemis_onedir.spec diff --git a/spec_files/Linux/Artemis_onedir.spec b/spec_files/Linux/Artemis_onedir.spec new file mode 100644 index 0000000..ff4700b --- /dev/null +++ b/spec_files/Linux/Artemis_onedir.spec @@ -0,0 +1,40 @@ +# -*- mode: python -*- + +block_cipher = None + +import glob, os + +data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] +data_file.append(('cacert.pem', '.')) + +a = Analysis(['artemis.py'], + pathex=[os.getcwd()], + binaries=[], + datas=data_file, + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + [], + exclude_binaries=True, + name='Artemis', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=False) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=False, + upx=True, + name='Artemis') diff --git a/spec_files/Windows/Artemis_onedir.spec b/spec_files/Windows/Artemis_onedir.spec new file mode 100644 index 0000000..fa7599b --- /dev/null +++ b/spec_files/Windows/Artemis_onedir.spec @@ -0,0 +1,40 @@ +# -*- mode: python -*- + +block_cipher = None + +import glob,os + +data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"] +data_file.append(('cacert.pem', '.')) + +a = Analysis(['artemis.py'], + pathex=[os.getcwd()], + binaries=[], + datas=data_file, + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + [], + exclude_binaries=True, + name='Artemis', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=False , icon='Artemis3.ico') +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=False, + upx=True, + name='Artemis') From ec35400087eb4a1b801f3d4739ba02431d33c470 Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 3 Aug 2019 23:35:05 +0200 Subject: [PATCH 2/2] Updated README --- spec_files/README.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/spec_files/README.md b/spec_files/README.md index 719abbd..372d38a 100644 --- a/spec_files/README.md +++ b/spec_files/README.md @@ -6,21 +6,33 @@ ## ARTEMIS 3 .SPEC FILES -Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyinstaller.org/) to build a single standalone executable. The extreme versatility of this package is the fact that every external dependency is already embedded into the bundle. The interpreter of Python 3 is also included. +Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyinstaller.org/) to build a single standalone executable (or a one-dir package). The extreme versatility of this package is the fact that every external dependency is already embedded into the bundle. The interpreter of Python 3 is also included. ## Requirements - Python 3.7.0+ - Pyinstaller +- +**IMPORTANT:** *To generate the standalone and the one-dir package, you must use an operating system that coincides with the target one (pyinstaller doesn't allow cross-compilation).* -## Package Building -**IMPORTANT:** *To generate the standalone, you must use an operating system that coincides with the target one (pyinstaller doesn't allow cross-compilation).* +## Package Building (standalone aka one-file, high portability, **suggested**) 1. Download a fresh copy of the git repository. -2. Choose the target OS in `spec_files` folder and copy the whole content into `src` +2. Choose the target OS in `spec_files` folder and copy the whole content (except the Artemis_onedir.spec file) into `src` 3. Open a terminal into `src` and run: ``` pyinstaller Artemis.spec ``` -4. The ready-to-use compiled software is now present into `src/dist` folder. +4. Copy the `src/theme` folder into `src/dist`. +5. The ready-to-use compiled software is now present into `src/dist` folder. + +## Package Building (one-dir, shorter startup time, low portability) +1. Download a fresh copy of the git repository. +2. Choose the target OS in `spec_files` folder and copy the whole content (except the Artemis.spec file) into `src` +3. Open a terminal into `src` and run: +``` +pyinstaller Artemis_onedir.spec +``` +4. Copy the `src/theme` folder into `src/dist/Artemis`. +5. The ready-to-use compiled software is now present into `src/dist` folder as a bundle. All the libraries are clearly present. ## License This program (ARTEMIS 3, 2014-2019) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.