Add windows and reorganize
This commit is contained in:
parent
de7a53eb25
commit
458353ebab
7 changed files with 116 additions and 27 deletions
103
.github/workflows/default.yml
vendored
103
.github/workflows/default.yml
vendored
|
|
@ -35,7 +35,8 @@ jobs:
|
|||
|
||||
- name: Setup Env Vars
|
||||
run: |
|
||||
echo "BUILD_DIR=dist" >> $GITHUB_ENV
|
||||
echo "BUILD_DIR=build" >> $GITHUB_ENV
|
||||
echo "DIST_DIR=build" >> $GITHUB_ENV
|
||||
FILE_LOC=$(find . -name info.py)
|
||||
export VER="$(cat $FILE_LOC | grep -w version | awk -F'"' '$0=$2')"
|
||||
export PROJ_NAME="$(cat $FILE_LOC | grep -w name | awk -F'"' '$0=$2')"
|
||||
|
|
@ -55,7 +56,6 @@ jobs:
|
|||
echo "MAIN_FILE=$MAIN_FILE" >> $GITHUB_ENV
|
||||
echo "BUNDLE_ID=$BUNDLE_ID" >> $GITHUB_ENV
|
||||
echo "EMAIL=$EMAIL" >> $GITHUB_ENV
|
||||
cat > pyinstaller.py <(envsubst < pyinstallertemplate.py)
|
||||
|
||||
- name: Check Python install
|
||||
run: |
|
||||
|
|
@ -90,13 +90,15 @@ jobs:
|
|||
- name: Setup Deb
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 create_pyinstaller_file.py
|
||||
pyinstaller -w --noconfirm --hidden-import PySide6 \
|
||||
--add-data "${{ env.PROJ_DIR }}/resources:." \
|
||||
--icon "${{ env.PROJ_DIR }}/resources/icon.png" \
|
||||
--hidden-import configobj \
|
||||
--distpath "${{ env.BUILD_DIR }}" \
|
||||
--workpath "${{ env.BUILD_DIR }}" \
|
||||
--distpath "${{ env.DIST_DIR }}" \
|
||||
-n "${{ env.PROJ_MOD }}" pyinstaller.py
|
||||
mv "${{ env.BUILD_DIR }}/${{ env.PROJ_MOD }}" "./${{ env.PROJ_MOD }}-tar"
|
||||
mv "${{ env.DIST_DIR }}/${{ env.PROJ_MOD }}" "./${{ env.PROJ_MOD }}-tar"
|
||||
tar -czvf ${{ env.PROJ_MOD }}.tar.gz ${{ env.PROJ_MOD }}-tar/*
|
||||
ci/deb-script.sh
|
||||
|
||||
|
|
@ -123,8 +125,82 @@ jobs:
|
|||
name: ${{ env.PROJ_PATH }}_${{ env.VER }}_${{ matrix.os }}-deb
|
||||
path: |
|
||||
./*.deb
|
||||
# windows:
|
||||
# name: Build for Windows
|
||||
windows:
|
||||
name: Build for Windows
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [windows-2019]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.10.8'
|
||||
|
||||
- name: Check Python install
|
||||
run: |
|
||||
python -m venv venv
|
||||
venv\Scripts\Activate.ps1
|
||||
which python
|
||||
python --version
|
||||
python -c "import struct; print(struct.calcsize('P') * 8)"
|
||||
which pip
|
||||
pip --version
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
venv\Scripts\Activate.ps1
|
||||
pip3 install -U setuptools wheel pip
|
||||
pip3 install -r requirements.txt
|
||||
pip3 install https://github.com/pyinstaller/pyinstaller/tarball/develop
|
||||
|
||||
- name: Check Python dependencies
|
||||
run: |
|
||||
venv\Scripts\Activate.ps1
|
||||
python3 -c "from PySide6 import __version__; print(__version__)"
|
||||
python3 -c "from PySide6.QtCore import __version__; print(__version__)"
|
||||
python3 -c "from PySide6.QtCore import QLibraryInfo; print(QLibraryInfo.location(QLibraryInfo.LibrariesPath))"
|
||||
|
||||
- name: Setup Env Vars
|
||||
run: |
|
||||
$FILE_LOC = (Get-ChildItem -Path .\ -Filter info.py -Recurse -ErrorAction SilentlyContinue -Force | foreach {$_.FullName})
|
||||
$VER = (findstr version $FILE_LOC).split("'")[1]
|
||||
echo "VER=$VER" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "BUILD_DIR=build" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "DIST_DIR=dist" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
$PROJ_NAME = (findstr /b name $FILE_LOC).split('"')[1]
|
||||
$PROJ_MOD = (findstr /b module_name $FILE_LOC).split('"')[1]
|
||||
$MAIN_FILE = (findstr /b main_file $FILE_LOC).split('"')[1]
|
||||
$MAIN_MOD = (findstr /b main_mod $FILE_LOC).split('"')[1]
|
||||
echo "PROJECT_NAME=$PROJ_NAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "PROJ_MOD=$PROJ_MOD" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "MAIN_FILE=$MAIN_FILE" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "MAIN_MOD=$MAIN_MOD" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "DIST_DIR=$DIST_DIR" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
venv\Scripts\Activate.ps1
|
||||
python3 create_pyinstaller_file.py
|
||||
pyinstaller -w --noconfirm --hidden-import PySide6 `
|
||||
--add-data ${{ env.PROJ_DIR }}\resources;.\ `
|
||||
--icon ${{ env.PROJ_DIR }}\resources\icon.png `
|
||||
--hidden-import pkg_resources `
|
||||
--workpath "${{ env.BUILD_DIR }}" `
|
||||
--distpath "${{ env.DIST_DIR }}" `
|
||||
--onedir -n "${{ env.PROJECT_NAME }}" pyinstaller.py
|
||||
Compress-Archive -Path .\${{env.DIST_DIR}}\${{env.PROJECT_NAME}} -DestinationPath ${{env.PROJECT_NAME}}-${{ env.VER }}.zip
|
||||
|
||||
|
||||
- name: Deploy Zip
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.PROJECT_NAME }}_${{ env.VER }}-${{ matrix.os }}-zip
|
||||
path: |
|
||||
${{ env.PROJECT_NAME }}-${{ env.VER }}.zip
|
||||
|
||||
|
||||
macos:
|
||||
name: Build for macOS
|
||||
|
|
@ -147,7 +223,8 @@ jobs:
|
|||
echo "/Library/Frameworks/Python.framework/Versions/3.10/bin" >> $GITHUB_PATH
|
||||
- name: Setup Env Vars
|
||||
run: |
|
||||
echo "BUILD_DIR=dist" >> $GITHUB_ENV
|
||||
echo "BUILD_DIR=build" >> $GITHUB_ENV
|
||||
echo "DIST_DIR=dist" >> $GITHUB_ENV
|
||||
FILE_LOC=$(find . -name info.py)
|
||||
export VER="$(cat $FILE_LOC | grep -w version | awk -F'"' '$0=$2')"
|
||||
export PROJ_NAME="$(cat $FILE_LOC | grep -w name | awk -F'"' '$0=$2')"
|
||||
|
|
@ -165,8 +242,6 @@ jobs:
|
|||
echo "BUNDLE_ID=$BUNDLE_ID" >> $GITHUB_ENV
|
||||
echo "DIST_DIR=$DIST_DIR" >> $GITHUB_ENV
|
||||
|
||||
cat > pyinstaller.py <(envsubst < pyinstallertemplate.py)
|
||||
|
||||
- name: Check Python install
|
||||
run: |
|
||||
pip3 install --upgrade pip
|
||||
|
|
@ -210,6 +285,7 @@ jobs:
|
|||
- name: Build
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 create_pyinstaller_file.py
|
||||
# py2app works better
|
||||
python3 buildPy2app.py py2app
|
||||
# pyinstaller -w --noconfirm --hidden-import PySide6 \
|
||||
|
|
@ -220,13 +296,12 @@ jobs:
|
|||
# --hidden-import pkg_resources \
|
||||
# --distpath "${{ env.BUILD_DIR }}/ProjectMac" \
|
||||
# --onefile -n "${{ env.PROJECT_NAME }}" pyinstaller.py
|
||||
ls -al "dist/"
|
||||
mv "dist/${{ env.PROJECT_NAME }}.app" "${{ env.PROJECT_NAME }}.app"
|
||||
mv "${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}.app" "${{ env.PROJECT_NAME }}.app"
|
||||
# Clean the directory so it's not full of python bytecode
|
||||
pyclean "${{ env.PROJECT_NAME }}.app"
|
||||
python3 ci/cleandist.py "${{ env.PROJECT_NAME }}.app"
|
||||
python3 ci/codesign.py "${{ env.PROJECT_NAME }}.app"
|
||||
zip -ry "${{ env.PROJECT_NAME }}-${{ env.VER }}.zip" "${{ env.PROJECT_NAME }}.app"
|
||||
zip -ry "${{ env.PROJECT_NAME }}_${{ env.VER }}.zip" "${{ env.PROJECT_NAME }}.app"
|
||||
|
||||
- name: Prepare for deployment
|
||||
run: |
|
||||
|
|
@ -250,9 +325,9 @@ jobs:
|
|||
- name: Deploy Zip
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ env.PROJECT_NAME }}-${{ env.VER }}-${{ matrix.os }}-zip
|
||||
name: ${{ env.PROJECT_NAME }}_${{ env.VER }}-${{ matrix.os }}-zip
|
||||
path: |
|
||||
${{ env.PROJECT_NAME }}-${{ env.VER }}.zip
|
||||
${{ env.PROJECT_NAME }}_${{ env.VER }}.zip
|
||||
|
||||
- name: Deploy DMG
|
||||
uses: actions/upload-artifact@v3
|
||||
|
|
|
|||
|
|
@ -1,8 +1,14 @@
|
|||
from setuptools import setup
|
||||
from glob import glob
|
||||
from datetime import datetime
|
||||
from package_alias import package
|
||||
|
||||
from project.info import main_module, name, version, main_file, bundle_identifier, module_name
|
||||
info = package.info
|
||||
|
||||
name = info.name
|
||||
version = info.version
|
||||
bundle_identifier = info.bundle_identifier
|
||||
module_name = info.module_name
|
||||
|
||||
APP = [f'pyinstaller.py']
|
||||
DATA_FILES = [
|
||||
|
|
|
|||
7
create_pyinstaller_file.py
Normal file
7
create_pyinstaller_file.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from package_alias import package_name, package
|
||||
|
||||
with open("pyinstaller.py", "w+") as f:
|
||||
f.writelines([
|
||||
f"from {package_name} import {package.info.main_module}\n",
|
||||
f"{package.info.main_module}.main()"
|
||||
])
|
||||
11
package_alias.py
Normal file
11
package_alias.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import sys
|
||||
import os
|
||||
from glob import glob
|
||||
|
||||
info_name = 'info'
|
||||
info_file = glob(os.path.join('*', f'{info_name}.py'))[0]
|
||||
package_name = info_file.split(os.path.sep)[0]
|
||||
|
||||
package = __import__(f"{package_name}", fromlist=["main", "info"])
|
||||
if package_name not in sys.modules:
|
||||
sys.modules[package_name] = package
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
from . import info
|
||||
|
||||
version = info.version
|
||||
name = info.name
|
||||
module_name = info.module_name
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
from PySide6.QtWidgets import QMainWindow, QApplication, QLabel, QVBoxLayout, QPushButton, QWidget
|
||||
from PySide6.QtGui import QIcon
|
||||
from . import name as project_name
|
||||
from . import info
|
||||
project_name = info.name
|
||||
|
||||
import sys
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
"""
|
||||
This file is needed to get pyinstaller to understand modules.
|
||||
"""
|
||||
|
||||
from $PROJ_MOD.$MAIN_MOD import main
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue