Merge branch 'minor_improvements' (fix conflicts on readme files)

This commit is contained in:
Alessandro
2019-09-08 15:25:22 +02:00
12 changed files with 125 additions and 86 deletions

View File

@@ -5,6 +5,11 @@ The first release is [3.0.0] because this is actually the third major version (c
## [Unreleased]
### Added
- The software version displayed has now a `.Dev` appended when running from script (_e.g._ 3.1.0.Dev) to differentiate from an actual binary executable. The `.Dev` thus implies that the
running version of the software could not correspond to a particular release.
- The `*.spec` files files can be executed without copying the source code in
their folder.
- Add a link to the GitHub repository in the action bar.
- Add support for signals with multiple-value acf ([#9](https://github.com/AresValley/Artemis/pull/9)). This breaks the backward compatibility because the database changed structure.
### Fixed

View File

@@ -12,7 +12,8 @@ In short, ARTEMIS is a signals hunter software and a useful aid for radio listen
- [Run the software](#Run-the-software)
- [Run from binary](#Run-from-binary)
- [Run from source code](#Run-from-source-code-OS-independent)
- [Run from source code](#Run-from-source-code)
- [Compile from source code](#Compile-from-source-code)
- [Database](#database)
- [Syntax](#syntax)
- [Multiple Items fields (Location, Modulation)](#multiple-items-fields-location-modulation)
@@ -56,6 +57,9 @@ pip install -r requirements.txt --user
python3 artemis.py
```
### Compile from source code
If you want to compile Artemis yourself from the source code follow the instructions in the [spec_files/README](spec_files/README.md) file.
## Database
The database (db.csv) is directly extracted from sigidwiki.com with a DB parser and reworked to a standard format defined as follow. Artemis DB is a human-readable csv file where the delimiter is the character `*` (Asterisk, Unicode: U+002A). The new entry (separation between signals) is the End Of Line (EOL) escape sequence `\n`. Every signal is directly connected to spectra and audio sample stored in **Spectra** and **Audio** folders, respectively. Every signal is composed of 12 columns:

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*-
import glob
import os
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', '.'))
SRC_PATH = "../../src/"
a = Analysis(['artemis.py'],
data_file = [
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
if f.split('/')[-1] != "artemis.py"
].append((SRC_PATH + 'cacert.pem', '.'))
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
pathex=[os.getcwd()],
binaries=[],
datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
pyz = PYZ(a.pure, # noqa: 821
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
exe = EXE(pyz, # noqa: 821
a.scripts,
a.binaries,
a.zipfiles,

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*-
import glob
import os
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', '.'))
SRC_PATH = "../../src/"
a = Analysis(['artemis.py'],
data_file = [
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
if f.split('/')[-1] != "artemis.py"
].append((SRC_PATH + 'cacert.pem', '.'))
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
pathex=[os.getcwd()],
binaries=[],
datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
pyz = PYZ(a.pure, # noqa: 821
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
exe = EXE(pyz, # noqa: 821
a.scripts,
[],
exclude_binaries=True,
@@ -31,7 +39,7 @@ exe = EXE(pyz,
strip=False,
upx=True,
console=False)
coll = COLLECT(exe,
coll = COLLECT(exe, # noqa: 821
a.binaries,
a.zipfiles,
a.datas,

View File

@@ -6,7 +6,7 @@
## ARTEMIS 3 .SPEC FILES
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.
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). Every external dependency is already embedded into the bundle. The interpreter of Python 3 is also included.
## Requirements
- Python 3.7.0+
@@ -17,37 +17,24 @@ Artemis 3 .spec files are used by the package **pyinstaller** (https://www.pyins
**IMPORTANT (LINUX COMPILING):** *The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. **Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can't run the resulting executable on an older system**. The supplied binary bootloader should work with older GLIBC. However, the libpython.so and other dynamic libraries still depend on the newer GLIBC. The solution is to compile the Python interpreter with its modules (and also probably bootloader) on the oldest system you have around so that it gets linked with the oldest version of GLIBC.* (Source: PyInstaller)
## 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 (except the Artemis_onedir.spec file) into `src`
3. Open a terminal into `src` and run:
1. Download/clone the git repository.
2. In the `spec_files/<your OS>` folder open a terminal and type
```
pyinstaller Artemis.spec
```
4. Copy the `src/themes` folder into `src/dist`.
5. The ready-to-use compiled software is now present into `src/dist` folder.
3. An Artemis executable should be produced in the `dist/` folder. The `build/` folder
can be deleted.
## 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:
1. Download/clone the git repository.
2. In the `spec_files/<your OS>` folder open a terminal and type
```
pyinstaller Artemis_onedir.spec
```
4. Copy the `src/themes` 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.
3. An Artemis executable should be produced in `dist/Artemis/`. The `build/` can
be deleted.
## 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.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses
## Thanks
* **Marco Dalla Tiezza** - *Artemis I-II developer, DB parsing, Website*
* [**Alessandro Ceccato**](https://github.com/alessandro90 "GitHub profile") - *Artemis III lead developer*
* **Paolo Romani (IZ1MLL)** - *Lead β Tester, RF specialist*
* **Carl Colena** - *Sigidwiki admin, β Tester, Signals expert*
* [**Marco Bortoli**](https://github.com/marbort "GitHub profile") - *macOS deployment, β Tester*
* [**Pierpaolo Pravatto**](https://github.com/ppravatto "GitHub profile") - *Wiki page, β Tester*
* [**Francesco Capostagno**](https://github.com/fcapostagno "GitHub profile"), **Luca**, **Pietro** - *β Tester*
You can save a copy of the executable in a folder of you choice. At startup it will ask you to download
the database and also warn you that the `themes` folder is missing. To avoid this,
copy `src/Data` and `src/themes` in the folder containing the executable.

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*-
import glob
import os
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', '.'))
SRC_PATH = "../../src/"
a = Analysis(['artemis.py'],
data_file = [
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
if f.split('/')[-1] != "artemis.py"
].append((SRC_PATH + 'cacert.pem', '.'))
a = Analysis(SRC_PATH + ['artemis.py'], # noqa: 821
pathex=[os.getcwd()],
binaries=[],
datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
pyz = PYZ(a.pure, # noqa: 821
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
exe = EXE(pyz, # noqa: 821
a.scripts,
[],
exclude_binaries=True,
@@ -30,8 +38,9 @@ exe = EXE(pyz,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False , icon='Artemis3.ico')
coll = COLLECT(exe,
console=False,
icon='Artemis3.ico')
coll = COLLECT(exe, # noqa: 821
a.binaries,
a.zipfiles,
a.datas,

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*-
import glob
import os
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', '.'))
SRC_PATH = "../../src/"
a = Analysis(['artemis.py'],
data_file = [
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
if f.split('/')[-1] != "artemis.py"
].append((SRC_PATH + 'cacert.pem', '.'))
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
pathex=[os.getcwd()],
binaries=[],
datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
pyz = PYZ(a.pure, # noqa: 821
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
exe = EXE(pyz, # noqa: 821
a.scripts,
a.binaries,
a.zipfiles,
@@ -33,4 +41,5 @@ exe = EXE(pyz,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False , icon='Artemis3.ico')
console=False,
icon='Artemis3.ico')

View File

@@ -1,13 +1,20 @@
# -*- mode: python -*-
import glob
import os
block_cipher = None
import glob, os
data_file = [(f, '.') for f in glob.glob('*.[pu][yi]') if f != "artemis.py"]
data_file.append(('themes','./themes'))
data_file.append(('cacert.pem', '.'))
a = Analysis(['artemis.py'],
SRC_PATH = "../../src/"
data_file = [
(f, '.') for f in glob.glob(SRC_PATH + '*.[pu][yi]')
if f.split('/')[-1] != "artemis.py"
].extend(((SRC_PATH + 'cacert.pem', '.'), ('themes', './themes')))
a = Analysis([SRC_PATH + 'artemis.py'], # noqa: 821
pathex=[os.getcwd()],
binaries=[],
datas=data_file,
@@ -19,9 +26,10 @@ a = Analysis(['artemis.py'],
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
pyz = PYZ(a.pure, # noqa: 821
a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
exe = EXE(pyz, # noqa: 821
a.scripts,
[],
exclude_binaries=True,
@@ -30,15 +38,15 @@ exe = EXE(pyz,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False )
coll = COLLECT(exe,
console=False)
coll = COLLECT(exe, # noqa: 821
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='Artemis')
app = BUNDLE(coll,
app = BUNDLE(coll, # noqa: 821
name='Artemis.app',
icon='Artemis3.icns',
bundle_identifier=None)

View File

@@ -43,7 +43,14 @@ from utilities import (checksum_ok,
# import default_imgs_rc
__VERSION__ = "3.0.1"
__LATEST_VERSION__ = "3.0.1"
if hasattr(sys, '_MEIPASS'):
__VERSION__ = __LATEST_VERSION__
else:
__VERSION__ = __LATEST_VERSION__ + ".Dev"
qt_creator_file = resource_path("artemis.ui")
Ui_MainWindow, _ = uic.loadUiType(qt_creator_file)
@@ -78,6 +85,9 @@ class Artemis(QMainWindow, Ui_MainWindow):
self.action_rtl_sdr_com.triggered.connect(
lambda: webbrowser.open(Constants.RTL_SDL_LINK)
)
self.action_github.triggered.connect(
lambda: webbrowser.open(Constants.GITHUB_REPO)
)
self.db = None
self.current_signal_name = ''
self.signal_names = []

View File

@@ -9520,6 +9520,7 @@ QSlider::handle:horizontal {
<addaction name="action_aresvalley_com"/>
<addaction name="action_forum"/>
<addaction name="action_rtl_sdr_com"/>
<addaction name="action_github"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuUpdates"/>
@@ -9572,6 +9573,11 @@ QSlider::handle:horizontal {
<string>RTL-SDR.com</string>
</property>
</action>
<action name="action_github">
<property name="text">
<string>GitHub</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View File

@@ -114,6 +114,7 @@ class Constants:
ADD_SIGNAL_LINK = "https://www.sigidwiki.com/index.php/Special:FormEdit/Signal/?preload=Signal_Identification_Wiki:Signal_form_preload_text"
FORUM_LINK = "https://aresvalley.com/community/"
ARESVALLEY_LINK = "https://aresvalley.com/"
GITHUB_REPO = "https://github.com/AresValley/Artemis"
RTL_SDL_LINK = "https://www.rtl-sdr.com/"
UPDATING_STR = "Updating..."
ACF_DOCS = "https://aresvalley.com/documentation/"

View File

@@ -60,19 +60,3 @@ This folder contains a third option to run Artemis 3 on your pc. The method of i
> ### MacOS:
>
> 1. To Be Completed...
## 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.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses
## Thanks
* **Marco Dalla Tiezza** - *Artemis I-II developer, DB parsing, Website*
* [**Alessandro Ceccato**](https://github.com/alessandro90 "GitHub profile") - *Artemis III lead developer*
* **Paolo Romani (IZ1MLL)** - *Lead β Tester, RF specialist*
* **Carl Colena** - *Sigidwiki admin, β Tester, Signals expert*
* [**Marco Bortoli**](https://github.com/marbort "GitHub profile") - *macOS deployment, β Tester*
* [**Pierpaolo Pravatto**](https://github.com/ppravatto "GitHub profile") - *Wiki page, β Tester*
* [**Francesco Capostagno**](https://github.com/fcapostagno "GitHub profile"), **Luca**, **Pietro** - *β Tester*