3 Commits
0.11.0 ... main

Author SHA1 Message Date
f08ea8ebc6 build(app): Collect complete zeroconf module with PyInstaller
From `zeroconf` version 0.128.5 `zeroconf._utils` has been changed. The
PyInstaller does not collect all submodules automatically, this is now
forced via `--collect-submodules`.
2024-12-02 10:52:28 +01:00
1a087f213d build: Use right backslashes in make.bat file for Windows
Calling programs is written with a single backslash. When passing
parameters to a program, double backslashes should be used, otherwise a
single one could be interpreted as an escape character.
2024-12-02 10:52:28 +01:00
44d9ea4561 build: Let target venv run combined with other targets
The venv target always had to be created as a separate command. Now it
is possible to use it with other targets in a command.
2024-12-02 10:52:28 +01:00
2 changed files with 43 additions and 37 deletions

View File

@@ -8,6 +8,9 @@ APP_NAME = RevPi\ Commander
APP_IDENT = org.revpimodio.revpicommander
APPLE_SIG = "Developer ID Application: Sven Sager (U3N5843D9K)"
# Python interpreter to use for venv creation
SYSTEM_PYTHON = python3
# Set path to create the virtual environment with package name
ifdef PYTHON3_VENV
VENV_PATH = $(PYTHON3_VENV)/$(PACKAGE)
@@ -15,39 +18,37 @@ else
VENV_PATH = venv
endif
# If virtualenv exists, use it. If not, use PATH to find commands
SYSTEM_PYTHON = python3
PYTHON = $(or $(wildcard $(VENV_PATH)/bin/python), $(SYSTEM_PYTHON))
APP_VERSION = $(shell "$(PYTHON)" src/$(PACKAGE) --version | cut -d ' ' -f 2)
all: build_ui build_rc test build
# Set targets for "all"-target
all: build-ui build-rc build
.PHONY: all
## Environment
venv-info:
@echo Environment for $(APP_NAME) $(APP_VERSION)
@echo Using path: "$(VENV_PATH)"
exit 0
## Virtual environment creation with SYSTEM_PYTHON
venv:
# Start with empty environment
"$(SYSTEM_PYTHON)" -m venv "$(VENV_PATH)"
source "$(VENV_PATH)/bin/activate" && \
python3 -m pip install --upgrade pip && \
python3 -m pip install -r requirements.txt
exit 0
"$(VENV_PATH)/bin/pip" install --upgrade pip
"$(VENV_PATH)/bin/pip" install --upgrade -r requirements.txt
venv-ssp:
# Include system installed site-packages and add just missing modules
"$(SYSTEM_PYTHON)" -m venv --system-site-packages "$(VENV_PATH)"
source "$(VENV_PATH)/bin/activate" && \
python3 -m pip install --upgrade pip && \
python3 -m pip install -r requirements.txt
exit 0
"$(VENV_PATH)/bin/pip" install --upgrade pip
"$(VENV_PATH)/bin/pip" install --upgrade -r requirements.txt
.PHONY: venv-info venv venv-ssp
.PHONY: venv venv-ssp
# Choose python interpreter from venv or system
PYTHON = $(or $(wildcard $(VENV_PATH)/bin/python), $(SYSTEM_PYTHON))
# Read app version from program
APP_VERSION = $(shell "$(PYTHON)" src/$(PACKAGE) --version | cut -d ' ' -f 2)
# Environment info
venv-info:
@echo Environment for $(APP_NAME) $(APP_VERSION)
@echo Using path: "$(VENV_PATH)"
.PHONY: venv-info
## Compile Qt UI files to python code
build-ui:
@@ -109,6 +110,7 @@ app-licenses:
app: build-ui build-rc app-licenses
"$(PYTHON)" -m PyInstaller -n $(APP_NAME) \
--collect-submodules=zeroconf \
--add-data="src/$(PACKAGE)/locale:./$(PACKAGE)/locale" \
--add-data="dist/bundled-libraries.md:$(PACKAGE)/open-source-licenses" \
--add-data="dist/open-source-licenses.*:$(PACKAGE)/open-source-licenses" \
@@ -123,6 +125,7 @@ app: build-ui build-rc app-licenses
app-mac: build-ui build-rc app-licenses
"$(PYTHON)" -m PyInstaller -n $(APP_NAME) \
--collect-submodules=zeroconf \
--add-data="src/$(PACKAGE)/locale:./$(PACKAGE)/locale" \
--add-data="dist/bundled-libraries.md:$(PACKAGE)/open-source-licenses" \
--add-data="dist/open-source-licenses.*:$(PACKAGE)/open-source-licenses" \
@@ -164,6 +167,8 @@ clean:
rm -rf build dist src/*.egg-info
# PyInstaller created files
rm -rf *.spec
# Pycaches
find . -type d -name '__pycache__' -exec rm -r {} \+
distclean: clean
# Virtual environment

View File

@@ -2,7 +2,7 @@
set PACKAGE=revpicommander
set APP_NAME=RevPi Commander
set PYTHON=venv\\Scripts\\python.exe
set PYTHON=venv\Scripts\python.exe
if "%1" == "venv" goto venv
if "%1" == "test" goto test
@@ -24,7 +24,7 @@ goto end
:venv
python -m venv venv
venv\\Scripts\\pip.exe install -r requirements.txt
venv\Scripts\pip.exe install -r requirements.txt
goto end
:test
@@ -41,7 +41,7 @@ goto end
mkdir dist
%PYTHON% -m piplicenses ^
--format=markdown ^
--output-file dist/bundled-libraries.md
--output-file dist\\bundled-libraries.md
%PYTHON% -m piplicenses ^
--with-authors ^
--with-urls ^
@@ -49,7 +49,7 @@ goto end
--with-license-file ^
--no-license-path ^
--format=json ^
--output-file dist/open-source-licenses.json
--output-file dist\\open-source-licenses.json
%PYTHON% -m piplicenses ^
--with-authors ^
--with-urls ^
@@ -57,18 +57,19 @@ goto end
--with-license-file ^
--no-license-path ^
--format=plain-vertical ^
--output-file dist/open-source-licenses.txt
--output-file dist\\open-source-licenses.txt
%PYTHON% -m PyInstaller -n "%APP_NAME%" ^
--add-data="dist/bundled-libraries.md;%PACKAGE%\open-source-licenses" ^
--add-data="dist/open-source-licenses.*;%PACKAGE%\open-source-licenses" ^
--add-data="src\%PACKAGE%\locale;.\%PACKAGE%\locale" ^
--add-data="data\%PACKAGE%.ico;." ^
--collect-submodules=zeroconf ^
--add-data="dist\\bundled-libraries.md;%PACKAGE%\\open-source-licenses" ^
--add-data="dist\\open-source-licenses.*;%PACKAGE%\\open-source-licenses" ^
--add-data="src\\%PACKAGE%\\locale;.\\%PACKAGE%\\locale" ^
--add-data="data\\%PACKAGE%.ico;." ^
--icon=data\\%PACKAGE%.ico ^
--noconfirm ^
--clean ^
--onedir ^
--windowed ^
src\\%PACKAGE%\\__main__.py
src\%PACKAGE%\__main__.py
goto end
:distclean
@@ -76,7 +77,7 @@ goto end
:clean
rmdir /S /Q .pytest_cache
rmdir /S /Q build dist src\%PACKAGE%.egg-info
rmdir /S /Q build dist src\\%PACKAGE%.egg-info
del /Q *.spec
:end