Compare commits
72 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| efadffa161 | |||
| 9aee71fa20 | |||
| dedb36637a | |||
| 6b6add4b12 | |||
| 053f8af371 | |||
| 0c26acd621 | |||
| c64c64659a | |||
| c6ab45d77a | |||
| b7edcdebb0 | |||
| b79736ab4e | |||
| 10c4c26423 | |||
| bf937651f1 | |||
|
|
6736e82336 | ||
|
|
b4dba940e0 | ||
|
|
a2a5f0d408 | ||
|
|
3e3df82cba | ||
|
|
329a7d2adf | ||
|
|
0c49af4a3e | ||
|
|
43b64c31a5 | ||
|
|
87e5d76c3e | ||
|
|
a6f029a295 | ||
|
|
1db992099e | ||
|
|
3adcdbc63a | ||
|
|
5d2da82392 | ||
|
|
e40854d22c | ||
|
|
bd5c434b9b | ||
|
|
9e5e0015f0 | ||
|
|
d224f5c898 | ||
|
|
0ce759f0a3 | ||
|
|
c1a1d21957 | ||
|
|
77d59c8016 | ||
|
|
cb26723d2e | ||
|
|
1b1d3f463a | ||
|
|
8ecfdfba5f | ||
|
|
1c038a14bd | ||
|
|
2dc8dcfca9 | ||
|
|
9c3a65eaf4 | ||
|
|
04b363697b | ||
|
|
e245b974e8 | ||
|
|
dce16b0bf6 | ||
|
|
09164817ca | ||
|
|
f63335e48c | ||
|
|
5a4cb8819f | ||
|
|
a68442bab8 | ||
|
|
ad7cee232c | ||
|
|
d22b0c4203 | ||
|
|
a8dee21ad0 | ||
|
|
7071c8c601 | ||
|
|
4e2ef9706a | ||
|
|
9cdd374622 | ||
|
|
b22424d290 | ||
|
|
99ed1fb8c9 | ||
|
|
b469d4d30a | ||
|
|
ac8fd363b0 | ||
|
|
681336b7ae | ||
|
|
f1f2d7035f | ||
|
|
ff7e885f69 | ||
|
|
33e01256d3 | ||
|
|
318c4aa936 | ||
|
|
2790537b70 | ||
|
|
a9a33a332d | ||
|
|
0ef75fa4df | ||
|
|
552fdbedd1 | ||
|
|
c2734ccf37 | ||
|
|
a118eb0da4 | ||
|
|
eb09f72a9c | ||
|
|
e5d7a99003 | ||
|
|
fbbcff164c | ||
|
|
f59ea26c6d | ||
|
|
e345907744 | ||
|
|
4fdf899fb4 | ||
|
|
bc0cbb72c2 |
@@ -1,4 +1,8 @@
|
|||||||
FROM cdrx/pyinstaller-windows
|
FROM jackmckew/pyinstaller-windows
|
||||||
|
|
||||||
|
#extra winetrick step to fix "Unimplemented function ucrtbase.dll.crealf called"
|
||||||
|
RUN apt-get install -y xvfb libgnutls30 libgnutls30:i386
|
||||||
|
RUN xvfb-run winetricks --force -q vcrun2019
|
||||||
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|||||||
84
Dockerfiles/Dockerfile-py3.10-win64
Normal file
84
Dockerfiles/Dockerfile-py3.10-win64
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
ARG WINE_VERSION=winehq-staging
|
||||||
|
ARG PYTHON_VERSION=3.10.1
|
||||||
|
ARG PYINSTALLER_VERSION=5.13
|
||||||
|
|
||||||
|
# we need wine for this all to work, so we'll use the PPA
|
||||||
|
RUN set -x \
|
||||||
|
&& dpkg --add-architecture i386 \
|
||||||
|
&& apt-get update -qy \
|
||||||
|
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget gpg-agent rename git \
|
||||||
|
&& wget -nv https://dl.winehq.org/wine-builds/winehq.key \
|
||||||
|
&& apt-key add winehq.key \
|
||||||
|
&& add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \
|
||||||
|
&& apt-get update -qy \
|
||||||
|
&& apt-get install --no-install-recommends -qfy $WINE_VERSION winbind cabextract \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& wget -nv https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks \
|
||||||
|
&& chmod +x winetricks \
|
||||||
|
&& mv winetricks /usr/local/bin
|
||||||
|
|
||||||
|
# wine settings
|
||||||
|
ENV WINEARCH win64
|
||||||
|
ENV WINEDEBUG fixme-all
|
||||||
|
ENV WINEPREFIX /wine
|
||||||
|
|
||||||
|
# PYPI repository location
|
||||||
|
ENV PYPI_URL=https://pypi.python.org/
|
||||||
|
# PYPI index location
|
||||||
|
ENV PYPI_INDEX_URL=https://pypi.python.org/simple
|
||||||
|
|
||||||
|
# install python in wine, using the msi packages to install, extracting
|
||||||
|
# the files directly, since installing isn't running correctly.
|
||||||
|
RUN set -x \
|
||||||
|
&& winetricks win7 \
|
||||||
|
&& for msifile in `echo core dev exe lib path pip tcltk tools`; do \
|
||||||
|
wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/amd64/${msifile}.msi"; \
|
||||||
|
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python310; \
|
||||||
|
rm ${msifile}.msi; \
|
||||||
|
done \
|
||||||
|
&& cd /wine/drive_c/Python310 \
|
||||||
|
&& echo 'wine '\''C:\Python310\python.exe'\'' "$@"' > /usr/bin/python \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
|
||||||
|
&& echo 'assoc .py=PythonScript' | wine cmd \
|
||||||
|
&& echo 'ftype PythonScript=c:\Python310\python.exe "%1" %*' | wine cmd \
|
||||||
|
&& while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \
|
||||||
|
&& chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \
|
||||||
|
&& (pip install -U pip || true) \
|
||||||
|
&& rm -rf /tmp/.wine-*
|
||||||
|
|
||||||
|
ENV W_DRIVE_C=/wine/drive_c
|
||||||
|
ENV W_WINDIR_UNIX="$W_DRIVE_C/windows"
|
||||||
|
ENV W_SYSTEM64_DLLS="$W_WINDIR_UNIX/system32"
|
||||||
|
ENV W_TMP="$W_DRIVE_C/windows/temp/_$0"
|
||||||
|
|
||||||
|
# install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files
|
||||||
|
RUN set -x \
|
||||||
|
&& rm -f "$W_TMP"/* \
|
||||||
|
&& wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x64.exe \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP/a10" \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP/a11" \
|
||||||
|
&& cd "$W_TMP" \
|
||||||
|
&& rename 's/_/\-/g' *.dll \
|
||||||
|
&& cp "$W_TMP"/*.dll "$W_SYSTEM64_DLLS"/
|
||||||
|
|
||||||
|
# install pyinstaller
|
||||||
|
RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION
|
||||||
|
|
||||||
|
# put the src folder inside wine
|
||||||
|
RUN mkdir /src/ && ln -s /src /wine/drive_c/src
|
||||||
|
VOLUME /src/
|
||||||
|
WORKDIR /wine/drive_c/src/
|
||||||
|
RUN mkdir -p /wine/drive_c/tmp
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
84
Dockerfiles/Dockerfile-py3.10-win64-6.8.0
Normal file
84
Dockerfiles/Dockerfile-py3.10-win64-6.8.0
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
ARG WINE_VERSION=winehq-staging
|
||||||
|
ARG PYTHON_VERSION=3.10.1
|
||||||
|
ARG PYINSTALLER_VERSION=6.8.0
|
||||||
|
|
||||||
|
# we need wine for this all to work, so we'll use the PPA
|
||||||
|
RUN set -x \
|
||||||
|
&& dpkg --add-architecture i386 \
|
||||||
|
&& apt-get update -qy \
|
||||||
|
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget gpg-agent rename git \
|
||||||
|
&& wget -nv https://dl.winehq.org/wine-builds/winehq.key \
|
||||||
|
&& apt-key add winehq.key \
|
||||||
|
&& add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \
|
||||||
|
&& apt-get update -qy \
|
||||||
|
&& apt-get install --no-install-recommends -qfy $WINE_VERSION winbind cabextract \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& wget -nv https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks \
|
||||||
|
&& chmod +x winetricks \
|
||||||
|
&& mv winetricks /usr/local/bin
|
||||||
|
|
||||||
|
# wine settings
|
||||||
|
ENV WINEARCH win64
|
||||||
|
ENV WINEDEBUG fixme-all
|
||||||
|
ENV WINEPREFIX /wine
|
||||||
|
|
||||||
|
# PYPI repository location
|
||||||
|
ENV PYPI_URL=https://pypi.python.org/
|
||||||
|
# PYPI index location
|
||||||
|
ENV PYPI_INDEX_URL=https://pypi.python.org/simple
|
||||||
|
|
||||||
|
# install python in wine, using the msi packages to install, extracting
|
||||||
|
# the files directly, since installing isn't running correctly.
|
||||||
|
RUN set -x \
|
||||||
|
&& winetricks win7 \
|
||||||
|
&& for msifile in `echo core dev exe lib path pip tcltk tools`; do \
|
||||||
|
wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/amd64/${msifile}.msi"; \
|
||||||
|
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python310; \
|
||||||
|
rm ${msifile}.msi; \
|
||||||
|
done \
|
||||||
|
&& cd /wine/drive_c/Python310 \
|
||||||
|
&& echo 'wine '\''C:\Python310\python.exe'\'' "$@"' > /usr/bin/python \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
|
||||||
|
&& echo 'wine '\''C:\Python310\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
|
||||||
|
&& echo 'assoc .py=PythonScript' | wine cmd \
|
||||||
|
&& echo 'ftype PythonScript=c:\Python310\python.exe "%1" %*' | wine cmd \
|
||||||
|
&& while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \
|
||||||
|
&& chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \
|
||||||
|
&& (pip install -U pip || true) \
|
||||||
|
&& rm -rf /tmp/.wine-*
|
||||||
|
|
||||||
|
ENV W_DRIVE_C=/wine/drive_c
|
||||||
|
ENV W_WINDIR_UNIX="$W_DRIVE_C/windows"
|
||||||
|
ENV W_SYSTEM64_DLLS="$W_WINDIR_UNIX/system32"
|
||||||
|
ENV W_TMP="$W_DRIVE_C/windows/temp/_$0"
|
||||||
|
|
||||||
|
# install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files
|
||||||
|
RUN set -x \
|
||||||
|
&& rm -f "$W_TMP"/* \
|
||||||
|
&& wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x64.exe \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP/a10" \
|
||||||
|
&& cabextract -q --directory="$W_TMP" "$W_TMP/a11" \
|
||||||
|
&& cd "$W_TMP" \
|
||||||
|
&& rename 's/_/\-/g' *.dll \
|
||||||
|
&& cp "$W_TMP"/*.dll "$W_SYSTEM64_DLLS"/
|
||||||
|
|
||||||
|
# install pyinstaller
|
||||||
|
RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION
|
||||||
|
|
||||||
|
# put the src folder inside wine
|
||||||
|
RUN mkdir /src/ && ln -s /src /wine/drive_c/src
|
||||||
|
VOLUME /src/
|
||||||
|
WORKDIR /wine/drive_c/src/
|
||||||
|
RUN mkdir -p /wine/drive_c/tmp
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
6
Dockerfiles/README.md
Normal file
6
Dockerfiles/README.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Docker Files
|
||||||
|
|
||||||
|
To push new images up to Docker hub
|
||||||
|
|
||||||
|
1. `docker login`
|
||||||
|
2. `docker build -f Dockerfile-py3.10-win64 . --platform=linux/amd64 -t jackmckew/pyinstaller-windows:3.10 -t jackmckew/pyinstaller-windows:latest && docker push jackmckew/pyinstaller-windows:3.10 && docker push jackmckew/pyinstaller-windows:latest`
|
||||||
45
Dockerfiles/entrypoint.sh
Normal file
45
Dockerfiles/entrypoint.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fail on errors.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Make sure .bashrc is sourced
|
||||||
|
. /root/.bashrc
|
||||||
|
|
||||||
|
# Allow the workdir to be set using an env var.
|
||||||
|
# Useful for CI pipiles which use docker for their build steps
|
||||||
|
# and don't allow that much flexibility to mount volumes
|
||||||
|
WORKDIR=${SRCDIR:-/src}
|
||||||
|
|
||||||
|
#
|
||||||
|
# In case the user specified a custom URL for PYPI, then use
|
||||||
|
# that one, instead of the default one.
|
||||||
|
#
|
||||||
|
if [[ "$PYPI_URL" != "https://pypi.python.org/" ]] || \
|
||||||
|
[[ "$PYPI_INDEX_URL" != "https://pypi.python.org/simple" ]]; then
|
||||||
|
# the funky looking regexp just extracts the hostname, excluding port
|
||||||
|
# to be used as a trusted-host.
|
||||||
|
mkdir -p /wine/drive_c/users/root/pip
|
||||||
|
echo "[global]" > /wine/drive_c/users/root/pip/pip.ini
|
||||||
|
echo "index = $PYPI_URL" >> /wine/drive_c/users/root/pip/pip.ini
|
||||||
|
echo "index-url = $PYPI_INDEX_URL" >> /wine/drive_c/users/root/pip/pip.ini
|
||||||
|
echo "trusted-host = $(echo $PYPI_URL | perl -pe 's|^.*?://(.*?)(:.*?)?/.*$|$1|')" >> /wine/drive_c/users/root/pip/pip.ini
|
||||||
|
|
||||||
|
echo "Using custom pip.ini: "
|
||||||
|
cat /wine/drive_c/users/root/pip/pip.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd $WORKDIR
|
||||||
|
|
||||||
|
if [ -f requirements.txt ]; then
|
||||||
|
pip install -r requirements.txt
|
||||||
|
fi # [ -f requirements.txt ]
|
||||||
|
|
||||||
|
echo "$@"
|
||||||
|
|
||||||
|
if [[ "$@" == "" ]]; then
|
||||||
|
pyinstaller --clean -y --dist ./dist/windows --workpath /tmp *.spec
|
||||||
|
chown -R --reference=. ./dist/windows
|
||||||
|
else
|
||||||
|
sh -c "$@"
|
||||||
|
fi # [[ "$@" == "" ]]
|
||||||
97
README.md
97
README.md
@@ -1,2 +1,95 @@
|
|||||||
# pyinstaller-action
|
# PyInstaller-Action-Windows
|
||||||
Github Action for building executables with Pyinstaller
|
|
||||||
|
Github Action for building executables with PyInstaller
|
||||||
|
|
||||||
|
To build your application, you need to specify where your source code is via the `path` argument, this defaults to `src`.
|
||||||
|
|
||||||
|
The source code directory should have your `.spec` file that PyInstaller generates. If you don't have one, you'll need to run PyInstaller once locally to generate it.
|
||||||
|
Also if you have another program `.spec` file you can set specific pyinstaller `.spec` file by `spec: <YOUR_SPEC_FILE_NAME>`
|
||||||
|
|
||||||
|
If the `src` folder has a `requirements.txt` file, the packages will be installed into the environment before PyInstaller runs. This can also be specified via the `requirements` argument.
|
||||||
|
|
||||||
|
If you wish to specify a package mirror, this is possibly via the `pypi_url` and/or the `pypi_index_url`, these defaults are:
|
||||||
|
|
||||||
|
- `pypi_url` = `https://pypi.python.org/`
|
||||||
|
- `pypi_index_url` = `https://pypi.python.org/simple`
|
||||||
|
|
||||||
|
> If you are using the default Python `gitignore` file, ensure to remove `.spec`.
|
||||||
|
|
||||||
|
> This action uses [Wine](https://www.winehq.org) to emulate windows inside Docker for packaging POSIX executables.
|
||||||
|
|
||||||
|
## CURRENT ISSUE: `ModuleNotFoundError pkg_resources.extern`
|
||||||
|
The pkg_resources hook for setuptools>=v70.0.0 is currently missing in pyinstaller 5.13, which is used in this Github Action.
|
||||||
|
|
||||||
|
To address this, a future version of this project will incorporate pyinstaller>=6.7 to resolve the issue.
|
||||||
|
However, in the interim, it is necessary to manually include a hiddenimport to the `.spec` file.
|
||||||
|
|
||||||
|
Include `hiddenimports=['pkg_resources.extern'],` in your `.spec` file, something like this:
|
||||||
|
```
|
||||||
|
a = Analysis(
|
||||||
|
|
||||||
|
hiddenimports=['pkg_resources.extern'],
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
For further assistance, please refer to the following issues:
|
||||||
|
- JackMcKew/pyinstaller-action-windows#51
|
||||||
|
- pyinstaller/pyinstaller#8554
|
||||||
|
|
||||||
|
|
||||||
|
## Example usage
|
||||||
|
|
||||||
|
There's an example repository where you can see this action in action: <https://github.com/JackMcKew/pyinstaller-action-windows-example>.
|
||||||
|
|
||||||
|
Include this in your `.github/workflows/main.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: PyInstaller Windows
|
||||||
|
uses: JackMcKew/pyinstaller-action-windows@main
|
||||||
|
with:
|
||||||
|
path: src
|
||||||
|
```
|
||||||
|
|
||||||
|
## Full Example
|
||||||
|
|
||||||
|
Here is an entire workflow for:
|
||||||
|
|
||||||
|
- Packaging an application with PyInstaller
|
||||||
|
- Uploading the packaged executable as an artifact
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
|
||||||
|
name: Package Application with Pyinstaller
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Package Application
|
||||||
|
uses: JackMcKew/pyinstaller-action-windows@main
|
||||||
|
with:
|
||||||
|
path: src
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: name-of-artifact
|
||||||
|
path: src/dist/windows
|
||||||
|
```
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
If you get this error: `OSError: [WinError 123] Invalid name: '/tmp\\*'`, ensure your path is correctly configured, the default is `src`.
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
|
||||||
|
A big thank you to all the contributors over at <https://github.com/cdrx/docker-pyinstaller>, this action is just a modified version of their docker container, thank you!
|
||||||
|
|||||||
24
action.yml
24
action.yml
@@ -6,9 +6,25 @@ branding:
|
|||||||
color: 'blue'
|
color: 'blue'
|
||||||
inputs:
|
inputs:
|
||||||
path:
|
path:
|
||||||
description: 'Directory containing source code & .spec file (optional requirements.txt).'
|
description: 'Directory containing source code (optional requirements.txt).'
|
||||||
required: True
|
required: True
|
||||||
default: src/
|
default: src
|
||||||
|
pypi_url:
|
||||||
|
description: 'Specify a custom URL for PYPI'
|
||||||
|
required: False
|
||||||
|
default: https://pypi.python.org/
|
||||||
|
pypi_index_url:
|
||||||
|
description: 'Specify a custom URL for PYPI Index'
|
||||||
|
required: False
|
||||||
|
default: https://pypi.python.org/simple
|
||||||
|
spec:
|
||||||
|
description: 'Specify a file path for .spec file'
|
||||||
|
required: False
|
||||||
|
default: ""
|
||||||
|
requirements:
|
||||||
|
description: 'Specify a file path for requirements.txt file'
|
||||||
|
required: False
|
||||||
|
default: "requirements.txt"
|
||||||
outputs:
|
outputs:
|
||||||
output:
|
output:
|
||||||
description: 'The output of PyInstaller'
|
description: 'The output of PyInstaller'
|
||||||
@@ -18,3 +34,7 @@ runs:
|
|||||||
image: 'Dockerfile'
|
image: 'Dockerfile'
|
||||||
args:
|
args:
|
||||||
- ${{ inputs.path }}
|
- ${{ inputs.path }}
|
||||||
|
- ${{ inputs.pypi_url }}
|
||||||
|
- ${{ inputs.pypi_index_url }}
|
||||||
|
- ${{ inputs.spec }}
|
||||||
|
- ${{ inputs.requirements }}
|
||||||
|
|||||||
@@ -9,10 +9,18 @@ set -e
|
|||||||
# Allow the workdir to be set using an env var.
|
# Allow the workdir to be set using an env var.
|
||||||
# Useful for CI pipiles which use docker for their build steps
|
# Useful for CI pipiles which use docker for their build steps
|
||||||
# and don't allow that much flexibility to mount volumes
|
# and don't allow that much flexibility to mount volumes
|
||||||
ls
|
SRCDIR=$1
|
||||||
SRCDIR=/$1
|
|
||||||
|
PYPI_URL=$2
|
||||||
|
|
||||||
|
PYPI_INDEX_URL=$3
|
||||||
|
|
||||||
WORKDIR=${SRCDIR:-/src}
|
WORKDIR=${SRCDIR:-/src}
|
||||||
|
|
||||||
|
SPEC_FILE=${4:-*.spec}
|
||||||
|
|
||||||
|
python -m pip install --upgrade pip wheel setuptools
|
||||||
|
|
||||||
#
|
#
|
||||||
# In case the user specified a custom URL for PYPI, then use
|
# In case the user specified a custom URL for PYPI, then use
|
||||||
# that one, instead of the default one.
|
# that one, instead of the default one.
|
||||||
@@ -33,15 +41,22 @@ fi
|
|||||||
|
|
||||||
cd $WORKDIR
|
cd $WORKDIR
|
||||||
|
|
||||||
if [ -f requirements.txt ]; then
|
if [ -f $5 ]; then
|
||||||
pip install -r requirements.txt
|
pip install -r $5
|
||||||
fi # [ -f requirements.txt ]
|
fi # [ -f $5 ]
|
||||||
|
|
||||||
echo "$@"
|
|
||||||
|
|
||||||
if [[ "$@" == "" ]]; then
|
|
||||||
pyinstaller --clean -y --dist ./dist/windows --workpath /tmp *.spec
|
# if [[ "$@" == "" ]]; then
|
||||||
|
# pyinstaller --clean -y
|
||||||
|
# rd /s /q build
|
||||||
|
# rd /s /q __pycache__
|
||||||
|
pyinstaller --clean --onefile fw.py --distpath ./dist/windows --workpath /tmp
|
||||||
|
|
||||||
|
# rm fw.spec
|
||||||
|
# pyinstaller --onefile fw.py --distpath ./dist/windows --workpath /tmp
|
||||||
|
# pyinstaller --clean -F -y --dist ./dist/windows --workpath /tmp $SPEC_FILE
|
||||||
chown -R --reference=. ./dist/windows
|
chown -R --reference=. ./dist/windows
|
||||||
else
|
# else
|
||||||
sh -c "$@"
|
# sh -c "$@"
|
||||||
fi # [[ "$@" == "" ]]
|
# fi # [[ "$@" == "" ]]
|
||||||
|
|||||||
Reference in New Issue
Block a user