├── .github
└── workflows
│ ├── BuildAndroid.yml
│ ├── BuildPipelineNew.yml
│ ├── BuildPipelineUV.yml
│ ├── __BuildPipeline.yml_OFF
│ ├── __aubio.yml_OFF
│ ├── __tool.yml_OFF
│ └── test_android.yml
├── .gitignore
├── LICENSE
├── README.md
├── dev.bat
├── init.bat
├── install.bat
└── tools
├── Readme.md
├── cors.patch
├── linux
└── yzlinux.spec
├── mac
├── aubio-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl
├── aubio-0.5.0a0-cp39-cp39-macosx_10_9_x86_64.whl
├── libsamplerate-arm64.dylib
├── libsamplerate-x86-x64.dylib
├── mac-arm64.spec
├── mac.spec
├── numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
└── selfhosted.py
├── sentry.patch
├── sentry_android.patch
└── win
├── aubio-0.5.0a0-cp310-cp310-win_amd64.whl
├── aubio-0.5.0a0-cp312-cp312-win_amd64.whl
├── aubio-0.5.0a0-cp39-cp39-win_amd64.whl
├── hook-samplerate.py
├── install-yarn.bat
├── libportaudio64bit.dll
├── libsamplerate-32bit.dll
├── libsamplerate-64bit.dll
├── numpy-1.22.4+vanilla-cp310-cp310-win_amd64.whl
├── req.txt
├── version-bump.ps1
├── version-bump2.ps1
├── win-gh.spec
├── win-ghyz.spec
├── win.spec
└── yzwin.spec
/.github/workflows/BuildAndroid.yml:
--------------------------------------------------------------------------------
1 | name: LedFx BuildPipeline Android
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | fversion:
7 | description: 'Frontend Version'
8 | default: '106'
9 | required: false
10 | upload_url:
11 | description: 'Upload URL for release'
12 | required: false
13 | release:
14 | description: 'Create Release'
15 | default: 'Yes'
16 | required: false
17 | type: choice
18 | options:
19 | - 'Yes'
20 | - 'No'
21 | jobs:
22 | build:
23 | runs-on: ubuntu-22.04
24 | steps:
25 | - name: Checkout Android Builder
26 | uses: actions/checkout@v4
27 | with:
28 | repository: broccoliboy/ledfx-android
29 | - name: Checkout LedFx
30 | uses: actions/checkout@v4
31 | with:
32 | repository: ledfx/LedFx
33 | path: deps/ledfx
34 | - name: Checkout frontend
35 | uses: actions/checkout@v4
36 | with:
37 | repository: YeonV/LedFx-Frontend-v2
38 | token: ${{ secrets.GITHUB_TOKEN }}
39 | ref: main
40 | path: src3
41 | - name: Check out tools from GitHub
42 | uses: actions/checkout@v4
43 | with:
44 | repository: YeonV/LedFx-Builds
45 | token: ${{ secrets.GITHUB_TOKEN }}
46 | ref: main
47 | path: src2
48 |
49 | - name: Delete old frontend
50 | uses: JesseTG/rm@2fb8f3b8a0e41fc222e7943b63306c602feb187e
51 | with:
52 | path: ./deps/ledfx/ledfx_frontend
53 |
54 | - name: apply patches
55 | run: |
56 | cp ./src2/tools/cors.patch ./deps/ledfx/cors.patch
57 | cp ./src2/tools/sentry.patch ./deps/ledfx/sentry.patch
58 | cp ./src2/tools/sentry_android.patch ./sentry_android.patch
59 | git apply sentry_android.patch
60 | cd ./deps/ledfx
61 | git apply cors.patch
62 | git apply sentry.patch
63 | cd ..
64 | cd ..
65 |
66 | - name: Prepare version Bump for Android
67 | id: prepare_version
68 | run: |
69 | raw_fversion="${{ github.event.inputs.fversion }}" # e.g., "109-b20"
70 | patch_base=$(echo "$raw_fversion" | cut -d'-' -f1) # Extracts "109"
71 | beta_number_full=$(echo "$raw_fversion" | cut -d'-' -f2) # Extracts "b20"
72 | beta_number=$(echo "$beta_number_full" | sed 's/b//') # Extracts "20"
73 | padded_beta_number=$(printf "%03d" "$beta_number")
74 |
75 | android_numeric_patch_part="${patch_base}${padded_beta_number}" # "109" + "020" = "109020"
76 |
77 | echo "android_fversion_for_consts=$android_numeric_patch_part" >> $GITHUB_OUTPUT
78 |
79 | - name: Bump version to ${{ github.event.inputs.fversion }}
80 | continue-on-error: true
81 | run: |
82 | sed -i '0,/PROJECT_VERSION = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//PROJECT_VERSION = "\1.\2.${{ steps.prepare_version.outputs.android_fversion_for_consts }}"/' ./deps/ledfx/ledfx/consts.py
83 | new_version=$(sed -n 's/.*PROJECT_VERSION = "\([0-9]*\.[0-9]*\.[0-9]*\(-[a-z0-9]*\)*\)".*/\1/p' ./deps/ledfx/ledfx/consts.py)
84 | echo "action_state=$new_version" >> $GITHUB_ENV
85 |
86 | # - name: Get latest frontend
87 | # run: |
88 | # curl -L --max-redirs 10 -o ledfx_frontend_android.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_android.zip"
89 |
90 | # - name: Include new frontend
91 | # run: |
92 | # unzip -o -u ledfx_frontend_android.zip
93 | # cp -rf ./ledfx_frontend_android ./deps/ledfx/ledfx_frontend
94 | # ls ./deps/ledfx/ledfx_frontend
95 |
96 | - name: Set up Node.js
97 | uses: actions/setup-node@v4
98 | with:
99 | node-version: 20
100 | cache: 'yarn'
101 | cache-dependency-path: '**/yarn.lock'
102 |
103 | - name: Build frontend
104 | run: |
105 | cd src3
106 | yarn
107 | yarn buildandroid
108 | cd ..
109 |
110 | - name: Include new build frontend
111 | run: |
112 | cp -r ./src3/build ./deps/ledfx/ledfx_frontend
113 | ls ./deps/ledfx/ledfx_frontend
114 |
115 | - name: Setup python
116 | uses: actions/setup-python@v5
117 | with:
118 | architecture: x64
119 | python-version: 3.12
120 |
121 | - name: Setup Java 17 required by Gradle
122 | uses: actions/setup-java@v4
123 | with:
124 | distribution: 'temurin'
125 | java-version: '17'
126 |
127 | - name: Set JAVA_HOME
128 | run: |
129 | echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
130 |
131 | - name: Prepare virtual environment
132 | run: |
133 | python3 -m venv venv
134 | source venv/bin/activate
135 | echo "Using Python==$(python --version)"
136 |
137 | - name: Install and upgrade dependencies
138 | run: |
139 | sudo apt update
140 | sudo apt install -y \
141 | git \
142 | zip \
143 | unzip \
144 | openjdk-17-jdk \
145 | python3-pip \
146 | autoconf \
147 | automake \
148 | libtool \
149 | pkg-config \
150 | zlib1g-dev \
151 | libncurses5-dev \
152 | libncursesw5-dev \
153 | libtinfo5 \
154 | cmake \
155 | libffi-dev \
156 | libssl-dev
157 | export PATH=$PATH:~/.local/bin/
158 | python3 -m pip install --upgrade pip
159 | python3 -m pip install --upgrade git+https://github.com/kivy/buildozer
160 |
161 | - name: Build with Buildozer
162 | run: buildozer android debug
163 |
164 | - name: Upload artifacts
165 | uses: actions/upload-artifact@v4
166 | with:
167 | name: package
168 | path: ./bin/*.apk
169 |
170 | release:
171 | if: ${{ github.event.inputs.release == 'Yes' || github.event.inputs.release == 'yes' }}
172 | runs-on: ubuntu-22.04
173 | needs: build
174 | permissions:
175 | contents: write
176 | steps:
177 | - name: Download artifacts
178 | uses: actions/download-artifact@v4
179 | with:
180 | name: package
181 | path: ./bin
182 | - name: List Files
183 | run: ls -la ./bin
184 | - name: copy filename of apk to env
185 | run: |
186 | apk_file=$(ls ./bin/*.apk)
187 | echo "APK_FILE=$apk_file" >> $GITHUB_ENV
188 | echo "APK_FILE=${{ env.APK_FILE }}"
189 | - name: Upload To Release
190 | uses: YeonV/upload-release-asset@v1
191 | env:
192 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
193 | with:
194 | upload_url: ${{ github.event.inputs.upload_url }}
195 | asset_path: ${{ env.APK_FILE }}
196 | asset_name: LedFx_Android-2.0.${{ github.event.inputs.fversion }}.apk
197 | asset_content_type: application/vnd.android.package-archive
--------------------------------------------------------------------------------
/.github/workflows/BuildPipelineNew.yml:
--------------------------------------------------------------------------------
1 | name: BuildPipeline Old (<=2.0.105)
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | fversion:
7 | description: 'Frontend Version'
8 | default: '87'
9 | required: false
10 | portaudio:
11 | description: 'Build Portaudio'
12 | default: 'No'
13 | required: false
14 | type: choice
15 | options:
16 | - 'Yes'
17 | - 'No'
18 | release:
19 | description: 'Create Release'
20 | default: 'Yes'
21 | required: false
22 | type: choice
23 | options:
24 | - 'Yes'
25 | - 'No'
26 | macos:
27 | description: 'MacOS (intel)'
28 | default: true
29 | required: false
30 | type: boolean
31 | osxarm64gh:
32 | description: 'MacOS (silicon)'
33 | default: true
34 | required: false
35 | type: boolean
36 | osxarm64:
37 | description: 'MacOS (self-hosted)'
38 | default: false
39 | required: false
40 | type: boolean
41 | ubuntu:
42 | description: 'Ubuntu'
43 | default: true
44 | required: false
45 | type: boolean
46 | windows:
47 | description: 'Windows'
48 | default: true
49 | required: false
50 | type: boolean
51 | jobs:
52 | createrelease:
53 | name: ${{ github.event.inputs.release == 'Yes' && 'Create Release' || 'Prepare Frontend' }}
54 | runs-on: [ubuntu-latest]
55 | outputs:
56 | matrix: ${{ steps.set-matrix.outputs.matrix }}
57 | steps:
58 | - name: Get latest frontend and prepare matrix
59 | run: |
60 | curl -L --max-redirs 10 -o ledfx_frontend_v2.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_v2.zip"
61 |
62 | - name: Save Frontend for publish
63 | uses: actions/upload-artifact@v4
64 | with:
65 | name: ledfx_frontend_v2
66 | path: ledfx_frontend_v2.zip
67 | - name: Get Messages
68 | if: github.event.inputs.release == 'Yes'
69 | run: |
70 | unzip -p ledfx_frontend_v2.zip ledfx_frontend_v2/messages.md >message.md
71 | echo "## New LedFx binaries available:
72 |
73 | ### Core: -- Browser-Based
74 | ### Client: -- Desktop-App (needs a running Core)
75 | ### CC: -- Desktop-App (Core-integrated)
76 |
77 | ---
78 |
79 | ## More informations regarding Core, Client and CC:
80 |
81 | expand
82 |
83 | #### Core
84 | If you don't know where to start, get this, open an internet browser, go to https://localhost:8888/ and off you go.
85 | This is the server/backend that takes in audio, does the calculations and outputs blinking lights. Runs in the background on a Windows/Mac/Linux computer. You can then open the frontend in an internet browser, by going to https://localhost:8888/ on the same computer that is running the Core.
86 | You can also pull up the frontend on your smartphone (or any other computer on the same network) by finding out what local IP your computer running the Core uses (most likely something like this 192.168.1.XXX, or 192.168.0.XXX) and opening a Browser on your smartphone and going to eg. https://192.168.1.123:8888/
87 |
88 |
89 | #### Client
90 | This is a Desktop App that opens the frontend of LedFx in a window on your desktop.
91 | This app does NOT include the LedFx backend/server and cannot run LedFx by itself without the Core.
92 | This Client app is useful for connecting to a running Core on your network (or the same machine).
93 |
94 | ### CC (Client + Core = CC)
95 | This is the Client and Core integrated into one Desktop App.
96 | This Desktop App opens the Client frontend of LedFx in a window on your desktop AND runs the Core backend/server in the background.
97 | This is useful for people who want the whole LedFx experience in one nice and tidy package.
98 | With this, you can still connect to the backend server via a Client or browser.
99 |
100 |
101 |
102 | ---
103 |
104 | ## ⚠️ These builds are not signed (read this please):
105 |
106 | Mac-Users:
107 |
108 | #### Infos:
109 | Reports as damaged, because of unsiged.
110 | To fix it open Terminal and type in the following (with a SPACE at the end):
111 |
112 | sudo xattr -cr
113 |
114 | Then drag'n'drop the LedFx.app File into the terminal and hit enter -> it should ask for sudo password
115 |
116 | Now you can open the App normally, give microphone and network permission, and you can even drag it into your applications.
117 | Maybe at some point we might buy an apple dev-license for 99€/year, then the voodoo would not be needed anymore.
118 |
119 |
120 |
121 |
122 | Win-Users:
123 |
124 | #### Infos:
125 | Reports as unsave, because of unsiged.
126 |
127 | Maybe at some point we might buy a microsoft dev-license
128 |
129 |
130 | " >> ./messages.md
131 |
132 | - uses: actions/checkout@v4
133 | if: github.event.inputs.release == 'Yes'
134 | with:
135 | repository: YeonV/LedFx-Frontend-v2
136 | ref: main
137 | path: frontend
138 | fetch-depth: 0
139 |
140 | - name: Get frontend Changelog
141 | if: github.event.inputs.release == 'Yes'
142 | run: |
143 | cd frontend
144 | echo "
145 | ### Frontend-Changes:
146 | Expand
147 |
148 | " >> ../messages.md
149 | git log --pretty=format:"+ %s [-blue.svg?logo=github&logoColor=white)](https://github.com/LedFx/LedFx/commit/%h)" $(git describe --tags --abbrev=0 @^)..@ | grep -v -E '(cleanup)' | awk '{ sub(/\[\[!\]\]/, ""); msg = substr($0, 1, index($0, "[!") - 1); if (length(msg) >= 5 && !seen[msg]++) { print $0 } }' | awk '{ while (match($0, /https:\/\/img\.shields\.io\/badge\/by-[^"]*-blue\.svg\?logo=github&logoColor=white/)) { url = substr($0, RSTART, RLENGTH); gsub(" ", "_", url); gsub("-", "_", url); gsub("by_", "by-", url); gsub("_blue", "-blue", url); printf "%s%s", substr($0, 1, RSTART - 1), url; $0 = substr($0, RSTART + RLENGTH) } gsub(" ", "_", $0); print }' >> ../messages.md
150 | echo "
151 |
152 |
153 | " >> ../messages.md
154 | cat ../messages.md
155 | - uses: actions/checkout@v4
156 | if: github.event.inputs.release == 'Yes'
157 | with:
158 | repository: LedFx/LedFx
159 | ref: main
160 | path: backend
161 | fetch-depth: 0
162 |
163 | - name: Get Backend Changelog
164 | if: github.event.inputs.release == 'Yes'
165 | run: |
166 | cd backend
167 | echo "
168 | ### Backend Changes
169 | Expand
170 |
171 | " >> ../messages.md
172 | git log --pretty=format:"+ %s [-blue.svg?logo=github&logoColor=white)](https://github.com/LedFx/LedFx/commit/%h)" $(git describe --tags --abbrev=0 @^)..@ | grep -v -E '(cleanup)' | awk '{ sub(/\[\[!\]\]/, ""); msg = substr($0, 1, index($0, "[!") - 1); if (length(msg) >= 5 && !seen[msg]++) { print $0 } }' | awk '{ while (match($0, /https:\/\/img\.shields\.io\/badge\/by-[^"]*-blue\.svg\?logo=github&logoColor=white/)) { url = substr($0, RSTART, RLENGTH); gsub(" ", "_", url); gsub("-", "_", url); gsub("by_", "by-", url); gsub("_blue", "-blue", url); printf "%s%s", substr($0, 1, RSTART - 1), url; $0 = substr($0, RSTART + RLENGTH) } gsub(" ", "_", $0); print }' >> ../messages.md
173 | echo "
174 |
175 |
176 | " >> ../messages.md
177 | cat ../messages.md
178 | - name: Create Release
179 | if: github.event.inputs.release == 'Yes'
180 | id: create_release
181 | uses: actions/create-release@v1
182 | env:
183 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
184 | with:
185 | tag_name: v${{ env.action_state || '2.0' }}.${{ github.event.inputs.fversion }}
186 | release_name: Release v${{ env.action_state || '2.0'}}.${{ github.event.inputs.fversion }}
187 | body_path: ./messages.md
188 | draft: false
189 | prerelease: true
190 | - name: Output Release URL File
191 | if: github.event.inputs.release == 'Yes'
192 | run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
193 | - name: Save Release URL File for publish
194 | if: github.event.inputs.release == 'Yes'
195 | uses: actions/upload-artifact@v4
196 | with:
197 | name: release_url
198 | path: release_url.txt
199 | - name: Check Inputs and Prepare Matrix
200 | id: set-matrix
201 | run: |
202 | echo windows: ${{ github.event.inputs.windows }}
203 | echo ubuntu: ${{ github.event.inputs.ubuntu }}
204 | echo macos: ${{ github.event.inputs.macos }}
205 |
206 | os_list=()
207 | if [ "${{ github.event.inputs.windows }}" = "true" ]; then
208 | os_list+=('windows-latest')
209 | fi
210 | if [ "${{ github.event.inputs.ubuntu }}" = "true" ]; then
211 | os_list+=('ubuntu-latest')
212 | fi
213 | if [ "${{ github.event.inputs.macos }}" = "true" ]; then
214 | os_list+=('macos-13')
215 | fi
216 | if [ "${{ github.event.inputs.osxarm64 }}" = "true" ]; then
217 | os_list+=('osx-arm64')
218 | fi
219 | if [ "${{ github.event.inputs.osxarm64gh }}" = "true" ]; then
220 | os_list+=('macos-latest')
221 | fi
222 |
223 | matrix_json="{\"os\": ["
224 | for os in "${os_list[@]}"; do
225 | matrix_json+="\"$os\","
226 | done
227 | matrix_json=${matrix_json%?} # remove trailing comma
228 | matrix_json+="], \"python-version\": [\"3.12.x\"]}"
229 |
230 | echo "$matrix_json" > matrix.json
231 | echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
232 |
233 | build:
234 | needs: createrelease
235 | continue-on-error: true
236 | runs-on: ${{ matrix.os }}
237 | defaults:
238 | run:
239 | shell: bash -x {0}
240 | strategy:
241 | fail-fast: false
242 | matrix: ${{fromJson(needs.createrelease.outputs.matrix)}}
243 | steps:
244 | - name: Check out code from GitHub
245 | uses: actions/checkout@v4
246 | with:
247 | repository: LedFx/LedFx
248 | ref: main
249 | path: src
250 |
251 | - uses: actions/checkout@v4
252 | name: Check out tools from GitHub
253 | with:
254 | repository: YeonV/LedFx-Builds
255 | token: ${{ secrets.GITHUB_TOKEN }}
256 | ref: main
257 | path: src2
258 | - name: Delete old frontend
259 | uses: JesseTG/rm@2fb8f3b8a0e41fc222e7943b63306c602feb187e
260 | with:
261 | path: ./src/ledfx_frontend
262 | - name: get git version
263 | run: |
264 | cp ./src2/tools/cors.patch ./src/cors.patch
265 | cd src
266 | git rev-parse HEAD >> ledfx/git_version
267 | git apply cors.patch
268 | cd ..
269 | - name: Get latest frontend
270 | run: |
271 | curl -L --max-redirs 10 -o ledfx_frontend_v2.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_v2.zip"
272 | - name: Include new frontend
273 | if: "startsWith(matrix.OS, 'osx-arm64')"
274 | run: |
275 | cd ./ledfx_frontend_v2
276 | ls
277 | unzip -o -u ledfx_frontend_v2.zip
278 | cd ..
279 | cp -rf ./ledfx_frontend_v2 ./src/ledfx_frontend
280 | ls ./src/ledfx_frontend
281 |
282 | - name: Include new frontend win
283 | if: "!startsWith(matrix.OS, 'osx-arm64')"
284 | run: |
285 | unzip ledfx_frontend_v2.zip
286 | cp -r ./ledfx_frontend_v2 ./src/ledfx_frontend
287 | ls ./src/ledfx_frontend
288 |
289 | - name: Disable Sentry
290 | if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos')"
291 | run: |
292 | sed -i '/if args.offline_mode is False:/d' ./src/ledfx/__main__.py
293 | sed -i '/setup_sentry()/d' ./src/ledfx/__main__.py
294 |
295 | - name: Disable Sentry Osx
296 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos')"
297 | run: |
298 | sed -i '' '/if args.offline_mode is False:/d' ./src/ledfx/__main__.py
299 | sed -i '' '/setup_sentry()/d' ./src/ledfx/__main__.py
300 |
301 | - name: Set up Python
302 | if: "!startsWith(matrix.OS, 'osx-arm64')"
303 | uses: actions/setup-python@v5
304 | with:
305 | python-version: ${{ matrix.python-version }}
306 |
307 | - name: Install build dependencies for osx-arm64
308 | if: "startsWith(matrix.OS, 'osx-arm64')"
309 | run: |
310 | arch -arm64 brew install portaudio
311 | arch -arm64 brew install mbedtls@2
312 | arch -arm64 brew install libsamplerate
313 | arch -arm64 brew install poetry
314 |
315 | - name: Install build dependencies for osx
316 | if: "startsWith(matrix.OS, 'macos-latest')"
317 | run: |
318 | brew install portaudio
319 | brew install mbedtls@2
320 | brew install libsamplerate
321 |
322 | - name: Setup mbedtls path for osx-arm64
323 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
324 | run: |
325 | echo "/opt/homebrew/opt/mbedtls@2/bin" >> $GITHUB_PATH
326 | echo "LDFLAGS=-L/opt/homebrew/opt/mbedtls@2/lib" >> $GITHUB_ENV
327 | echo "CPPFLAGS=-I/opt/homebrew/opt/mbedtls@2/include" >> $GITHUB_ENV
328 | echo "PKG_CONFIG_PATH=/opt/homebrew/opt/mbedtls@2/lib/pkgconfig" >> $GITHUB_ENV
329 |
330 | - name: Get full Python version
331 | if: "!startsWith(matrix.OS, 'osx-arm64')"
332 | id: full-python-version
333 | run: echo version=$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))") >> $GITHUB_OUTPUT
334 |
335 | - name: Check Python version osx-arm64
336 | if: "startsWith(matrix.OS, 'osx-arm64')"
337 | run: |
338 | arch -arm64 poetry --version
339 |
340 | - name: Install poetry
341 | if: "!startsWith(matrix.OS, 'osx-arm64')"
342 | run: |
343 | curl -sSL https://install.python-poetry.org | python - -y
344 |
345 | - name: Update Path for Windows
346 | if: "startsWith(matrix.OS, 'win')"
347 | run: echo "$APPDATA\Python\Scripts" >> $GITHUB_PATH
348 |
349 | - name: Update Path for MacOS
350 | if: "startsWith(matrix.OS, 'macos')"
351 | run: echo "$HOME/.local/bin:$PATH" >> $GITHUB_PATH
352 |
353 | - name: Enable long paths for git on Windows
354 | if: "startsWith(matrix.OS, 'win')"
355 | run: git config --system core.longpaths true
356 |
357 | - name: Configure poetry
358 | if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos-latest')"
359 | run: poetry config virtualenvs.in-project true
360 |
361 | - name: Configure poetry osx-arm64
362 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
363 | run: |
364 | cd src
365 | arch -arm64 poetry config virtualenvs.in-project true
366 | arch -arm64 poetry env info
367 | cd ..
368 |
369 | - name: Get pip cache dir
370 | if: "!startsWith(matrix.OS, 'osx-arm64')"
371 | id: pip-cache
372 | run: |
373 | echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
374 | echo "dir=$(pip cache dir)"
375 | - name: pip cache
376 | if: "!startsWith(matrix.OS, 'osx-arm64')"
377 | uses: actions/cache@v4
378 | with:
379 | path: ${{ steps.pip-cache.outputs.dir }}
380 | key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }}
381 | restore-keys: |
382 | ${{ runner.os }}-pip-
383 |
384 | - name: Bump version
385 | if: "startsWith(matrix.OS, 'win') || startsWith(matrix.OS, 'ubu')"
386 | run: |
387 | sed -i '0,/PROJECT_VERSION = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//PROJECT_VERSION = "\1.\2.${{ github.event.inputs.fversion }}"/' ./src/ledfx/consts.py
388 | sed -i '0,/version = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//version = "\1.\2.${{ github.event.inputs.fversion }}"/' ./src/pyproject.toml
389 | new_version=$(sed -n 's/.*PROJECT_VERSION = "\([0-9]*\.[0-9]*\.[0-9]*\(-[a-z0-9]*\)*\)".*/\1/p' ./src/ledfx/consts.py)
390 | echo "action_state=$new_version" >> $GITHUB_ENV
391 | BINARY_NAME=LedFx_core-
392 | echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV
393 |
394 | - name: Bump version osx
395 | if: "!startsWith(matrix.OS, 'win') && !startsWith(matrix.OS, 'ubu')"
396 | run: |
397 | brew install gnu-sed
398 | cd src
399 | gsed -i '0,/PROJECT_VERSION = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//PROJECT_VERSION = "\1.\2.${{ github.event.inputs.fversion }}"/' ./ledfx/consts.py
400 | gsed -i '0,/version = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//version = "\1.\2.${{ github.event.inputs.fversion }}"/' ./pyproject.toml
401 | new_version=$(gsed -n 's/.*PROJECT_VERSION = "\([0-9]*\.[0-9]*\.[0-9]*\(-[a-z0-9]*\)*\)".*/\1/p' ./ledfx/consts.py)
402 | echo "action_state=$new_version" >> $GITHUB_ENV
403 | BINARY_NAME=LedFx_core-
404 | echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV
405 |
406 | # - uses: stefanzweifel/git-auto-commit-action@v4
407 | # continue-on-error: true
408 | # if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes'
409 | # with:
410 | # commit_message: "[new-frontend] v2.0.${{ github.event.inputs.fversion }}"
411 | # push_options: --force
412 | # repository: ./src
413 | # token: ${{ secrets.LEDFX_TOKEN }}
414 | # tagging_message: 'v2.0.${{ github.event.inputs.fversion }}'
415 | # - name: Create Pull Request
416 | # continue-on-error: true
417 | # if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes'
418 | # uses: peter-evans/create-pull-request@v4
419 | # with:
420 | # path: ./src
421 | # token: ${{ secrets.LEDFX_TOKEN }}
422 | # delete-branch: true
423 | # branch: new-frontend
424 | # commit-message: '[new-frontend] v2.0.${{ github.event.inputs.fversion }}'
425 | # title: Release v2.0.${{ github.event.inputs.fversion }}
426 | # body: New version incoming!
427 |
428 | - name: Check lock file
429 | if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos-latest')"
430 | run: |
431 | cd src
432 | poetry check --lock
433 |
434 | - name: Check lock file osx-arm64
435 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
436 | run: |
437 | cd src
438 | arch -arm64 poetry check --lock
439 |
440 | # - name: Build a binary wheel
441 | # if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos-latest')"
442 | # run: |
443 | # cd src
444 | # poetry install --extras hue
445 | # poetry build
446 |
447 | # - name: Build a binary wheel osx-arm64
448 | # if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
449 | # run: |
450 | # cd src
451 | # export PATH="/opt/homebrew/opt/mbedtls@2/bin:$PATH"
452 | # export LDFLAGS="-L/opt/homebrew/opt/mbedtls@2/lib"
453 | # export CPPFLAGS="-I/opt/homebrew/opt/mbedtls@2/include"
454 | # export CFLAGS="-Wno-incompatible-function-pointer-types"
455 | # arch -arm64 poetry install --extras hue
456 | # arch -arm64 poetry build
457 |
458 | - name: Install LedFx
459 | if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos-latest')"
460 | run: |
461 | cd src
462 | export PATH="/opt/homebrew/opt/mbedtls@2/bin:$PATH"
463 | export LDFLAGS="-L/opt/homebrew/opt/mbedtls@2/lib"
464 | export CPPFLAGS="-I/opt/homebrew/opt/mbedtls@2/include"
465 | export CFLAGS="-Wno-incompatible-function-pointer-types"
466 | poetry install --extras hue
467 | poetry install --with dev
468 | poetry env info
469 | echo "poetry_venv_location=$(poetry env info --path)" >> $GITHUB_ENV
470 | poetry run ledfx-loopback-install
471 | poetry run pip install pyinstaller
472 | poetry run pip install samplerate==0.2.1
473 |
474 | - name: Install LedFx osx-arm64
475 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
476 | run: |
477 | cd src
478 | export PATH="/opt/homebrew/opt/mbedtls@2/bin:$PATH"
479 | export LDFLAGS="-L/opt/homebrew/opt/mbedtls@2/lib"
480 | export CPPFLAGS="-I/opt/homebrew/opt/mbedtls@2/include"
481 | export CFLAGS="-Wno-incompatible-function-pointer-types"
482 | arch -arm64 poetry install --extras hue
483 | arch -arm64 poetry install --with dev
484 | arch -arm64 poetry run pip install samplerate==0.2.1
485 |
486 | - name: Portaudio dependency for windows
487 | if: startsWith(runner.os, 'Windows') && github.event.inputs.portaudio == 'true'
488 | uses: msys2/setup-msys2@v2
489 | with:
490 | msystem: MINGW64
491 | update: true
492 | install: |
493 | git
494 | zip
495 | unzip
496 | base-devel
497 | mingw-w64-x86_64-gcc
498 | mingw-w64-x86_64-cmake
499 | mingw-w64-x86_64-ninja
500 |
501 | - name: Build portaudio
502 | if: startsWith(runner.os, 'Windows') && github.event.inputs.portaudio == 'true'
503 | shell: msys2 {0}
504 | run: |
505 | export CYGPATH=$(cygpath -m /)
506 | git clone https://github.com/portaudio/portaudio
507 | cmake -B portaudio/.build -S portaudio -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} -DPA_BUILD_SHARED_LIBS=on -DCMAKE_BUILD_TYPE=Release -DPA_USE_ASIO=on
508 | cmake --build portaudio/.build/
509 | cmake --install portaudio/.build/
510 | rm -rf portaudio
511 | mv $CYGPATH/mingw64/bin/libportaudio.dll $poetry_venv_location/lib/site-packages/_sounddevice_data/portaudio-binaries/libportaudio64bit.dll
512 |
513 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }}
514 | if: startsWith(runner.os, 'Windows')
515 | run: |
516 | # mv src2/tools/win/hook-samplerate.py $poetry_venv_location/lib/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks/hook-samplerate.py
517 | mv src2/tools/win/win.spec src/win.spec
518 | cd src
519 | poetry run pip install samplerate==0.2.1
520 | poetry run pyinstaller win.spec
521 | mv dist/LedFx $BINARY_NAME-v$action_state
522 | 7z.exe a -tzip $BINARY_NAME-v$action_state--win.zip $BINARY_NAME-v$action_state "-mx5" "-xr!.git" "-xr!.github"
523 |
524 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} osx-x64
525 | if: "startsWith(matrix.OS, 'macos-13')"
526 | run: |
527 | mv src2/tools/mac/mac.spec src/mac.spec
528 | cd src
529 | # sed -i '' -e "s/2.0.51/\${{ env.action_state }}/g" mac.spec
530 | poetry run pip install pyinstaller
531 | poetry run pip install samplerate==0.2.1
532 | poetry run pyinstaller mac.spec
533 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mkdir -p ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/ && cp -rf ../../src2/tools/mac/libsamplerate-x86-x64.dylib ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/libsamplerate.dylib && mv ./LedFx_v2 ./LedFx/LedFx.app
534 | cd ..
535 | rm -rf ./LedFx.app
536 | mv ./dist/LedFx/LedFx.app ./LedFx.app
537 | xattr -cr ./LedFx.app
538 | tar -czf my_files.tar ./LedFx.app
539 |
540 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} osx-arm64
541 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
542 | run: |
543 | mv src2/tools/mac/mac-arm64.spec src/mac.spec
544 | cd src
545 | # sed -i '' -e "s/2.0.51/\${{ env.action_state }}/g" mac.spec
546 | arch -arm64 poetry run pip install pyinstaller
547 | arch -arm64 poetry run pyinstaller mac.spec
548 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mkdir -p ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/ && cp -rf ../../src2/tools/mac/libsamplerate-arm64.dylib ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/libsamplerate.dylib && mv ./LedFx_v2 ./LedFx/LedFx.app
549 | cd ..
550 | rm -rf ./LedFx.app
551 | mv ./dist/LedFx/LedFx.app ./LedFx.app
552 | tar -czf my_files.tar ./LedFx.app
553 |
554 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} linux
555 | if: "startsWith(matrix.OS, 'ubuntu')"
556 | run: |
557 | sudo apt install libatlas3-base \
558 | libavformat58 \
559 | portaudio19-dev \
560 | pulseaudio
561 | mv src2/tools/linux/yzlinux.spec src/linux.spec
562 | cd src
563 | poetry run pip install pyinstaller
564 | poetry run pip install samplerate==0.2.1
565 | poetry run pip install mido
566 | poetry run pyinstaller linux.spec
567 | cd dist && mkdir LedFx-linux && mv ./LedFx ./LedFx-linux/LedFx && cd ..
568 | cd ..
569 | cd src/dist && ls && tar -czf LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz ./LedFx-linux
570 |
571 | - name: Load Release URL File from release job
572 | if: github.event.inputs.release == 'Yes'
573 | uses: actions/download-artifact@v4
574 | with:
575 | name: release_url
576 | - name: Get Release File Name & Upload URL
577 | if: github.event.inputs.release == 'Yes'
578 | id: get_release_info
579 | shell: bash
580 | run: |
581 | value=`cat release_url.txt`
582 | echo "upload_url=$value" >> $GITHUB_OUTPUT
583 | - name: Load Frontend Build File from release job
584 | if: startsWith(runner.os, 'Windows')
585 | uses: actions/download-artifact@v4
586 | with:
587 | name: ledfx_frontend_v2
588 | - name: Upload Frontend Build to Release
589 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes'
590 | id: upload-release-asset-2
591 | uses: actions/upload-release-asset@v1
592 | env:
593 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
594 | with:
595 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
596 | asset_path: ./ledfx_frontend_v2.zip
597 | asset_name: ledfx_frontend-v${{ env.action_state }}.zip
598 | asset_content_type: application/zip
599 |
600 | - name: Upload Frontend Build to Workflow
601 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No'
602 | uses: actions/upload-artifact@v4
603 | with:
604 | name: ledfx_frontend-v${{ env.action_state }}.zip
605 | path: ledfx_frontend_v2/ledfx_frontend_v2.zip
606 |
607 | - name: Upload Core Win To Release
608 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
609 | uses: YeonV/upload-release-asset@v1
610 | env:
611 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
612 | with:
613 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
614 | asset_path: src/${{ env.BINARY_NAME }}-v${{ env.action_state }}--win.zip
615 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win.zip
616 | asset_content_type: application/zip
617 |
618 | - name: Upload Core Win To Workflow
619 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
620 | uses: actions/upload-artifact@v4
621 | with:
622 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win.zip
623 | path: src/${{ env.BINARY_NAME }}-v${{ env.action_state }}--win.zip
624 |
625 | - name: Upload Core Osx-arm64 To Release
626 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64gh == 'true'
627 | uses: YeonV/upload-release-asset@v1
628 | env:
629 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
630 | with:
631 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
632 | asset_path: src/my_files.tar
633 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64.zip
634 | asset_content_type: application/zip
635 |
636 | - name: Upload Core Osx-arm64 to Workflow
637 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64gh == 'true'
638 | uses: actions/upload-artifact@v4
639 | with:
640 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64.zip
641 | path: src/my_files.tar
642 |
643 | - name: Upload Core Osx-arm64-b To Release
644 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64 == 'true'
645 | uses: YeonV/upload-release-asset@v1
646 | env:
647 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
648 | with:
649 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
650 | asset_path: src/my_files.tar
651 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64-b.zip
652 | asset_content_type: application/zip
653 |
654 | - name: Upload Core Osx-arm64-b to Workflow
655 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64 == 'true'
656 | uses: actions/upload-artifact@v4
657 | with:
658 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64-b.zip
659 | path: src/my_files.tar
660 |
661 | - name: Upload Core Osx To Release
662 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'Yes' && github.event.inputs.macos == 'true'
663 | uses: YeonV/upload-release-asset@v1
664 | env:
665 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
666 | with:
667 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
668 | asset_path: src/my_files.tar
669 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-x64.zip
670 | asset_content_type: application/zip
671 |
672 | - name: Upload Core Osx to Workflow
673 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'No' && github.event.inputs.macos == 'true'
674 | uses: actions/upload-artifact@v4
675 | with:
676 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-x64.zip
677 | path: src/my_files.tar
678 |
679 | - name: Build ${{ env.BINARY_NAME }} portable ${{ env.action_state }}
680 | if: startsWith(runner.os, 'Windows')
681 | run: |
682 | cp src2/tools/win/yzwin.spec ./src/win-portable.spec
683 | cd src
684 | poetry run pyinstaller win-portable.spec
685 | ls dist/
686 | mv dist/LedFx.exe dist/$BINARY_NAME-v$action_state--win-portable.exe
687 |
688 | - name: Upload Core Linux To Release
689 | if: startsWith(matrix.os, 'ubuntu') && github.event.inputs.release == 'Yes' && github.event.inputs.ubuntu == 'true'
690 | continue-on-error: true
691 | uses: YeonV/upload-release-asset@v1
692 | env:
693 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
694 | with:
695 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
696 | asset_path: src/dist/LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz
697 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--linux-x64.tar.gz
698 | asset_content_type: application/gzip
699 |
700 | - name: Upload Core Linux To Worflow
701 | if: startsWith(matrix.os, 'ubuntu') && github.event.inputs.release == 'No' && github.event.inputs.ubuntu == 'true'
702 | uses: actions/upload-artifact@v4
703 | with:
704 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--linux-x64.tar.gz
705 | path: src/dist/LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz
706 |
707 | - name: Upload Core Win Portable To Release
708 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
709 | uses: YeonV/upload-release-asset@v1
710 | env:
711 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
712 | with:
713 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
714 | asset_path: src\dist\${{ env.BINARY_NAME }}-v${{ env.action_state }}--win-portable.exe
715 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win-portable.exe
716 | asset_content_type: application/vnd.microsoft.portable-executable
717 |
718 | - name: Upload Core Win Portable To Worflow
719 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
720 | uses: actions/upload-artifact@v4
721 | with:
722 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win-portable.exe
723 | path: src\dist\${{ env.BINARY_NAME }}-v${{ env.action_state }}--win-portable.exe
724 |
725 | # CLIENTS
726 | - uses: actions/checkout@v4
727 | with:
728 | repository: YeonV/LedFx-Frontend-v2
729 | ref: main
730 | path: frontend
731 |
732 | - name: Move Core-win
733 | continue-on-error: true
734 | if: startsWith(runner.os, 'Windows') && github.event.inputs.windows == 'true'
735 | run: |
736 | ls ./src
737 | echo ------------
738 | ls ./src/LedFx_core--v${{ env.action_state }}
739 | echo ------------
740 | ls ./src/dist
741 | echo ------------
742 | cp -r ./src/LedFx_core--v${{ env.action_state }}/ ./frontend/extraResources/LedFx/ &&
743 | ls ./frontend/extraResources/LedFx
744 |
745 | - name: Move Core-osx
746 | if: (startsWith(matrix.OS, 'osx') || startsWith(matrix.OS, 'mac')) && github.event.inputs.macos == 'true'
747 | continue-on-error: true
748 | run: |
749 | cp -r ./src/LedFx.app ./frontend/extraResources/LedFx_core.app
750 | echo ------------
751 | ls ./frontend/extraResources
752 |
753 | - name: Move Core Linux
754 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.ubuntu == 'true'
755 | continue-on-error: true
756 | run: |
757 | ls
758 | cp -r ./src/dist/LedFx-linux/LedFx ./frontend/extraResources/LedFx
759 | echo ------------
760 | ls ./frontend/extraResources
761 |
762 | - name: Set up Node.js
763 | if: "!startsWith(matrix.OS, 'osx-arm64') && !startsWith(matrix.OS, 'macos-latest')"
764 | uses: actions/setup-node@v4
765 | with:
766 | node-version: 20
767 | # architecture: ${{ matrix.arch }}
768 | # cache: 'yarn'
769 | # cache-dependency-path: '**/yarn.lock'
770 | - name: Set up Node.js osx-arm64
771 | if: "startsWith(matrix.OS, 'osx-arm64') || startsWith(matrix.OS, 'macos-latest')"
772 | uses: actions/setup-node@v4
773 | with:
774 | node-version: 20
775 | architecture: arm64
776 | # cache: 'yarn'
777 | # cache-dependency-path: '**/yarn.lock'
778 | - name: Disable CI checks
779 | run: echo "CI=false" >> $GITHUB_ENV
780 | - name: Building Clients
781 | run: |
782 | cd frontend && npm config set legacy-peer-deps true && npm remove electron -g && npm remove electron-builder -g && npm i -D electron electron-builder && npm install --force && npm install postcss && npm run distall
783 | env:
784 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
785 |
786 | - name: Load Release URL File from release job
787 | if: github.event.inputs.release == 'Yes'
788 | uses: actions/download-artifact@v4
789 | with:
790 | name: release_url
791 |
792 | - name: Upload Win-Portable to Release
793 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
794 | id: upload-release-asset-portable
795 | uses: YeonV/upload-release-asset@v1
796 | env:
797 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
798 | with:
799 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
800 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-portable.exe
801 | asset_name: LedFx_client-v${{ env.action_state }}--win-portable.exe
802 | asset_content_type: application/vnd.microsoft.portable-executable
803 | - name: Upload Win-Portable to Workflow
804 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
805 | uses: actions/upload-artifact@v4
806 | with:
807 | name: LedFx_client-v${{ env.action_state }}--win-portable.exe
808 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-portable.exe
809 |
810 | - name: Upload Win-Setup to Release
811 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
812 | id: upload-release-asset-setup
813 | uses: YeonV/upload-release-asset@v1
814 | env:
815 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
816 | with:
817 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
818 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-setup.exe
819 | asset_name: LedFx_client-v${{ env.action_state }}--win-setup.exe
820 | asset_content_type: application/vnd.microsoft.portable-executable
821 | - name: Upload Win-Setup to Workflow
822 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
823 | uses: actions/upload-artifact@v4
824 | with:
825 | name: LedFx_client-v${{ env.action_state }}--win-setup.exe
826 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-setup.exe
827 | - name: Upload Win-Zip to Release
828 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
829 | id: upload-release-asset-zip
830 | uses: YeonV/upload-release-asset@v1
831 | env:
832 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
833 | with:
834 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
835 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win.zip
836 | asset_name: LedFx_client-v${{ env.action_state }}--win.zip
837 | asset_content_type: application/zip
838 | - name: Upload Win-Zip to Workflow
839 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
840 | uses: actions/upload-artifact@v4
841 | with:
842 | name: LedFx_client-v${{ env.action_state }}--win.zip
843 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win.zip
844 |
845 | - name: Upload Win-CC to Release
846 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes' && github.event.inputs.windows == 'true'
847 | id: upload-release-asset-cc
848 | uses: YeonV/upload-release-asset@v1
849 | env:
850 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
851 | with:
852 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
853 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--win-setup.exe
854 | asset_name: LedFx_CC-v${{ env.action_state }}--win-setup.exe
855 | asset_content_type: application/vnd.microsoft.portable-executable
856 | - name: Upload Win-CC to Workflow
857 | if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No' && github.event.inputs.windows == 'true'
858 | uses: actions/upload-artifact@v4
859 | with:
860 | name: LedFx_CC-v${{ env.action_state }}--win-setup.exe
861 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--win-setup.exe
862 |
863 | - name: Upload OSX-arm64-Client dmg to Release
864 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64gh == 'true'
865 | uses: YeonV/upload-release-asset@v1
866 | env:
867 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
868 | with:
869 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
870 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
871 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
872 | asset_content_type: application/octet-stream
873 |
874 | - name: Upload OSX-arm64-b-Client dmg to Release
875 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64 == 'true'
876 | uses: YeonV/upload-release-asset@v1
877 | env:
878 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
879 | with:
880 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
881 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
882 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64-b.dmg
883 | asset_content_type: application/octet-stream
884 |
885 | - name: Upload OSX-arm64-Client dmg to Workflow
886 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64gh == 'true'
887 | uses: actions/upload-artifact@v4
888 | with:
889 | name: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
890 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
891 |
892 | - name: Upload OSX-arm64-b-Client dmg to Workflow
893 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64 == 'true'
894 | uses: actions/upload-artifact@v4
895 | with:
896 | name: LedFx_client-v${{ env.action_state }}--mac-arm64-b.dmg
897 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
898 |
899 | - name: Upload OSX-arm64-Client zip to Release
900 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64gh == 'true'
901 | uses: YeonV/upload-release-asset@v1
902 | env:
903 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
904 | with:
905 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
906 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
907 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64.zip
908 | asset_content_type: application/zip
909 |
910 | - name: Upload OSX-arm64-b-Client zip to Release
911 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64 == 'true'
912 | uses: YeonV/upload-release-asset@v1
913 | env:
914 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
915 | with:
916 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
917 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
918 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64-b.zip
919 | asset_content_type: application/zip
920 |
921 | - name: Upload OSX-arm64-Client zip to Workflow
922 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64gh == 'true'
923 | uses: actions/upload-artifact@v4
924 | with:
925 | name: LedFx_client-v${{ env.action_state }}--mac-arm64.zip
926 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
927 |
928 | - name: Upload OSX-arm64-b-Client zip to Workflow
929 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64 == 'true'
930 | uses: actions/upload-artifact@v4
931 | with:
932 | name: LedFx_client-v${{ env.action_state }}--mac-arm64-b.zip
933 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
934 |
935 | - name: Upload OSX-arm64-CC dmg to Release
936 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64gh == 'true'
937 | uses: YeonV/upload-release-asset@v1
938 | env:
939 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
940 | with:
941 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
942 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
943 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
944 | asset_content_type: application/octet-stream
945 |
946 | - name: Upload OSX-arm64-CC-b dmg to Release
947 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64 == 'true'
948 | uses: YeonV/upload-release-asset@v1
949 | env:
950 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
951 | with:
952 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
953 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
954 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64-b.dmg
955 | asset_content_type: application/octet-stream
956 |
957 | - name: Upload OSX-arm64-CC dmg to Workflow
958 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64gh == 'true'
959 | uses: actions/upload-artifact@v4
960 | with:
961 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
962 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
963 |
964 | - name: Upload OSX-arm64-CC-b dmg to Workflow
965 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64 == 'true'
966 | uses: actions/upload-artifact@v4
967 | with:
968 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64-b.dmg
969 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
970 |
971 | - name: Upload OSX-arm64-CC zip to Release
972 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64gh == 'true'
973 | uses: YeonV/upload-release-asset@v1
974 | env:
975 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
976 | with:
977 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
978 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
979 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
980 | asset_content_type: application/zip
981 |
982 | - name: Upload OSX-arm64-CC-b zip to Release
983 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'Yes' && github.event.inputs.osxarm64 == 'true'
984 | uses: YeonV/upload-release-asset@v1
985 | env:
986 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
987 | with:
988 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
989 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
990 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64-b.zip
991 | asset_content_type: application/zip
992 |
993 | - name: Upload OSX-arm64-CC zip to Workflow
994 | if: startsWith(matrix.OS, 'macos-latest') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64gh == 'true'
995 | uses: actions/upload-artifact@v4
996 | with:
997 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
998 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
999 |
1000 | - name: Upload OSX-arm64-CC-b zip to Workflow
1001 | if: startsWith(matrix.OS, 'osx-arm64') && github.event.inputs.release == 'No' && github.event.inputs.osxarm64 == 'true'
1002 | uses: actions/upload-artifact@v4
1003 | with:
1004 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64-b.zip
1005 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
1006 |
1007 | - name: Upload Linux Client snap to Release
1008 | continue-on-error: true
1009 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'Yes' && github.event.inputs.ubuntu == 'true'
1010 | uses: YeonV/upload-release-asset@v1
1011 | env:
1012 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1013 | with:
1014 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1015 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.snap
1016 | asset_name: LedFx_client-v${{ env.action_state }}--linux-amd64.snap
1017 | asset_content_type: application/octet-stream
1018 | - name: Upload Linux Client snap to Workflow
1019 | continue-on-error: true
1020 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'No' && github.event.inputs.ubuntu == 'true'
1021 | uses: actions/upload-artifact@v4
1022 | with:
1023 | name: LedFx_client-v${{ env.action_state }}--linux-amd64.snap
1024 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.snap
1025 |
1026 | - name: Upload Linux Client AppImage to Release
1027 | continue-on-error: true
1028 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'Yes' && github.event.inputs.ubuntu == 'true'
1029 | uses: YeonV/upload-release-asset@v1
1030 | env:
1031 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1032 | with:
1033 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1034 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.AppImage
1035 | asset_name: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage
1036 | asset_content_type: application/octet-stream
1037 | - name: Upload Linux Client AppImage to Workflow
1038 | continue-on-error: true
1039 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'No' && github.event.inputs.ubuntu == 'true'
1040 | uses: actions/upload-artifact@v4
1041 | with:
1042 | name: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage
1043 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.AppImage
1044 |
1045 | - name: Upload Linux CC snap to Release
1046 | continue-on-error: true
1047 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'Yes' && github.event.inputs.ubuntu == 'true'
1048 | uses: YeonV/upload-release-asset@v1
1049 | env:
1050 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1051 | with:
1052 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1053 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.snap
1054 | asset_name: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap
1055 | asset_content_type: application/octet-stream
1056 | - name: Upload Linux CC snap to Workflow
1057 | continue-on-error: true
1058 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'No' && github.event.inputs.ubuntu == 'true'
1059 | uses: actions/upload-artifact@v4
1060 | with:
1061 | name: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap
1062 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.snap
1063 |
1064 | - name: Upload Linux CC AppImage to Release
1065 | continue-on-error: true
1066 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'Yes' && github.event.inputs.ubuntu == 'true'
1067 | uses: YeonV/upload-release-asset@v1
1068 | env:
1069 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1070 | with:
1071 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1072 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.AppImage
1073 | asset_name: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage
1074 | asset_content_type: application/octet-stream
1075 | - name: Upload Linux CC AppImage to Workflow
1076 | continue-on-error: true
1077 | if: startsWith(matrix.OS, 'ubuntu') && github.event.inputs.release == 'No' && github.event.inputs.ubuntu == 'true'
1078 | uses: actions/upload-artifact@v4
1079 | with:
1080 | name: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage
1081 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.AppImage
1082 |
1083 | - name: Upload OSX-x64-Client dmg to Release
1084 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'Yes' && github.event.inputs.macos == 'true'
1085 | uses: YeonV/upload-release-asset@v1
1086 | env:
1087 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1088 | with:
1089 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1090 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.dmg
1091 | asset_name: LedFx_client-v${{ env.action_state }}--mac-x64.dmg
1092 | asset_content_type: application/octet-stream
1093 |
1094 | - name: Upload OSX-x64-Client dmg to Workflow
1095 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'No' && github.event.inputs.macos == 'true'
1096 | uses: actions/upload-artifact@v4
1097 | with:
1098 | name: LedFx_client-v${{ env.action_state }}--mac-x64.dmg
1099 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.dmg
1100 |
1101 | - name: Upload OSX-x64-Client zip to Release
1102 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'Yes' && github.event.inputs.macos == 'true'
1103 | uses: YeonV/upload-release-asset@v1
1104 | env:
1105 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1106 | with:
1107 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1108 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.zip
1109 | asset_name: LedFx_client-v${{ env.action_state }}--mac-x64.zip
1110 | asset_content_type: application/zip
1111 | - name: Upload OSX-x64-Client zip to Workflow
1112 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'No' && github.event.inputs.macos == 'true'
1113 | uses: actions/upload-artifact@v4
1114 | with:
1115 | name: LedFx_client-v${{ env.action_state }}--mac-x64.zip
1116 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.zip
1117 |
1118 | - name: Upload OSX-x64-CC dmg to Release
1119 | continue-on-error: true
1120 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'Yes' && github.event.inputs.macos == 'true'
1121 | uses: YeonV/upload-release-asset@v1
1122 | env:
1123 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1124 | with:
1125 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1126 |
1127 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
1128 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
1129 | asset_content_type: application/octet-stream
1130 |
1131 | - name: Upload OSX-x64-CC dmg to Workflow
1132 | continue-on-error: true
1133 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'No' && github.event.inputs.macos == 'true'
1134 | uses: actions/upload-artifact@v4
1135 | with:
1136 | name: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
1137 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
1138 |
1139 | - name: Upload OSX-x64-CC zip to Release
1140 | continue-on-error: true
1141 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'Yes' && github.event.inputs.macos == 'true'
1142 | uses: YeonV/upload-release-asset@v1
1143 | env:
1144 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1145 | with:
1146 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
1147 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.zip
1148 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-x64.zip
1149 | asset_content_type: application/zip
1150 |
1151 | - name: Upload OSX-x64-CC zip to Workflow
1152 | continue-on-error: true
1153 | if: startsWith(matrix.OS, 'macos-13') && github.event.inputs.release == 'No' && github.event.inputs.macos == 'true'
1154 | uses: actions/upload-artifact@v4
1155 | with:
1156 | name: LedFx_CC-v${{ env.action_state }}--mac-x64.zip
1157 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.zip
1158 | # - name: Send Discord Release Post
1159 | # if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'Yes'
1160 | # run: |
1161 | # curl -H "Content-Type: application/json" -d '{"content": "**[DOWNLOAD]** https://github.com/YeonV/LedFx-Builds/releases/tag/v${{ env.action_state }}\n\n**[PREVIEW]** **Please** do not send messages here. Use the [testing]-Post instead!", "thread_name": "[beta] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
1162 | # curl -H "Content-Type: application/json" -d '{"content": "https://github.com/YeonV/LedFx-Builds/releases/tag/v${{ env.action_state }}", "thread_name": "[testing] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
1163 | #
1164 | # - name: Send Discord Beta Post
1165 | # if: startsWith(runner.os, 'Windows') && github.event.inputs.release == 'No'
1166 | # run: |
1167 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"New Beta-Binaries available\n**DOWNLOAD:** https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n:regional_indicator_a: LedFx_core-v${{ env.action_state }}--win.zip\n:regional_indicator_b: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap\n:regional_indicator_c: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg\n:regional_indicator_d: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip\n:regional_indicator_e: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg\n:regional_indicator_f: LedFx_CC-v${{ env.action_state }}--mac-x64.zip\n:regional_indicator_g: LedFx_CC-v${{ env.action_state }}--win-setup.exe\n:regional_indicator_h: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage\n:regional_indicator_i: LedFx_client-v${{ env.action_state }}--linux-amd64.snap\n:regional_indicator_j: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg\n:regional_indicator_k: LedFx_client-v${{ env.action_state }}--mac-arm64.zip\n:regional_indicator_l: LedFx_client-v${{ env.action_state }}--mac-x64.dmg\n:regional_indicator_m: LedFx_client-v${{ env.action_state }}--mac-x64.zip\n:regional_indicator_o: LedFx_client-v${{ env.action_state }}--win-portable.exe\n:regional_indicator_p: LedFx_client-v${{ env.action_state }}--win-setup.exe\n:regional_indicator_q: LedFx_client-v${{ env.action_state }}--win.zip\n:regional_indicator_r: LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz\n:regional_indicator_s: LedFx_core-v${{ env.action_state }}--osx-arm64.zip\n:regional_indicator_t: LedFx_core-v${{ env.action_state }}--osx-x64.zip\n:regional_indicator_u: LedFx_core-v${{ env.action_state }}--win-portable.exe\n:regional_indicator_v: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
1168 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"======================================\n**NOT WORKING**\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
1169 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"======================================\n**WORKING**\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
1170 |
1171 |
--------------------------------------------------------------------------------
/.github/workflows/BuildPipelineUV.yml:
--------------------------------------------------------------------------------
1 | name: LedFx BuildPipeline UV
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | fversion:
7 | description: 'Frontend Version'
8 | default: '106'
9 | required: false
10 | release:
11 | description: 'Create Release'
12 | default: 'Yes'
13 | required: false
14 | type: choice
15 | options:
16 | - 'Yes'
17 | - 'No'
18 | macos:
19 | description: 'MacOS (intel)'
20 | default: true
21 | required: false
22 | type: boolean
23 | osxarm64:
24 | description: 'MacOS (silicon)'
25 | default: true
26 | required: false
27 | type: boolean
28 | ubuntu:
29 | description: 'Ubuntu'
30 | default: true
31 | required: false
32 | type: boolean
33 | windows:
34 | description: 'Windows'
35 | default: true
36 | required: false
37 | type: boolean
38 |
39 | jobs:
40 | createrelease:
41 | name: ${{ github.event.inputs.release == 'Yes' && 'Create Release' || 'Prepare Frontend' }}
42 | runs-on: [ubuntu-24.04]
43 | outputs:
44 | matrix: ${{ steps.set-matrix.outputs.matrix }}
45 | env:
46 | IS_RELEASE: ${{ github.event.inputs.release == 'Yes' && 'true' || 'false' }}
47 | BUILD_OSX_ARM64: ${{ github.event.inputs.osxarm64 == 'true' && 'true' || 'false' }}
48 | BUILD_OSX_X64: ${{ github.event.inputs.macos == 'true' && 'true' || 'false' }}
49 | BUILD_WIN: ${{ github.event.inputs.windows == 'true' && 'true' || 'false' }}
50 | BUILD_LINUX: ${{ github.event.inputs.ubuntu == 'true' && 'true' || 'false' }}
51 | action_state: "2.0" # Default value
52 |
53 | steps:
54 | - name: Get latest frontend and prepare matrix
55 | run: |
56 | curl -L --max-redirs 10 -o ledfx_frontend_v2.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_v2.zip"
57 |
58 | - name: Save Frontend for publish
59 | uses: actions/upload-artifact@v4
60 | with:
61 | name: ledfx_frontend_v2
62 | path: ledfx_frontend_v2.zip
63 |
64 | - name: Get Messages
65 | if: ${{ env.IS_RELEASE == 'true' }}
66 | run: |
67 | unzip -p ledfx_frontend_v2.zip ledfx_frontend_v2/messages.md >message.md
68 | echo "## New LedFx binaries available:
69 |
70 | ### Core: -- Browser-Based
71 | ### Client: -- Desktop-App (needs a running Core)
72 | ### CC: -- Desktop-App (Core-integrated)
73 |
74 | ---
75 |
76 | ## More informations regarding Core, Client and CC:
77 |
78 | expand
79 |
80 | #### Core
81 | If you don't know where to start, get this, open an internet browser, go to https://localhost:8888/ and off you go.
82 | This is the server/backend that takes in audio, does the calculations and outputs blinking lights. Runs in the background on a Windows/Mac/Linux computer. You can then open the frontend in an internet browser, by going to https://localhost:8888/ on the same computer that is running the Core.
83 | You can also pull up the frontend on your smartphone (or any other computer on the same network) by finding out what local IP your computer running the Core uses (most likely something like this 192.168.1.XXX, or 192.168.0.XXX) and opening a Browser on your smartphone and going to eg. https://192.168.1.123:8888/
84 |
85 | #### Client
86 | This is a Desktop App that opens the frontend of LedFx in a window on your desktop.
87 | This app does NOT include the LedFx backend/server and cannot run LedFx by itself without the Core.
88 | This Client app is useful for connecting to a running Core on your network (or the same machine).
89 |
90 | ### CC (Client + Core = CC)
91 | This is the Client and Core integrated into one Desktop App.
92 | This Desktop App opens the Client frontend of LedFx in a window on your desktop AND runs the Core backend/server in the background.
93 | This is useful for people who want the whole LedFx experience in one nice and tidy package.
94 | With this, you can still connect to the backend server via a Client or browser.
95 |
96 |
97 |
98 | ---
99 |
100 | ## ⚠️ These builds are not signed (read this please):
101 |
102 | Mac-Users:
103 |
104 | #### Infos:
105 | Reports as damaged, because of unsiged.
106 | To fix it open Terminal and type in the following (with a SPACE at the end):
107 |
108 | sudo xattr -cr
109 |
110 | Then drag'n'drop the LedFx.app File into the terminal and hit enter -> it should ask for sudo password
111 |
112 | Now you can open the App normally, give microphone and network permission, and you can even drag it into your applications.
113 | Maybe at some point we might buy an apple dev-license for 99€/year, then the voodoo would not be needed anymore.
114 |
115 |
116 |
117 | Win-Users:
118 |
119 | #### Infos:
120 | Reports as unsave, because of unsiged.
121 |
122 | Maybe at some point we might buy a microsoft dev-license
123 |
124 |
125 | " >> ./messages.md
126 |
127 | - uses: actions/checkout@v4
128 | if: ${{ env.IS_RELEASE == 'true' }}
129 | with:
130 | repository: YeonV/LedFx-Frontend-v2
131 | ref: main
132 | path: frontend
133 | fetch-depth: 0
134 |
135 | - name: Get frontend Changelog
136 | if: ${{ env.IS_RELEASE == 'true' }}
137 | run: |
138 | cd frontend
139 | echo "
140 | ### Frontend-Changes:
141 | Expand
142 |
143 | " >> ../messages.md
144 | git log --pretty=format:"+ %s [-blue.svg?logo=github&logoColor=white)](https://github.com/LedFx/LedFx/commit/%h)" $(git describe --tags --abbrev=0 @^)..@ | grep -v -E '(cleanup)' | awk '{ sub(/\[\[!\]\]/, ""); msg = substr($0, 1, index($0, "[!") - 1); if (length(msg) >= 5 && !seen[msg]++) { print $0 } }' | awk '{ while (match($0, /https:\/\/img\.shields\.io\/badge\/by-[^"]*-blue\.svg\?logo=github&logoColor=white/)) { url = substr($0, RSTART, RLENGTH); gsub(" ", "_", url); gsub("-", "_", url); gsub("by_", "by-", url); gsub("_blue", "-blue", url); printf "%s%s", substr($0, 1, RSTART - 1), url; $0 = substr($0, RSTART + RLENGTH) } gsub(" ", "_", $0); print }' >> ../messages.md
145 | echo "
146 |
147 |
148 | " >> ../messages.md
149 | cat ../messages.md
150 |
151 | - uses: actions/checkout@v4
152 | if: ${{ env.IS_RELEASE == 'true' }}
153 | with:
154 | repository: LedFx/LedFx
155 | ref: main
156 | path: backend
157 | fetch-depth: 0
158 |
159 | - name: Get Backend Changelog
160 | if: ${{ env.IS_RELEASE == 'true' }}
161 | run: |
162 | cd backend
163 | echo "
164 | ### Backend Changes
165 | Expand
166 |
167 | " >> ../messages.md
168 | git log --pretty=format:"+ %s [-blue.svg?logo=github&logoColor=white)](https://github.com/LedFx/LedFx/commit/%h)" $(git describe --tags --abbrev=0 @^)..@ | grep -v -E '(cleanup)' | awk '{ sub(/\[\[!\]\]/, ""); msg = substr($0, 1, index($0, "[!") - 1); if (length(msg) >= 5 && !seen[msg]++) { print $0 } }' | awk '{ while (match($0, /https:\/\/img\.shields\.io\/badge\/by-[^"]*-blue\.svg\?logo=github&logoColor=white/)) { url = substr($0, RSTART, RLENGTH); gsub(" ", "_", url); gsub("-", "_", url); gsub("by_", "by-", url); gsub("_blue", "-blue", url); printf "%s%s", substr($0, 1, RSTART - 1), url; $0 = substr($0, RSTART + RLENGTH) } gsub(" ", "_", $0); print }' >> ../messages.md
169 | echo "
170 |
171 |
172 | " >> ../messages.md
173 | cat ../messages.md
174 |
175 | - name: Create Release
176 | if: ${{ env.IS_RELEASE == 'true' }}
177 | id: create_release
178 | uses: actions/create-release@v1
179 | env:
180 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
181 | with:
182 | tag_name: v${{ env.action_state }}.${{ github.event.inputs.fversion }}
183 | release_name: "Release v${{ env.action_state }}.${{ github.event.inputs.fversion }}"
184 | body_path: ./messages.md
185 | draft: false
186 | prerelease: true
187 |
188 | - name: Trigger Build Android
189 | continue-on-error: true
190 | uses: benc-uk/workflow-dispatch@v1
191 | with:
192 | workflow: LedFx BuildPipeline Android
193 | repo: YeonV/LedFx-Builds
194 | token: ${{ secrets.GITHUB_TOKEN }}
195 | inputs: '{ "fversion": "${{ github.event.inputs.fversion}}", "release": "${{ startsWith(github.event.head_commit.message, ''Beta'') && ''No'' || ''Yes'' }}", "upload_url": "${{ steps.create_release.outputs.upload_url }}" }'
196 |
197 | - name: Output Release URL File
198 | if: ${{ env.IS_RELEASE == 'true' }}
199 | run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
200 |
201 | - name: Save Release URL File for publish
202 | if: ${{ env.IS_RELEASE == 'true' }}
203 | uses: actions/upload-artifact@v4
204 | with:
205 | name: release_url
206 | path: release_url.txt
207 |
208 | - name: Check Inputs and Prepare Matrix
209 | id: set-matrix
210 | run: |
211 | echo windows: ${{ env.BUILD_WIN == 'true' }}
212 | echo ubuntu: ${{ env.BUILD_LINUX == 'true' }}
213 | echo macos: ${{ env.BUILD_OSX_X64 == 'true' }}
214 |
215 | os_list=()
216 | if [ "${{ env.BUILD_WIN == 'true' }}" = "true" ]; then
217 | os_list+=('windows-latest')
218 | fi
219 | if [ "${{ env.BUILD_LINUX == 'true' }}" = "true" ]; then
220 | os_list+=('ubuntu-latest')
221 | fi
222 | if [ "${{ env.BUILD_OSX_X64 == 'true' }}" = "true" ]; then
223 | os_list+=('macos-13')
224 | fi
225 | if [ "${{ env.BUILD_OSX_ARM64 == 'true' }}" = "true" ]; then
226 | os_list+=('macos-latest')
227 | fi
228 |
229 | matrix_json="{\"os\": ["
230 | for os in "${os_list[@]}"; do
231 | matrix_json+="\"$os\","
232 | done
233 | matrix_json=${matrix_json%?} # remove trailing comma
234 | matrix_json+="], \"python-version\": [\"3.12\"]}"
235 |
236 | echo "$matrix_json" > matrix.json
237 | echo "matrix=$(cat matrix.json)" >> $GITHUB_OUTPUT
238 |
239 | build:
240 | needs: createrelease
241 | continue-on-error: true
242 | runs-on: ${{ matrix.os }}
243 | env:
244 | IS_RELEASE: ${{ github.event.inputs.release == 'Yes' && 'true' || 'false' }}
245 | IS_OSX_ARM64: ${{ startsWith(matrix.OS, 'macos-latest') }}
246 | IS_OSX_X64: ${{ startsWith(matrix.OS, 'macos-13') }}
247 | IS_WIN: ${{ startsWith(matrix.OS, 'windows') }}
248 | IS_LINUX: ${{ startsWith(matrix.OS, 'ubuntu') }}
249 | BUILD_OSX_ARM64: ${{ github.event.inputs.osxarm64 == 'true' && 'true' || 'false' }}
250 | BUILD_OSX_X64: ${{ github.event.inputs.macos == 'true' && 'true' || 'false' }}
251 | BUILD_WIN: ${{ github.event.inputs.windows == 'true' && 'true' || 'false' }}
252 | BUILD_LINUX: ${{ github.event.inputs.ubuntu == 'true' && 'true' || 'false' }}
253 | BINARY_NAME: "LedFx" # Default value
254 | action_state: "2.0" # Default value
255 | defaults:
256 | run:
257 | shell: bash -x {0}
258 | strategy:
259 | fail-fast: false
260 | matrix: ${{fromJson(needs.createrelease.outputs.matrix)}}
261 | steps:
262 | - name: Check out core from GitHub
263 | uses: actions/checkout@v4
264 | with:
265 | repository: LedFx/LedFx
266 | ref: main
267 | path: src
268 |
269 | - name: Check out tools from GitHub
270 | uses: actions/checkout@v4
271 | with:
272 | repository: YeonV/LedFx-Builds
273 | token: ${{ secrets.GITHUB_TOKEN }}
274 | ref: main
275 | path: src2
276 |
277 | - name: Delete old frontend
278 | uses: JesseTG/rm@2fb8f3b8a0e41fc222e7943b63306c602feb187e
279 | with:
280 | path: ./src/ledfx_frontend
281 |
282 | - name: get git version
283 | run: |
284 | cp ./src2/tools/cors.patch ./src/cors.patch
285 | cp ./src2/tools/sentry.patch ./src/sentry.patch
286 | cd src
287 | git rev-parse HEAD >> ledfx/git_version
288 | git apply cors.patch
289 | git apply sentry.patch
290 | cd ..
291 |
292 | - name: Get latest frontend
293 | if : ${{ env.IS_RELEASE == 'true' }}
294 | run: |
295 | curl -L --max-redirs 10 -o ledfx_frontend_v2.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_v2.zip"
296 |
297 | - name: Checkout frontend
298 | if: ${{ env.IS_RELEASE == 'false' }}
299 | uses: actions/checkout@v4
300 | with:
301 | repository: YeonV/LedFx-Frontend-v2
302 | token: ${{ secrets.GITHUB_TOKEN }}
303 | ref: main
304 | path: src3
305 | - name: Set up Node.js
306 | if: ${{ env.IS_RELEASE == 'false' }}
307 | uses: actions/setup-node@v4
308 | with:
309 | node-version: 20
310 | cache: 'yarn'
311 | cache-dependency-path: '**/yarn.lock'
312 | - name: Build frontend
313 | if: ${{ env.IS_RELEASE == 'false' }}
314 | run: |
315 | cd src3
316 | yarn
317 | npm version ${{ env.action_state }}.${{ github.event.inputs.fversion }}
318 | yarn build
319 | cd ..
320 |
321 | - name: Include new frontend non win
322 | if: ${{ env.IS_WIN == 'false' && env.IS_RELEASE == 'true' }}
323 | run: |
324 | unzip -o -u ledfx_frontend_v2.zip
325 | cp -rf ./ledfx_frontend_v2 ./src/ledfx_frontend
326 | ls ./src/ledfx_frontend
327 |
328 | - name: Include new frontend win
329 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' }}
330 | run: |
331 | unzip ledfx_frontend_v2.zip
332 | cp -r ./ledfx_frontend_v2 ./src/ledfx_frontend
333 | ls ./src/ledfx_frontend
334 |
335 | - name: Include new build frontend
336 | if: ${{ env.IS_RELEASE == 'false' }}
337 | run: |
338 | cp -r ./src3/build ./src/ledfx_frontend
339 | ls ./src/ledfx_frontend
340 |
341 | - name: Install uv
342 | uses: astral-sh/setup-uv@v5
343 | with:
344 | enable-cache: true
345 | cache-dependency-glob: "src/uv.lock"
346 |
347 | - name: Set up Python ${{ matrix.python-version }}
348 | run: uv python install ${{ matrix.python-version }}
349 |
350 | - name: Install build dependencies for osx
351 | if: ${{ env.IS_OSX_X64 == 'true' || env.IS_OSX_ARM64 == 'true' }}
352 | run: |
353 | brew install portaudio mbedtls@2
354 |
355 | - name: Setup mbedtls path for osx-arm64
356 | if: ${{ env.IS_OSX_ARM64 == 'true' || env.IS_OSX_X64 == 'true' }}
357 | run: |
358 | echo "/opt/homebrew/opt/mbedtls@2/bin" >> $GITHUB_PATH
359 | echo "LDFLAGS=-L/opt/homebrew/opt/mbedtls@2/lib" >> $GITHUB_ENV
360 | echo "CPPFLAGS=-I/opt/homebrew/opt/mbedtls@2/include" >> $GITHUB_ENV
361 | echo "PKG_CONFIG_PATH=/opt/homebrew/opt/mbedtls@2/lib/pkgconfig" >> $GITHUB_ENV
362 |
363 | - name: Get full Python version
364 | id: full-python-version
365 | run: echo version=$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))") >> $GITHUB_OUTPUT
366 |
367 | - name: Enable long paths for git on Windows
368 | if: ${{ env.IS_WIN == 'true' }}
369 | run: git config --system core.longpaths true
370 |
371 | - name: Update Path for Windows
372 | if: ${{ env.IS_WIN == 'true' }}
373 | run: echo "$APPDATA\Python\Scripts" >> $GITHUB_PATH
374 |
375 | - name: Update Path for non-Windows
376 | if: ${{ env.IS_WIN == 'false' }}
377 | run: echo "$HOME/.local/bin" >> $GITHUB_PATH
378 |
379 | - name: Bump version
380 | if: ${{ env.IS_WIN == 'true' || env.IS_LINUX == 'true' }}
381 | run: |
382 | sed -i '0,/PROJECT_VERSION = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//PROJECT_VERSION = "\1.\2.${{ github.event.inputs.fversion }}"/' ./src/ledfx/consts.py
383 | sed -i '0,/version = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//version = "\1.\2.${{ github.event.inputs.fversion }}"/' ./src/pyproject.toml
384 | new_version=$(sed -n 's/.*PROJECT_VERSION = "\([0-9]*\.[0-9]*\.[0-9]*\(-[a-z0-9]*\)*\)".*/\1/p' ./src/ledfx/consts.py)
385 | echo "action_state=$new_version" >> $GITHUB_ENV
386 | BINARY_NAME=LedFx_core-
387 | echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV
388 |
389 | - name: Bump version osx
390 | if: ${{ env.IS_OSX_X64 == 'true' || env.IS_OSX_ARM64 == 'true' }}
391 | run: |
392 | brew install gnu-sed
393 | cd src
394 | gsed -i '0,/PROJECT_VERSION = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//PROJECT_VERSION = "\1.\2.${{ github.event.inputs.fversion }}"/' ./ledfx/consts.py
395 | gsed -i '0,/version = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(-[a-z0-9]*\)*"/s//version = "\1.\2.${{ github.event.inputs.fversion }}"/' ./pyproject.toml
396 | new_version=$(gsed -n 's/.*PROJECT_VERSION = "\([0-9]*\.[0-9]*\.[0-9]*\(-[a-z0-9]*\)*\)".*/\1/p' ./ledfx/consts.py)
397 | echo "action_state=$new_version" >> $GITHUB_ENV
398 | BINARY_NAME=LedFx_core-
399 | echo "BINARY_NAME=$BINARY_NAME" >> $GITHUB_ENV
400 |
401 | - name: Install LedFx
402 | if: ${{ env.IS_LINUX == 'true' || env.IS_WIN == 'true' }}
403 | run: |
404 | cd src
405 | uv sync --python ${{ matrix.python-version }} --extra hue --dev
406 | cd ..
407 |
408 | - name: Install LedFx osx
409 | if: ${{ env.IS_OSX_X64 == 'true' || env.IS_OSX_ARM64 == 'true' }}
410 | run: |
411 | cd src
412 | export PATH="/opt/homebrew/opt/mbedtls@2/bin:$PATH"
413 | export LDFLAGS="-L/opt/homebrew/opt/mbedtls@2/lib"
414 | export CPPFLAGS="-I/opt/homebrew/opt/mbedtls@2/include"
415 | export CFLAGS="-Wno-incompatible-function-pointer-types"
416 | uv sync --python ${{ matrix.python-version }} --extra hue --dev
417 | cd ..
418 |
419 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} win
420 | if: ${{ env.IS_WIN == 'true' }}
421 | run: |
422 | mv src2/tools/win/win.spec src/win.spec
423 | cd src
424 | uv run pyinstaller windows-binary.spec
425 | rm dist/LedFx/_internal/_sounddevice_data/portaudio-binaries/libportaudio64bit.dll
426 | mv loopback/libportaudio64bit.dll dist/LedFx/_internal/_sounddevice_data/portaudio-binaries/libportaudio64bit.dll
427 | mv dist/LedFx $BINARY_NAME-v$action_state
428 | 7z.exe a -tzip $BINARY_NAME-v$action_state--win.zip $BINARY_NAME-v$action_state "-mx5" "-xr!.git" "-xr!.github"
429 |
430 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} osx-x64
431 | if: ${{ env.IS_OSX_X64 == 'true' }}
432 | run: |
433 | mv src2/tools/mac/mac.spec src/mac.spec
434 | cd src
435 | ls
436 | uv run pyinstaller mac.spec
437 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mkdir -p ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/ && cp -rf ../../src2/tools/mac/libsamplerate-x86-x64.dylib ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/libsamplerate.dylib && mv ./LedFx_v2 ./LedFx/LedFx.app
438 | cd ..
439 | rm -rf ./LedFx.app
440 | mv ./dist/LedFx/LedFx.app ./LedFx.app
441 | xattr -cr ./LedFx.app
442 | tar -czf my_files.tar ./LedFx.app
443 |
444 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} osx-arm64
445 | if: ${{ env.IS_OSX_ARM64 == 'true' }}
446 | run: |
447 | mv src2/tools/mac/mac-arm64.spec src/mac.spec
448 | cd src
449 | ls
450 | uv run pyinstaller mac.spec
451 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mkdir -p ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/ && cp -rf ../../src2/tools/mac/libsamplerate-arm64.dylib ./LedFx_v2/Contents/Frameworks/samplerate/_samplerate_data/libsamplerate.dylib && mv ./LedFx_v2 ./LedFx/LedFx.app
452 | cd ..
453 | rm -rf ./LedFx.app
454 | mv ./dist/LedFx/LedFx.app ./LedFx.app
455 | tar -czf my_files.tar ./LedFx.app
456 |
457 | - name: Build ${{ env.BINARY_NAME }}${{ env.action_state }} linux
458 | if: ${{ env.IS_LINUX == 'true' }}
459 | run: |
460 | sudo apt-get update && sudo apt-get install -y \
461 | gcc libatlas3-base portaudio19-dev
462 | sudo apt install pulseaudio
463 | mv src2/tools/linux/yzlinux.spec src/linux.spec
464 | cd src
465 | ls
466 | uv run pyinstaller linux.spec
467 | cd dist && mkdir LedFx-linux && mv ./LedFx ./LedFx-linux/LedFx && cd ..
468 | cd ..
469 | cd src/dist && ls && tar -czf LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz ./LedFx-linux
470 |
471 |
472 |
473 |
474 |
475 | - name: Load Release URL File from release job
476 | if: ${{ env.IS_RELEASE == 'true' }}
477 | uses: actions/download-artifact@v4
478 | with:
479 | name: release_url
480 |
481 | - name: Get Release File Name & Upload URL
482 | if: ${{ env.IS_RELEASE == 'true' }}
483 | id: get_release_info
484 | shell: bash
485 | run: |
486 | value=`cat release_url.txt`
487 | echo "upload_url=$value" >> $GITHUB_OUTPUT
488 |
489 | - name: Load Frontend Build File from release job
490 | if: ${{ env.IS_WIN == 'true' }}
491 | uses: actions/download-artifact@v4
492 | with:
493 | name: ledfx_frontend_v2
494 |
495 | - name: Upload Frontend Build to Release
496 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' }}
497 | id: upload-release-asset-2
498 | uses: actions/upload-release-asset@v1
499 | env:
500 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
501 | with:
502 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
503 | asset_path: ./ledfx_frontend_v2.zip
504 | asset_name: ledfx_frontend-v${{ env.action_state }}.zip
505 | asset_content_type: application/zip
506 |
507 | - name: Upload Frontend Build to Workflow
508 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' }}
509 | uses: actions/upload-artifact@v4
510 | with:
511 | name: ledfx_frontend-v${{ env.action_state }}.zip
512 | path: ledfx_frontend_v2/ledfx_frontend_v2.zip
513 |
514 | - name: Upload Core Win To Release
515 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
516 | uses: YeonV/upload-release-asset@v1
517 | env:
518 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
519 | with:
520 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
521 | asset_path: src/${{ env.BINARY_NAME }}-v${{ env.action_state }}--win.zip
522 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win.zip
523 | asset_content_type: application/zip
524 |
525 | - name: Upload Core Win To Workflow
526 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
527 | uses: actions/upload-artifact@v4
528 | with:
529 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win.zip
530 | path: src/${{ env.BINARY_NAME }}-v${{ env.action_state }}--win.zip
531 |
532 | - name: Upload Core Osx-arm64 To Release
533 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_ARM64 == 'true' }}
534 | uses: YeonV/upload-release-asset@v1
535 | env:
536 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
537 | with:
538 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
539 | asset_path: src/my_files.tar
540 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64.zip
541 | asset_content_type: application/zip
542 |
543 | - name: Upload Core Osx-arm64 to Workflow
544 | if: ${{env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_ARM64 == 'true' }}
545 | uses: actions/upload-artifact@v4
546 | with:
547 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-arm64.zip
548 | path: src/my_files.tar
549 |
550 | - name: Upload Core Osx To Release
551 | if: ${{env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_X64 == 'true' }}
552 | uses: YeonV/upload-release-asset@v1
553 | env:
554 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
555 | with:
556 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
557 | asset_path: src/my_files.tar
558 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-x64.zip
559 | asset_content_type: application/zip
560 |
561 | - name: Upload Core Osx to Workflow
562 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_X64 == 'true' }}
563 | uses: actions/upload-artifact@v4
564 | with:
565 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--osx-x64.zip
566 | path: src/my_files.tar
567 |
568 | - name: Build ${{ env.BINARY_NAME }} portable ${{ env.action_state }}
569 | if: ${{ env.IS_WIN == 'true' }}
570 | run: |
571 | cp src2/tools/win/yzwin.spec ./src/win-portable.spec
572 | cd src
573 | uv run pyinstaller win-portable.spec
574 | ls dist/
575 | mv dist/LedFx.exe dist/$BINARY_NAME-v$action_state--win-portable.exe
576 |
577 | - name: Upload Core Linux To Release
578 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'true' && env.BUILD_LINUX == 'true' }}
579 | continue-on-error: true
580 | uses: YeonV/upload-release-asset@v1
581 | env:
582 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
583 | with:
584 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
585 | asset_path: src/dist/LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz
586 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--linux-x64.tar.gz
587 | asset_content_type: application/gzip
588 |
589 | - name: Upload Core Linux To Worflow
590 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'false' && env.BUILD_LINUX == 'true' }}
591 | uses: actions/upload-artifact@v4
592 | with:
593 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--linux-x64.tar.gz
594 | path: src/dist/LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz
595 |
596 | - name: Upload Core Win Portable To Release
597 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
598 | uses: YeonV/upload-release-asset@v1
599 | env:
600 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
601 | with:
602 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
603 | asset_path: src\dist\${{ env.BINARY_NAME }}-v${{ env.action_state }}--win-portable.exe
604 | asset_name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win-portable.exe
605 | asset_content_type: application/vnd.microsoft.portable-executable
606 |
607 | - name: Upload Core Win Portable To Worflow
608 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
609 | uses: actions/upload-artifact@v4
610 | with:
611 | name: ${{ env.BINARY_NAME }}v${{ env.action_state }}--win-portable.exe
612 | path: src\dist\${{ env.BINARY_NAME }}-v${{ env.action_state }}--win-portable.exe
613 |
614 | # CLIENTS
615 | - uses: actions/checkout@v4
616 | with:
617 | repository: YeonV/LedFx-Frontend-v2
618 | ref: main
619 | path: frontend
620 |
621 | - name: Move Core-win
622 | continue-on-error: true
623 | if: ${{ env.IS_WIN == 'true' && env.BUILD_WIN == 'true' }}
624 | run: |
625 | ls ./src
626 | echo ------------
627 | ls ./src/LedFx_core--v${{ env.action_state }}
628 | echo ------------
629 | ls ./src/dist
630 | echo ------------
631 | cp -r ./src/LedFx_core--v${{ env.action_state }}/ ./frontend/extraResources/LedFx/ &&
632 | ls ./frontend/extraResources/LedFx
633 |
634 | - name: Move Core-osx
635 | if: ${{ (env.IS_OSX_X64 == 'true' || env.IS_OSX_ARM64 == 'true') && (env.BUILD_OSX_ARM64 == 'true' || env.BUILD_OSX_X64 == 'true') }}
636 | continue-on-error: true
637 | run: |
638 | cp -r ./src/LedFx.app ./frontend/extraResources/LedFx_core.app
639 | echo ------------
640 | ls ./frontend/extraResources
641 |
642 | - name: Move Core Linux
643 | if: ${{ env.IS_LINUX == 'true' && env.BUILD_LINUX == 'true' }}
644 | continue-on-error: true
645 | run: |
646 | ls
647 | cp -r ./src/dist/LedFx-linux/LedFx ./frontend/extraResources/LedFx
648 | echo ------------
649 | ls ./frontend/extraResources
650 |
651 | - name: Set up Node.js
652 | if: ${{ env.IS_OSX_ARM64 == 'false' }}
653 | uses: actions/setup-node@v4
654 | with:
655 | node-version: 20
656 | cache: 'yarn'
657 | cache-dependency-path: '**/yarn.lock'
658 | # architecture: ${{ matrix.arch }}
659 |
660 | - name: Set up Node.js osx-arm64
661 | if: ${{ env.IS_OSX_ARM64 == 'true' }}
662 | uses: actions/setup-node@v4
663 | with:
664 | node-version: 20
665 | architecture: arm64
666 | cache: 'yarn'
667 | cache-dependency-path: '**/yarn.lock'
668 |
669 | - name: Disable CI checks
670 | run: echo "CI=false" >> $GITHUB_ENV
671 | - name: Building Clients
672 | run: |
673 | cd frontend && npm config set legacy-peer-deps true && npm remove electron -g && npm remove electron-builder -g && npm i -D electron electron-builder && npm install --force && npm install postcss && npm run distall
674 | env:
675 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
676 |
677 | - name: Load Release URL File from release job
678 | if: ${{ env.IS_RELEASE == 'true' }}
679 | uses: actions/download-artifact@v4
680 | with:
681 | name: release_url
682 |
683 | - name: Upload Win-Portable to Release
684 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
685 | id: upload-release-asset-portable
686 | uses: YeonV/upload-release-asset@v1
687 | env:
688 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
689 | with:
690 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
691 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-portable.exe
692 | asset_name: LedFx_client-v${{ env.action_state }}--win-portable.exe
693 | asset_content_type: application/vnd.microsoft.portable-executable
694 |
695 | - name: Upload Win-Portable to Workflow
696 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
697 | uses: actions/upload-artifact@v4
698 | with:
699 | name: LedFx_client-v${{ env.action_state }}--win-portable.exe
700 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-portable.exe
701 |
702 | - name: Upload Win-Setup to Release
703 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
704 | id: upload-release-asset-setup
705 | uses: YeonV/upload-release-asset@v1
706 | env:
707 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
708 | with:
709 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
710 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-setup.exe
711 | asset_name: LedFx_client-v${{ env.action_state }}--win-setup.exe
712 | asset_content_type: application/vnd.microsoft.portable-executable
713 |
714 | - name: Upload Win-Setup to Workflow
715 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
716 | uses: actions/upload-artifact@v4
717 | with:
718 | name: LedFx_client-v${{ env.action_state }}--win-setup.exe
719 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win-setup.exe
720 |
721 | - name: Upload Win-Zip to Release
722 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
723 | id: upload-release-asset-zip
724 | uses: YeonV/upload-release-asset@v1
725 | env:
726 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
727 | with:
728 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
729 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win.zip
730 | asset_name: LedFx_client-v${{ env.action_state }}--win.zip
731 | asset_content_type: application/zip
732 |
733 | - name: Upload Win-Zip to Workflow
734 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
735 | uses: actions/upload-artifact@v4
736 | with:
737 | name: LedFx_client-v${{ env.action_state }}--win.zip
738 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--win.zip
739 |
740 | - name: Upload Win-CC to Release
741 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' && env.BUILD_WIN == 'true' }}
742 | id: upload-release-asset-cc
743 | uses: YeonV/upload-release-asset@v1
744 | env:
745 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
746 | with:
747 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
748 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--win-setup.exe
749 | asset_name: LedFx_CC-v${{ env.action_state }}--win-setup.exe
750 | asset_content_type: application/vnd.microsoft.portable-executable
751 |
752 | - name: Upload Win-CC to Workflow
753 | if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' && env.BUILD_WIN == 'true' }}
754 | uses: actions/upload-artifact@v4
755 | with:
756 | name: LedFx_CC-v${{ env.action_state }}--win-setup.exe
757 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--win-setup.exe
758 |
759 | - name: Upload OSX-arm64-Client dmg to Release
760 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_ARM64 == 'true' }}
761 | uses: YeonV/upload-release-asset@v1
762 | env:
763 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
764 | with:
765 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
766 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
767 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
768 | asset_content_type: application/octet-stream
769 |
770 | - name: Upload OSX-arm64-Client dmg to Workflow
771 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_ARM64 == 'true' }}
772 | uses: actions/upload-artifact@v4
773 | with:
774 | name: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
775 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.dmg
776 |
777 | - name: Upload OSX-arm64-Client zip to Release
778 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_ARM64 == 'true' }}
779 | uses: YeonV/upload-release-asset@v1
780 | env:
781 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
782 | with:
783 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
784 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
785 | asset_name: LedFx_client-v${{ env.action_state }}--mac-arm64.zip
786 | asset_content_type: application/zip
787 |
788 | - name: Upload OSX-arm64-Client zip to Workflow
789 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_ARM64 == 'true' }}
790 | uses: actions/upload-artifact@v4
791 | with:
792 | name: LedFx_client-v${{ env.action_state }}--mac-arm64.zip
793 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-arm64.zip
794 |
795 | - name: Upload OSX-arm64-CC dmg to Release
796 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_ARM64 == 'true' }}
797 | uses: YeonV/upload-release-asset@v1
798 | env:
799 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
800 | with:
801 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
802 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
803 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
804 | asset_content_type: application/octet-stream
805 |
806 | - name: Upload OSX-arm64-CC dmg to Workflow
807 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_ARM64 == 'true' }}
808 | uses: actions/upload-artifact@v4
809 | with:
810 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
811 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg
812 |
813 | - name: Upload OSX-arm64-CC zip to Release
814 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_ARM64 == 'true' }}
815 | uses: YeonV/upload-release-asset@v1
816 | env:
817 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
818 | with:
819 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
820 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
821 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
822 | asset_content_type: application/zip
823 |
824 | - name: Upload OSX-arm64-CC zip to Workflow
825 | if: ${{ env.IS_OSX_ARM64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_ARM64 == 'true' }}
826 | uses: actions/upload-artifact@v4
827 | with:
828 | name: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
829 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-arm64.zip
830 |
831 | - name: Upload Linux Client snap to Release
832 | continue-on-error: true
833 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'true' && env.BUILD_LINUX == 'true' }}
834 | uses: YeonV/upload-release-asset@v1
835 | env:
836 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
837 | with:
838 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
839 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.snap
840 | asset_name: LedFx_client-v${{ env.action_state }}--linux-amd64.snap
841 | asset_content_type: application/octet-stream
842 |
843 | - name: Upload Linux Client snap to Workflow
844 | continue-on-error: true
845 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'false' && env.BUILD_LINUX == 'true' }}
846 | uses: actions/upload-artifact@v4
847 | with:
848 | name: LedFx_client-v${{ env.action_state }}--linux-amd64.snap
849 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.snap
850 |
851 | - name: Upload Linux Client AppImage to Release
852 | continue-on-error: true
853 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'true' && env.BUILD_LINUX == 'true' }}
854 | uses: YeonV/upload-release-asset@v1
855 | env:
856 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
857 | with:
858 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
859 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.AppImage
860 | asset_name: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage
861 | asset_content_type: application/octet-stream
862 |
863 | - name: Upload Linux Client AppImage to Workflow
864 | continue-on-error: true
865 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'false' && env.BUILD_LINUX == 'true' }}
866 | uses: actions/upload-artifact@v4
867 | with:
868 | name: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage
869 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--linux.AppImage
870 |
871 | - name: Upload Linux CC snap to Release
872 | continue-on-error: true
873 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'true' && env.BUILD_LINUX == 'true' }}
874 | uses: YeonV/upload-release-asset@v1
875 | env:
876 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
877 | with:
878 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
879 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.snap
880 | asset_name: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap
881 | asset_content_type: application/octet-stream
882 |
883 | - name: Upload Linux CC snap to Workflow
884 | continue-on-error: true
885 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'false' && env.BUILD_LINUX == 'true' }}
886 | uses: actions/upload-artifact@v4
887 | with:
888 | name: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap
889 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.snap
890 |
891 | - name: Upload Linux CC AppImage to Release
892 | continue-on-error: true
893 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'true' && env.BUILD_LINUX == 'true' }}
894 | uses: YeonV/upload-release-asset@v1
895 | env:
896 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
897 | with:
898 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
899 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.AppImage
900 | asset_name: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage
901 | asset_content_type: application/octet-stream
902 |
903 | - name: Upload Linux CC AppImage to Workflow
904 | continue-on-error: true
905 | if: ${{ env.IS_LINUX == 'true' && env.IS_RELEASE == 'false' && env.BUILD_LINUX == 'true' }}
906 | uses: actions/upload-artifact@v4
907 | with:
908 | name: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage
909 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--linux.AppImage
910 |
911 | - name: Upload OSX-x64-Client dmg to Release
912 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_X64 == 'true' }}
913 | uses: YeonV/upload-release-asset@v1
914 | env:
915 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
916 | with:
917 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
918 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.dmg
919 | asset_name: LedFx_client-v${{ env.action_state }}--mac-x64.dmg
920 | asset_content_type: application/octet-stream
921 |
922 | - name: Upload OSX-x64-Client dmg to Workflow
923 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_X64 == 'true' }}
924 | uses: actions/upload-artifact@v4
925 | with:
926 | name: LedFx_client-v${{ env.action_state }}--mac-x64.dmg
927 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.dmg
928 |
929 | - name: Upload OSX-x64-Client zip to Release
930 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_X64 == 'true' }}
931 | uses: YeonV/upload-release-asset@v1
932 | env:
933 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
934 | with:
935 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
936 | asset_path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.zip
937 | asset_name: LedFx_client-v${{ env.action_state }}--mac-x64.zip
938 | asset_content_type: application/zip
939 |
940 | - name: Upload OSX-x64-Client zip to Workflow
941 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_X64 == 'true' }}
942 | uses: actions/upload-artifact@v4
943 | with:
944 | name: LedFx_client-v${{ env.action_state }}--mac-x64.zip
945 | path: ./frontend/dist/LedFx_client-v${{ env.action_state }}--mac-x64.zip
946 |
947 | - name: Upload OSX-x64-CC dmg to Release
948 | continue-on-error: true
949 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_X64 == 'true' }}
950 | uses: YeonV/upload-release-asset@v1
951 | env:
952 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
953 | with:
954 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
955 |
956 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
957 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
958 | asset_content_type: application/octet-stream
959 |
960 | - name: Upload OSX-x64-CC dmg to Workflow
961 | continue-on-error: true
962 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_X64 == 'true' }}
963 | uses: actions/upload-artifact@v4
964 | with:
965 | name: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
966 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.dmg
967 |
968 | - name: Upload OSX-x64-CC zip to Release
969 | continue-on-error: true
970 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'true' && env.BUILD_OSX_X64 == 'true' }}
971 | uses: YeonV/upload-release-asset@v1
972 | env:
973 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
974 | with:
975 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
976 | asset_path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.zip
977 | asset_name: LedFx_CC-v${{ env.action_state }}--mac-x64.zip
978 | asset_content_type: application/zip
979 |
980 | - name: Upload OSX-x64-CC zip to Workflow
981 | continue-on-error: true
982 | if: ${{ env.IS_OSX_X64 == 'true' && env.IS_RELEASE == 'false' && env.BUILD_OSX_X64 == 'true' }}
983 | uses: actions/upload-artifact@v4
984 | with:
985 | name: LedFx_CC-v${{ env.action_state }}--mac-x64.zip
986 | path: ./frontend/dist/LedFx_CC-v${{ env.action_state }}--mac-x64.zip
987 |
988 | # - name: Send Discord Release Post
989 | # if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'true' }}
990 | # run: |
991 | # curl -H "Content-Type: application/json" -d '{"content": "**[DOWNLOAD]** https://github.com/YeonV/LedFx-Builds/releases/tag/v${{ env.action_state }}\n\n**[PREVIEW]** **Please** do not send messages here. Use the [testing]-Post instead!", "thread_name": "[beta] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
992 | # curl -H "Content-Type: application/json" -d '{"content": "https://github.com/YeonV/LedFx-Builds/releases/tag/v${{ env.action_state }}", "thread_name": "[testing] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
993 | #
994 | # - name: Send Discord Beta Post
995 | # if: ${{ env.IS_WIN == 'true' && env.IS_RELEASE == 'false' }}
996 | # run: |
997 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"New Beta-Binaries available\n**DOWNLOAD:** https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\n\n:regional_indicator_a: LedFx_core-v${{ env.action_state }}--win.zip\n:regional_indicator_b: LedFx_CC-v${{ env.action_state }}--linux-amd64.snap\n:regional_indicator_c: LedFx_CC-v${{ env.action_state }}--mac-arm64.dmg\n:regional_indicator_d: LedFx_CC-v${{ env.action_state }}--mac-arm64.zip\n:regional_indicator_e: LedFx_CC-v${{ env.action_state }}--mac-x64.dmg\n:regional_indicator_f: LedFx_CC-v${{ env.action_state }}--mac-x64.zip\n:regional_indicator_g: LedFx_CC-v${{ env.action_state }}--win-setup.exe\n:regional_indicator_h: LedFx_client-v${{ env.action_state }}--linux-amd64.AppImage\n:regional_indicator_i: LedFx_client-v${{ env.action_state }}--linux-amd64.snap\n:regional_indicator_j: LedFx_client-v${{ env.action_state }}--mac-arm64.dmg\n:regional_indicator_k: LedFx_client-v${{ env.action_state }}--mac-arm64.zip\n:regional_indicator_l: LedFx_client-v${{ env.action_state }}--mac-x64.dmg\n:regional_indicator_m: LedFx_client-v${{ env.action_state }}--mac-x64.zip\n:regional_indicator_o: LedFx_client-v${{ env.action_state }}--win-portable.exe\n:regional_indicator_p: LedFx_client-v${{ env.action_state }}--win-setup.exe\n:regional_indicator_q: LedFx_client-v${{ env.action_state }}--win.zip\n:regional_indicator_r: LedFx_core-v${{ env.action_state }}--linux-x64.tar.gz\n:regional_indicator_s: LedFx_core-v${{ env.action_state }}--osx-arm64.zip\n:regional_indicator_t: LedFx_core-v${{ env.action_state }}--osx-x64.zip\n:regional_indicator_u: LedFx_core-v${{ env.action_state }}--win-portable.exe\n:regional_indicator_v: LedFx_CC-v${{ env.action_state }}--linux-amd64.AppImage\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
998 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"======================================\n**NOT WORKING**\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
999 | # curl -H "Content-Type: application/json" -X POST -d "{\"content\":\"======================================\n**WORKING**\"}" https://discord.com/api/webhooks/1196958406234345522/zSejZjvGh2rWdAIyIp3IL-8W-yXniX4bsXNxHi9Mn6QmlbhCThWPSDYoLT_PO5a2WQAb
1000 |
1001 |
--------------------------------------------------------------------------------
/.github/workflows/__BuildPipeline.yml_OFF:
--------------------------------------------------------------------------------
1 | name: LedFx BuildPipeline
2 |
3 | on:
4 | workflow_dispatch:
5 | # Inputs the workflow accepts.
6 | inputs:
7 | fversion:
8 | description: 'Frontend Version'
9 | default: '69'
10 | required: false
11 |
12 | jobs:
13 | createrelease:
14 | name: Create Release
15 | runs-on: [ubuntu-latest]
16 | steps:
17 | - name: Get latest frontend
18 | run: |
19 | curl -L --max-redirs 10 -o ledfx_frontend_v2.zip "https://github.com/YeonV/LedFx-Frontend-v2/releases/latest/download/ledfx_frontend_v2.zip"
20 | - name: Save Frontend for publish
21 | uses: actions/upload-artifact@v3
22 | with:
23 | name: ledfx_frontend_v2
24 | path: ledfx_frontend_v2.zip
25 | - name: Get Messages
26 | run: |
27 | unzip -p ledfx_frontend_v2.zip ledfx_frontend_v2/messages.md >message.md
28 | echo "## New LedFx binaries available:
29 |
30 | ### Core: -- Browser-Based
31 | ### Client: -- Desktop-App (needs a running Core)
32 | ### CC: -- Desktop-App (Core-integrated)
33 |
34 | ---
35 |
36 | ## More informations regarding Core, Client and CC:
37 |
38 | expand
39 |
40 | #### Core
41 | If you don't know where to start, get this, open an internet browser, go to https://localhost:8888/ and off you go.
42 | This is the server/backend that takes in audio, does the calculations and outputs blinking lights. Runs in the background on a Windows/Mac/Linux computer. You can then open the frontend in an internet browser, by going to https://localhost:8888/ on the same computer that is running the Core.
43 | You can also pull up the frontend on your smartphone (or any other computer on the same network) by finding out what local IP your computer running the Core uses (most likely something like this 192.168.1.XXX, or 192.168.0.XXX) and opening a Browser on your smartphone and going to eg. https://192.168.1.123:8888/
44 |
45 |
46 | #### Client
47 | This is a Desktop App that opens the frontend of LedFx in a window on your desktop.
48 | This app does NOT include the LedFx backend/server and cannot run LedFx by itself without the Core.
49 | This Client app is useful for connecting to a running Core on your network (or the same machine).
50 |
51 | ### CC (Client + Core = CC)
52 | This is the Client and Core integrated into one Desktop App.
53 | This Desktop App opens the Client frontend of LedFx in a window on your desktop AND runs the Core backend/server in the background.
54 | This is useful for people who want the whole LedFx experience in one nice and tidy package.
55 | With this, you can still connect to the backend server via a Client or browser.
56 |
57 |
58 |
59 | ---
60 |
61 | ## ⚠️ These builds are not signed (read this please):
62 |
63 | Mac-Users:
64 |
65 | #### Infos:
66 | Reports as damaged, because of unsiged.
67 | To fix it open Terminal and type in the following (with a SPACE at the end):
68 |
69 | ```sudo xattr -cr ```
70 |
71 | Then drag'n'drop the LedFx.app File into the terminal and hit enter -> it should ask for sudo password
72 |
73 | Now you can open the App normally, give microphone and network permission, and you can even drag it into your applications.
74 | Maybe at some point we might buy an apple dev-license for 99€/year, then the voodoo would not be needed anymore.
75 |
76 |
77 |
78 |
79 | Win-Users:
80 |
81 | #### Infos:
82 | Reports as unsave, because of unsiged.
83 |
84 | Maybe at some point we might buy a microsoft dev-license
85 |
86 |
87 |
88 | ## Changes
89 |
90 | Expand
91 | " >> ./messages.md
92 | cat ./message.md >> ./messages.md
93 | echo "
94 |
95 | " >> ./messages.md
96 | - uses: actions/checkout@v3
97 | with:
98 | repository: LedFx/LedFx
99 | ref: main
100 | path: backend
101 | - name: Get Backendver
102 | id: getbackendver
103 | run: |
104 | cd backend/ledfx
105 | echo "action_state=$(python3 consts.py | cut -d- -f1 | cut -d. -f1,2)" >> $GITHUB_ENV
106 | echo "
107 | Expand
108 | " >> ./messages.md
109 | git log --pretty=format:"+ %s [\-blue.svg?logo=github&logoColor=white)](https://github.com/LedFx/LedFx/commit/%h)" $(git describe --tags --abbrev=0 @^)..@ | grep -v -E '(cleanup)' | awk '{ sub(/\[\[!\]\]/, ""); msg = substr($0, 1, index($0, "[!") - 1); if (length(msg) >= 5 && !seen[msg]++) { print $0 } }' | awk '{ while (match($0, /https:\/\/img\.shields\.io\/badge\/by-[^"]*-blue\.svg\?logo=github&logoColor=white/)) { url = substr($0, RSTART, RLENGTH); gsub(" ", "_", url); printf "%s%s", substr($0, 1, RSTART - 1), url; $0 = substr($0, RSTART + RLENGTH) } gsub(" ", "_", $0); print }' >> ./messages.md
110 | echo "
111 |
112 | " >> ./messages.md
113 | - name: Create Release
114 | id: create_release
115 | uses: actions/create-release@v1
116 | env:
117 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118 | with:
119 | tag_name: v${{ env.action_state || '2.0' }}.${{ github.event.inputs.fversion }}
120 | #tag_name: v2.0.${{ github.event.inputs.fversion }}
121 | release_name: Release v${{ env.action_state || '2.0'}}.${{ github.event.inputs.fversion }}
122 | body_path: ./messages.md
123 | draft: false
124 | prerelease: false
125 | - name: Output Release URL File
126 | run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
127 | - name: Save Release URL File for publish
128 | uses: actions/upload-artifact@v3
129 | with:
130 | name: release_url
131 | path: release_url.txt
132 |
133 | core:
134 | name: Build ${{ matrix.runtime }}
135 | needs: createrelease
136 | # if: ${{ github.event.inputs.core == 'true' }}
137 | runs-on: ${{ matrix.os }}
138 | strategy:
139 | fail-fast: false
140 | matrix:
141 | include:
142 | - os: ubuntu-latest
143 | continue-on-error: true
144 | # if: ${{ github.event.inputs.linux == 'true' }}
145 | TARGET: ubuntu
146 | runtime: linux-x64
147 | CMD_DEP: |
148 | sudo apt install libatlas3-base \
149 | libavformat58 \
150 | portaudio19-dev \
151 | pulseaudio
152 | cp src2/tools/linux/yzlinux.spec src/linux.spec
153 | cd src
154 | curl -sSL https://install.python-poetry.org | python - -y
155 | echo "$HOME/.local/bin" >> $GITHUB_PATH
156 | poetry install
157 | poetry run pip install pyinstaller
158 | poetry run pip install mido
159 | CMD_BUILD: >
160 | cd src && poetry run pyinstaller linux.spec && cd dist && mkdir LedFx-linux && mv ./LedFx ./LedFx-linux/LedFx && cd ..
161 | CMD_PACK: cd src/dist && ls && tar -czf LedFx_core-v2.0.${{ github.event.inputs.fversion }}--linux-x64.tar.gz ./LedFx-linux && mv LedFx_core-v2.0.${{ github.event.inputs.fversion }}--linux-x64.tar.gz ../../
162 | ASSET_NAME: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--linux-x64.tar.gz
163 | ASSET_PATH: ./LedFx_core-v2.0.${{ github.event.inputs.fversion }}--linux-x64.tar.gz
164 | ASSET_MIME: application/gzip
165 | # ASSET_NAME2: LedFx-notray--linux-x64.zip
166 | # ASSET_PATH2: ./LedFx-notray--linux-x64.zip
167 | # ASSET_MIME2: application/zip
168 | # ASSET_NAME3: LedFx-notray--linux-x64.tar.gz
169 | # ASSET_PATH3: ./LedFx-notray--linux-x64.tar.gz
170 | # ASSET_MIME3: application/gzip
171 |
172 | arch: x64
173 |
174 | - os: macos-latest
175 | continue-on-error: true
176 | # if: ${{ github.event.inputs.mac == 'true' }}
177 | runtime: osx-x64
178 | TARGET: macos
179 | CMD_DEP: |
180 | brew install portaudio pulseaudio
181 | # python3 -m pip install --upgrade pip
182 | # python3 -m pip install --upgrade wheel
183 | cp src2/tools/mac/mac.spec src/mac.spec
184 | #cp src2/tools/mac/aubio-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl src/aubio-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl
185 | #cp src2/tools/mac/aubio-0.5.0a0-cp39-cp39-macosx_10_9_x86_64.whl src/aubio-0.5.0a0-cp39-cp39-macosx_10_9_x86_64.whl
186 | cd src
187 | curl -sSL https://install.python-poetry.org | python - -y
188 | export PATH="/Users/runner/.local/bin:$PATH"
189 | poetry install
190 | poetry run pip install pyinstaller
191 | poetry run pip install mido
192 | CMD_BUILD: >
193 | export PATH="/Users/runner/.local/bin:$PATH" &&
194 | cd src && poetry run pyinstaller mac.spec &&
195 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mv ./LedFx_v2 ./LedFx/LedFx.app && cd .. &&
196 | mkdir ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate &&
197 | mkdir ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data &&
198 | cp -rf ../src2/tools/mac/libsamplerate-x86-x64.dylib ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/ &&
199 | mv ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/libsamplerate-x86-x64.dylib ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/libsamplerate.dylib
200 | CMD_PACK: |
201 | rm -rf ./LedFx.app
202 | mv ./src/dist/LedFx/LedFx.app ./LedFx.app
203 | tar -czf my_files.tar ./LedFx.app
204 | ASSET_NAME: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--osx-x64.zip
205 | ASSET_PATH: my_files.tar
206 | ASSET_MIME: application/zip
207 | # ASSET_NAME2: LedFx-notray--osx-x64.app.zip
208 | # ASSET_PATH2: my_files2.tar
209 | # ASSET_MIME2: application/zip
210 | # ASSET_NAME3: LedFx-notray--osx-x64.app.zip
211 | # ASSET_PATH3: my_files2.tar
212 | # ASSET_MIME3: application/zip
213 |
214 | arch: x64
215 |
216 | - os: osx-arm64
217 | continue-on-error: true
218 | # if: ${{ github.event.inputs.macarm == 'true' }}
219 | runtime: osx-arm64
220 | TARGET: macos
221 | CMD_DEP: |
222 | # brew install portaudio pulseaudio
223 | arch -arm64 brew install mbedtls@2
224 | echo 'export PATH="/opt/homebrew/opt/mbedtls@2/bin:$PATH"' >> ~/.zshrc
225 | export LDFLAGS="-L/opt/homebrew/opt/mbedtls@2/lib"
226 | export CPPFLAGS="-I/opt/homebrew/opt/mbedtls@2/include"
227 | source ~/projects/tsworkspace/led311/bin/activate
228 | cp src2/tools/mac/mac-arm64.spec src/mac.spec
229 | cp src2/tools/mac/selfhosted.py src/selfhosted.py
230 | cd src
231 | arch -arm64 python selfhosted.py
232 | arch -arm64 python --version
233 | curl -sSL https://install.python-poetry.org | arch -arm64 python - --uninstall
234 | # curl -sSL https://install.python-poetry.org | arch -arm64 python - -y
235 | arch -arm64 pip --version
236 | arch -arm64 pip install pipx
237 | arch -arm64 pipx install poetry
238 | export PATH="$HOME/.local/bin:$PATH"
239 | arch -arm64 poetry install
240 | arch -arm64 poetry run pip install pyinstaller
241 | arch -arm64 poetry run pip install mido
242 | arch -arm64 poetry run pip install python-osc
243 | arch -arm64 poetry run pip install python-mbedtls
244 | CMD_BUILD: >
245 | export PATH="$HOME/.local/bin:$PATH" &&
246 | cd src && arch -arm64 poetry run pyinstaller mac.spec &&
247 | cd dist/ && mkdir LedFx && chmod +x ./LedFx_v2/Contents/MacOS/LedFx_v2 && mv ./LedFx_v2 ./LedFx/LedFx.app && cd .. &&
248 | mkdir ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate &&
249 | mkdir ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data &&
250 | cp -rf ../src2/tools/mac/libsamplerate-arm64.dylib ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/ &&
251 | mv ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/libsamplerate-arm64.dylib ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/libsamplerate.dylib &&
252 | cp ./dist/LedFx/LedFx.app/Contents/MacOS/samplerate/_samplerate_data/libsamplerate.dylib ./dist/LedFx/LedFx.app/Contents/MacOS/libsamplerate.0.dylib
253 | CMD_PACK: |
254 | rm -rf ./LedFx.app
255 | mv ./src/dist/LedFx/LedFx.app ./LedFx.app
256 | tar -czf my_files.tar ./LedFx.app
257 | OUT_FILE_NAME: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--osx-arm64.zip
258 | ASSET_NAME: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--osx-arm64.zip
259 | ASSET_PATH: my_files.tar
260 | ASSET_MIME: application/zip
261 | # ASSET_NAME2: LedFx-notray--osx-x64.app.zip
262 | # ASSET_PATH2: my_files2.tar
263 | # ASSET_MIME2: application/zip
264 | # ASSET_NAME3: LedFx-notray--osx-arm64.app.zip
265 | # ASSET_PATH3: my_files2.tar
266 | # ASSET_MIME3: application/zip
267 | arch: arm64
268 |
269 | - os: windows-latest
270 | continue-on-error: true
271 | runtime: win-x64
272 | TARGET: windows
273 | CMD_DEP: |
274 | del src/win.spec
275 | cp src2/tools/win/win.spec src/win.spec
276 | cp src2/tools/win/yzwin.spec src/yzwin.spec
277 | cd src
278 | # curl -sSL https://install.python-poetry.org | python - -y
279 | # setx /M path "%path%;C:\Users\runneradmin\AppData\Roaming\Python\Scripts"
280 | pip install pipx
281 | pipx install poetry
282 | poetry install
283 | poetry run ledfx-loopback-install
284 | poetry run pip install pyinstaller
285 | poetry run pip install mido
286 | # dir c:\hostedtoolcache\windows\python\3.9.13\x64\lib\site-packages\
287 | # cp ../src2/tools/win/hook-samplerate.py c:\hostedtoolcache\windows\python\3.9.13\x64\lib\site-packages\_pyinstaller_hooks_contrib\hooks\stdhooks\hook-samplerate.py
288 | # python3 -m pip install -e .
289 | # dir c:\hostedtoolcache\windows\python\3.9.13\x64\lib\site-packages\samplerate\_samplerate_data\
290 | # cp ../src2/tools/win/libportaudio64bit.dll c:\hostedtoolcache\windows\python\3.9.13\x64\lib\site-packages\_sounddevice_data\portaudio-binaries\libportaudio-64bit.dll
291 | # cp ../src2/tools/win/libportaudio64bit.dll c:\hostedtoolcache\windows\python\3.9.13\x64\lib\site-packages\_sounddevice_data\portaudio-binaries\
292 | # cd ..
293 | CMD_BUILD: cd src && poetry run pyinstaller win.spec && poetry run pyinstaller yzwin.spec && mv ./dist/LedFx.exe ../LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win-portable.exe
294 | CMD_PACK: 7z.exe a -tzip LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win.zip ./src/dist/LedFx "-mx5" "-xr!.git" "-xr!.github"
295 | ASSET_NAME: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win.zip
296 | ASSET_PATH: ./LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win.zip
297 | ASSET_MIME: application/zip
298 | ASSET_NAME2: LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win-portable.exe
299 | ASSET_PATH2: ./LedFx_core-v2.0.${{ github.event.inputs.fversion }}--win-portable.exe
300 | ASSET_MIME2: application/vnd.microsoft.portable-executable
301 | # ASSET_NAME3: LedFx-notray--win.exe
302 | # ASSET_PATH3: ./LedFx-notray--win.exe
303 | # ASSET_MIME3: application/vnd.microsoft.portable-executable
304 |
305 | arch: x64
306 |
307 | steps:
308 | - uses: actions/checkout@v3
309 | with:
310 | repository: LedFx/LedFx
311 | ref: main
312 | path: src
313 | - uses: actions/checkout@v3
314 | with:
315 | repository: YeonV/LedFx-Builds
316 | token: ${{ secrets.GITHUB_TOKEN }}
317 | ref: main
318 | path: src2
319 | - name: Delete old frontend
320 | uses: JesseTG/rm@2fb8f3b8a0e41fc222e7943b63306c602feb187e
321 | with:
322 | path: ./src/ledfx_frontend
323 | - name: get git version
324 | run: |
325 | cd src
326 | git rev-parse HEAD >> ledfx/git_version
327 | - name: Load Frontend from release job
328 | uses: actions/download-artifact@v1
329 | with:
330 | name: ledfx_frontend_v2
331 | - name: Include new frontend
332 | if: "!startsWith(matrix.OS, 'win')"
333 | run: |
334 | cd ./ledfx_frontend_v2
335 | ls
336 | unzip -o -u ledfx_frontend_v2.zip
337 | cd ..
338 | cp -rf ./ledfx_frontend_v2/ledfx_frontend_v2 ./src/ledfx_frontend
339 | ls ./src/ledfx_frontend
340 | - name: Include new frontend win
341 | if: "startsWith(matrix.OS, 'win')"
342 | run: |
343 | cd ./ledfx_frontend_v2
344 | ls
345 | tar -xf ledfx_frontend_v2.zip
346 | cd ..
347 | cp -r ./ledfx_frontend_v2/ledfx_frontend_v2 ./src/ledfx_frontend
348 | ls ./src/ledfx_frontend
349 | - name: Bump version
350 | if: "startsWith(matrix.OS, 'win')"
351 | run: |
352 | cp ./src2/tools/win/version-bump.ps1 ./
353 | ./version-bump.ps1 ${{ github.event.inputs.fversion }}
354 | - name: Bump version unix
355 | if: "startsWith(matrix.OS, 'ubu')"
356 | run: |
357 | sed -i 's/\bMICRO_VERSION = .*\b/MICRO_VERSION = ${{ github.event.inputs.fversion }}/' ./src/ledfx/consts.py
358 |
359 | - name: Bump version osx
360 | if: "!startsWith(matrix.OS, 'win') && !startsWith(matrix.OS, 'ubu')"
361 | run: |
362 | brew install gnu-sed
363 | gsed -i 's/\bMICRO_VERSION = .*\b/MICRO_VERSION = ${{ github.event.inputs.fversion }}/' ./src/ledfx/consts.py
364 |
365 | - uses: stefanzweifel/git-auto-commit-action@v4
366 | continue-on-error: true
367 | with:
368 | commit_message: '[new-frontend] v2.0.${{ github.event.inputs.fversion }}'
369 | push_options: --force
370 | repository: ./src
371 | token: ${{ secrets.LEDFX_TOKEN }}
372 | tagging_message: 'v2.0.${{ github.event.inputs.fversion }}'
373 |
374 | - name: Create Pull Request
375 | continue-on-error: true
376 | if: "startsWith(matrix.OS, 'win')"
377 | uses: peter-evans/create-pull-request@v4
378 | with:
379 | path: ./src
380 | token: ${{ secrets.LEDFX_TOKEN }}
381 | delete-branch: true
382 | branch: new-frontend
383 | commit-message: '[new-frontend] v2.0.${{ github.event.inputs.fversion }}'
384 | title: Release v2.0.${{ github.event.inputs.fversion }}
385 | body: New version incoming!
386 |
387 | - name: Set up Python 3.10
388 | if: "!startsWith(matrix.OS, 'win') && !startsWith(matrix.OS, 'osx')"
389 | uses: actions/setup-python@v4
390 | with:
391 | python-version: '3.10'
392 | cache: 'pip'
393 | - name: Set up Python 3.9
394 | if: "startsWith(matrix.OS, 'win')"
395 | uses: actions/setup-python@v4
396 | with:
397 | python-version: '3.9.13'
398 | cache: 'pip'
399 | - name: Set up Python 3.11
400 | if: "startsWith(matrix.OS, 'osx')"
401 | uses: actions/setup-python@v4
402 | with:
403 | python-version: '3.11'
404 | - name: Set up Node.js
405 | # if: "!startsWith(matrix.OS, 'osx-arm64')"
406 | uses: actions/setup-node@v4
407 | with:
408 | node-version: 20
409 | architecture: ${{ matrix.arch }}
410 | # cache: 'yarn'
411 | # cache-dependency-path: '**/yarn.lock'
412 | - name: Update
413 | if: "startsWith(matrix.OS, 'ubuntu')"
414 | run: |
415 | sudo apt update
416 | - name: Install dependencies
417 | # if: "!startsWith(runner.name, 'BLADE')"
418 | run: ${{matrix.CMD_DEP}}
419 | - name: Build with pyinstaller for ${{matrix.TARGET}}
420 | run: ${{matrix.CMD_BUILD}}
421 | #- name: Delete .lib from numpy
422 | # run: |
423 | # Remove-Item -path ./src/dist/LedFx/numpy/.libs -recurse -force -ErrorAction Ignore
424 | - name: Load Release URL File from release job
425 | uses: actions/download-artifact@v1
426 | with:
427 | name: release_url
428 | - name: Get Release File Name & Upload URL
429 | id: get_release_info
430 | shell: bash
431 | run: |
432 | value=`cat release_url/release_url.txt`
433 | echo "upload_url=$value" >> $GITHUB_OUTPUT
434 | - name: Pack app
435 | run: ${{matrix.CMD_PACK}}
436 |
437 | - name: Upload Frontend Build as Asset
438 | if: "startsWith(matrix.OS, 'win')"
439 | continue-on-error: true
440 | id: upload-release-asset-2
441 | uses: actions/upload-release-asset@v1
442 | env:
443 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
444 | with:
445 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
446 | asset_path: ./ledfx_frontend_v2/ledfx_frontend_v2.zip
447 | asset_name: ledfx_frontend-v2.0.${{ github.event.inputs.fversion }}.zip
448 | asset_content_type: ${{ matrix.ASSET_MIME}}
449 |
450 | - name: Upload Asset 1
451 | id: upload-release-asset1
452 | uses: YeonV/upload-release-asset@v1
453 | env:
454 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
455 | with:
456 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
457 | asset_path: ${{ matrix.ASSET_PATH}}
458 | asset_name: ${{ matrix.ASSET_NAME}}
459 | asset_content_type: ${{ matrix.ASSET_MIME}}
460 |
461 | - name: Upload Asset 2
462 | if: "startsWith(matrix.OS, 'win')"
463 | id: upload-release-asset2
464 | uses: YeonV/upload-release-asset@v1
465 | env:
466 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
467 | with:
468 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
469 | asset_path: ${{ matrix.ASSET_PATH2}}
470 | asset_name: ${{ matrix.ASSET_NAME2}}
471 | asset_content_type: ${{ matrix.ASSET_MIME2}}
472 |
473 | # - name: Upload Asset 3
474 | # if: "!startsWith(matrix.OS, 'win')"
475 | # id: upload-release-asset3
476 | # uses: YeonV/upload-release-asset@v1
477 | # env:
478 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
479 | # with:
480 | # upload_url: ${{ steps.get_release_info.outputs.upload_url }}
481 | # asset_path: ${{ matrix.ASSET_PATH3}}
482 | # asset_name: ${{ matrix.ASSET_NAME3}}
483 | # asset_content_type: ${{ matrix.ASSET_MIME3}}
484 |
485 | # - name: Save Core for CC
486 | # if: "!startsWith(matrix.OS, 'osx-arm64')"
487 | # uses: actions/upload-artifact@v1
488 | # with:
489 | # name: ${{ matrix.ASSET_NAME}}
490 | # path: ${{ matrix.ASSET_PATH}}
491 |
492 | # Client
493 |
494 | - uses: actions/checkout@v3
495 | with:
496 | repository: YeonV/LedFx-Frontend-v2
497 | ref: main
498 | path: frontend
499 | # - name: Load Core from previous job win
500 | # if: "!startsWith(matrix.OS, 'ubu') && !startsWith(matrix.OS, 'win') && !startsWith(matrix.OS, 'osx-arm64')"
501 | # uses: actions/download-artifact@v1
502 | # with:
503 | # name: ${{matrix.ASSET_NAME}}
504 |
505 | - name: cd
506 | run: |
507 | cd frontend
508 |
509 | - name: Move Core-win
510 | if: "startsWith(matrix.OS, 'win')"
511 | run: |
512 | cp ./src/dist/LedFx/ ./frontend/extraResources/ -Recurse &&
513 | dir ./frontend/extraResources/LedFx
514 |
515 | - name: Move Core-mac
516 | if: "startsWith(matrix.TARGET, 'mac')"
517 | run: |
518 | cp -r ./LedFx.app ./frontend/extraResources/LedFx_core.app
519 | # cd ${{matrix.ASSET_NAME}}
520 | # tar -xf my_files2.tar
521 | # cd ..
522 | # cp -r ${{matrix.ASSET_NAME}}/${{matrix.ASSET_NAME}} ./frontend/extraResources/LedFx_core.app
523 |
524 | - name: Move Core-linux
525 | if: "startsWith(matrix.OS, 'ubu')"
526 | run: |
527 | ls ${{matrix.ASSET_NAME}}
528 | # cp {{matrix.ASSET_NAME}}/{{matrix.ASSET_NAME}}.zip ./frontend/extraResources/LedFx_core.app
529 |
530 | - name: Building Clients
531 | run: |
532 | cd frontend && npm config set legacy-peer-deps true && npm install --force && npm install postcss && npm run distall
533 | env:
534 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
535 |
536 | - name: Load Release URL File from release job
537 | uses: actions/download-artifact@v1
538 | with:
539 | name: release_url
540 |
541 | - name: Move Client Linux
542 | if: "startsWith(matrix.OS, 'ubu')"
543 | run: |
544 | ls ./frontend/dist/
545 | mv ./frontend/dist/ledfx-2.0.${{ github.event.inputs.fversion }}.AppImage ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.AppImage
546 | mv ./frontend/dist/ledfx_2.0.${{ github.event.inputs.fversion }}_amd64.snap ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.snap
547 |
548 | - name: Upload Win-Portable as Asset
549 | if: "startsWith(matrix.OS, 'win')"
550 | id: upload-release-asset-portable
551 | uses: YeonV/upload-release-asset@v1
552 | env:
553 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
554 | with:
555 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
556 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win-portable.exe
557 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win-portable.exe
558 | asset_content_type: application/vnd.microsoft.portable-executable
559 |
560 | - name: Upload Win-Setup as Asset
561 | if: "startsWith(matrix.OS, 'win')"
562 | id: upload-release-asset-setup
563 | uses: YeonV/upload-release-asset@v1
564 | env:
565 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
566 | with:
567 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
568 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win-setup.exe
569 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win-setup.exe
570 | asset_content_type: application/vnd.microsoft.portable-executable
571 |
572 | - name: Upload Win-Zip as Asset
573 | if: "startsWith(matrix.OS, 'win')"
574 | id: upload-release-asset-zip
575 | uses: YeonV/upload-release-asset@v1
576 | env:
577 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
578 | with:
579 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
580 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win.zip
581 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--win.zip
582 | asset_content_type: application/zip
583 |
584 | - name: Upload Win-CC as Asset
585 | if: "startsWith(matrix.OS, 'win')"
586 | id: upload-release-asset-cc
587 | uses: YeonV/upload-release-asset@v1
588 | env:
589 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
590 | with:
591 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
592 | asset_path: ./frontend/dist/LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--win-setup.exe
593 | asset_name: LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--win-setup.exe
594 | asset_content_type: application/vnd.microsoft.portable-executable
595 |
596 | - name: Upload Mac-Zip as Asset
597 | if: "startsWith(matrix.runtime, 'osx')"
598 | id: upload-release-asset-zip-mac
599 | uses: YeonV/upload-release-asset@v1
600 | env:
601 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
602 | with:
603 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
604 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.zip
605 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.zip
606 | asset_content_type: application/zip
607 |
608 | - name: Upload Mac-CC as Asset
609 | if: "startsWith(matrix.runtime, 'osx')"
610 | id: upload-release-asset-cc-mac
611 | uses: YeonV/upload-release-asset@v1
612 | env:
613 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
614 | with:
615 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
616 | asset_path: ./frontend/dist/LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.zip
617 | asset_name: LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.zip
618 | asset_content_type: application/zip
619 |
620 | - name: Upload Mac-Dmg as Asset
621 | if: "startsWith(matrix.runtime, 'osx')"
622 | id: upload-release-asset-dmg-mac
623 | uses: YeonV/upload-release-asset@v1
624 | env:
625 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
626 | with:
627 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
628 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.dmg
629 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.dmg
630 | asset_content_type: application/octet-stream
631 |
632 | - name: Upload Mac-CC-Dmg as Asset
633 | if: "startsWith(matrix.runtime, 'osx')"
634 | id: upload-release-asset-cc-mac-dmg
635 | uses: YeonV/upload-release-asset@v1
636 | env:
637 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
638 | with:
639 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
640 | asset_path: ./frontend/dist/LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.dmg
641 | asset_name: LedFx_CC-v2.0.${{ github.event.inputs.fversion }}--mac-${{matrix.arch}}.dmg
642 | asset_content_type: application/octet-stream
643 |
644 | - name: Upload Linux as Asset
645 | if: "startsWith(matrix.OS, 'ubu')"
646 | id: upload-release-asset-linux
647 | uses: YeonV/upload-release-asset@v1
648 | env:
649 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
650 | with:
651 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
652 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.AppImage
653 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.AppImage
654 | asset_content_type: application/octet-stream
655 |
656 | - name: Upload Linux as Asset
657 | if: "startsWith(matrix.OS, 'ubu')"
658 | id: upload-release-asset-linux2
659 | uses: YeonV/upload-release-asset@v1
660 | env:
661 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
662 | with:
663 | upload_url: ${{ steps.get_release_info.outputs.upload_url }}
664 | asset_path: ./frontend/dist/LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.snap
665 | asset_name: LedFx_client-v2.0.${{ github.event.inputs.fversion }}--linux-${{matrix.arch}}.snap
666 | asset_content_type: application/octet-stream
667 |
668 | - name: Send Discord Post
669 | if: "startsWith(matrix.OS, 'ubu')"
670 | run: |
671 | curl -H "Content-Type: application/json" -d '{"content": "**[DOWNLOAD]** https://github.com/YeonV/LedFx-Builds/releases/tag/v2.0.${{ github.event.inputs.fversion }}\n**[PREVIEW]** \n\n**Please** do not send messages here. Use the [testing]-Post instead!", "thread_name": "[beta] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
672 | curl -H "Content-Type: application/json" -d '{"content": "https://github.com/YeonV/LedFx-Builds/releases/tag/v2.0.${{ github.event.inputs.fversion }}", "thread_name": "[testing] Release 2.0.${{ github.event.inputs.fversion }}"}' ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
673 |
--------------------------------------------------------------------------------
/.github/workflows/__aubio.yml_OFF:
--------------------------------------------------------------------------------
1 | name: Build Aubio Wheel
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | build:
8 | runs-on: windows-latest
9 |
10 | steps:
11 | - name: Checkout code
12 | uses: actions/checkout@v2
13 |
14 | - name: Set up Python
15 | uses: actions/setup-python@v2
16 | with:
17 | python-version: '3.12'
18 |
19 | - name: Get full Python version
20 | id: full-python-version
21 | run: echo version=$(python -c "import sys; print('-'.join(str(v) for v in sys.version_info))") >> $GITHUB_OUTPUT
22 |
23 | - name: Install poetry
24 | run: |
25 | curl -sSL https://install.python-poetry.org | python - -y
26 |
27 | - name: Update Path for Windows
28 | run: echo "$APPDATA\Roaming\Python\Scripts" >> $GITHUB_PATH
29 |
30 | - name: Enable long paths for git on Windows
31 |
32 | # Enable handling long path names (+260 char) on the Windows platform
33 | # https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation
34 | run: git config --system core.longpaths true
35 |
36 | - name: Configure poetry
37 | run: poetry config virtualenvs.in-project true
38 |
39 | - name: Clone Aubio Repo
40 | run: |
41 | git clone https://git.aubio.org/aubio/aubio.git
42 | cd aubio
43 | poetry install
44 |
45 | - name: Build Aubio Wheel
46 | run: |
47 | cd aubio
48 | poetry build
49 |
50 | - name: Upload Wheel as Artifact
51 | uses: actions/upload-artifact@v4
52 | with:
53 | name: aubio_wheel
54 | path: aubio/dist/*.whl
55 | retention-days: 1
56 |
--------------------------------------------------------------------------------
/.github/workflows/__tool.yml_OFF:
--------------------------------------------------------------------------------
1 | name: Build Tool
2 |
3 | on:
4 | workflow_dispatch:
5 | # Inputs the workflow accepts.
6 | inputs:
7 | fversion:
8 | description: 'Frontend Version'
9 | default: '50'
10 | required: false
11 |
12 | jobs:
13 | tool:
14 | name: ToolCache ${{ matrix.runtime }}
15 | runs-on: ${{ matrix.os }}
16 | strategy:
17 | fail-fast: false
18 | matrix:
19 | include:
20 | - os: ubuntu-latest
21 | continue-on-error: true
22 | TARGET: ubuntu
23 | runtime: linux-x64
24 |
25 | - os: macos-latest
26 | continue-on-error: true
27 | runtime: osx-x64
28 | TARGET: macos
29 |
30 | - os: osx-arm64
31 | continue-on-error: true
32 | runtime: osx-arm64
33 | TARGET: macos
34 |
35 | - os: windows-latest
36 | continue-on-error: true
37 | runtime: win-x64
38 | TARGET: windows
39 |
40 | steps:
41 | - name: Clear any existing tool cache
42 | run: |
43 | mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old"
44 | mkdir -p "${{ runner.tool_cache }}"
45 | - name: Set up Python 3.10
46 | if: "!startsWith(matrix.OS, 'win') && !startsWith(matrix.OS, 'osx')"
47 | uses: actions/setup-python@v4
48 | with:
49 | python-version: '3.10'
50 | - name: Set up Python 3.9
51 | if: "startsWith(matrix.OS, 'win')"
52 | uses: actions/setup-python@v4
53 | with:
54 | python-version: '3.9.13'
55 | - name: Set up Python 3.11
56 | if: "startsWith(matrix.OS, 'osx')"
57 | uses: actions/setup-python@v4
58 | with:
59 | python-version: '3.11'
60 |
61 | - name: Setup Node 20
62 | uses: actions/setup-node@v4
63 | with:
64 | node-version: 20
65 |
66 | - name: Archive tool cache
67 | run: |
68 | cd "${{ runner.tool_cache }}"
69 | tar -czf tool_cache-${{ matrix.OS }}.tar.gz *
70 | - name: Upload tool cache artifact
71 | uses: actions/upload-artifact@v2
72 | with:
73 | path: ${{runner.tool_cache}}/tool_cache-${{ matrix.OS }}.tar.gz
74 |
--------------------------------------------------------------------------------
/.github/workflows/test_android.yml:
--------------------------------------------------------------------------------
1 | name: Debug Android Build
2 | on:
3 | workflow_dispatch:
4 |
5 | jobs:
6 | build:
7 | runs-on: ubuntu-22.04
8 | steps:
9 | - name: Checkout
10 | uses: actions/checkout@v4
11 | with:
12 | repository: broccoliboy/ledfx-android
13 | submodules: recursive
14 | - name: Setup python
15 | uses: actions/setup-python@v5
16 | with:
17 | architecture: x64
18 | python-version: 3.12
19 | - name: Setup Java 17 required by Gradle
20 | uses: actions/setup-java@v4
21 | with:
22 | distribution: 'temurin' # or 'zulu','liberica', etc.
23 | java-version: '17'
24 | - name: Set JAVA_HOME
25 | run: |
26 | echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
27 | - name: Prepare virtual environment
28 | run: |
29 | python3 -m venv venv
30 | source venv/bin/activate
31 | echo "Using Python==$(python --version)"
32 | - name: Install and upgrade dependencies
33 | run: |
34 | sudo apt update
35 | sudo apt install -y \
36 | git \
37 | zip \
38 | unzip \
39 | openjdk-17-jdk \
40 | python3-pip \
41 | autoconf \
42 | automake \
43 | libtool \
44 | pkg-config \
45 | zlib1g-dev \
46 | libncurses5-dev \
47 | libncursesw5-dev \
48 | libtinfo5 \
49 | cmake \
50 | libffi-dev \
51 | libssl-dev
52 | export PATH=$PATH:~/.local/bin/
53 | python3 -m pip install --upgrade pip
54 | python3 -m pip install --upgrade git+https://github.com/kivy/buildozer
55 | - name: Build with Buildozer
56 | run: buildozer android debug
57 | - name: Upload artifacts
58 | uses: actions/upload-artifact@v4
59 | with:
60 | name: package
61 | path: ./bin/*.apk
62 | # release:
63 | # if: startsWith(github.ref, 'refs/tags/v')
64 | # runs-on: ubuntu-22.04
65 | # needs: build
66 | # permissions:
67 | # contents: write
68 | # steps:
69 | # - name: Checkout
70 | # uses: actions/checkout@v4
71 | # - name: Download artifacts
72 | # uses: actions/download-artifact@v4
73 | # with:
74 | # name: package
75 | # path: ./bin
76 | # - name: GitHub release
77 | # env:
78 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
79 | # run: |
80 | # gh release create "${{ github.ref_name }}" ./bin/*.apk --title "${{ github.ref_name }}" --notes "Release ${GITHUB_REF_NAME}"
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | venv/
2 | frontend/
3 | backend/
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Yeon Vinzenz Varapragasam
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LedFx Build Pipelines
2 |
3 | ##   [](https://github.com/YeonV) [](https://github.com/YeonV)
4 |
5 | 
6 |
7 |
8 | ---
9 |
10 | I just realized this repo got some stars even though its so undercover.
11 |
12 | ♥ Thank you soo much ♥
13 |
--------------------------------------------------------------------------------
/dev.bat:
--------------------------------------------------------------------------------
1 | cd frontend
2 | if "%~1"=="" goto both
3 | if "%~1"=="frontend" (goto frontend) else goto backend
4 |
5 | :frontend
6 | yarn start
7 | goto done
8 |
9 | :backend
10 | cd..
11 | venv\Scripts\activate.bat & ledfx -vv --offline
12 | goto done
13 |
14 | :both
15 | cd ..
16 | call wt -d "./backend" cmd /k "title LedFx-Backend & code . & cd .. && venv\Scripts\activate.bat & ledfx -vv --offline"; ^
17 | split-pane -H -d "./frontend" cmd /k "title LedFx-Frontend & code . & yarn start"; ^
18 | split-pane -V -d "./" cmd /k "title LedFx & echo =============================== & echo LedFx Dev Environment & echo ------------------------------- & echo Commands to start: & echo dev & echo dev frontend & echo dev backend & echo =============================== & echo Backend: http://localhost:8888 & echo Frontend: http://localhost:3000 & echo ===============================
19 |
20 | :done
21 | cls
22 |
23 |
--------------------------------------------------------------------------------
/init.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | cls
3 | if "%~1"=="" (
4 | SET project=ledfx_v2
5 | ) else (
6 | SET project=%1
7 | )
8 |
9 | if exist .\%project%\ (
10 | echo A folder named '%project%' is already existing!
11 | pause
12 | goto end
13 | )
14 | FOR /F "tokens=2" %%F IN ('"python --version"') DO SET v=%%F
15 | SET pyversion=%v:~0,4%
16 | if %pyversion%==3.10 (
17 | echo Initializing LedFx-Dev for Python %pyversion% into '%project%':
18 | ) else if %pyversion%==3.9. (
19 | echo Initializing LedFx-Dev for Python %pyversion% into '%project%':
20 | ) else (
21 | echo Unsupport python version %pyversion%
22 | pause
23 | goto end
24 | )
25 | git clone --quiet https://github.com/YeonV/LedFx-Builds %project% && cd %project%
26 | echo Getting Backend...
27 | git clone --quiet https://github.com/LedFx/LedFx backend
28 | echo Getting Frontend...
29 | git clone --quiet https://github.com/YeonV/LedFx-Frontend-v2 frontend
30 | echo Creating Python Venv...
31 | python -m venv venv
32 | cd venv
33 |
34 | call .\Scripts\activate.bat
35 | echo Installing dependencies ...
36 | pip install pipwin
37 | pipwin refresh
38 | pipwin install pywin32
39 | python .\Scripts\pywin32_postinstall.py -install
40 | pip install numpy
41 | pip install pillow
42 | pip install "chardet<4.0"
43 | pip install --upgrade git+https://github.com/Digital-Sapphire/PyUpdater.git@main
44 | pip install sounddevice==0.4.4
45 | if %pyversion%==3.10 (
46 | copy ..\tools\win\aubio-0.5.0a0-cp310-cp310-win_amd64.whl .
47 | pip install -q aubio-0.5.0a0-cp310-cp310-win_amd64.whl
48 | ) else if %pyversion%==3.9. (
49 | copy ..\tools\win\aubio-0.5.0a0-cp39-cp39-win_amd64.whl .
50 | pip install -q aubio-0.5.0a0-cp39-cp39-win_amd64.whl
51 | )
52 | cd ..
53 | cd backend
54 | python setup.py develop
55 |
56 | if %pyversion%==3.10 (
57 | copy ..\tools\win\libportaudio64bit.dll ..\venv\Lib\site-packages\sounddevice-0.4.4-py3.10-win-amd64.egg\_sounddevice_data\portaudio-binaries >nul 2>&1
58 | ) else if %pyversion%==3.9. (
59 | copy ..\tools\win\libportaudio64bit.dll ..\venv\Lib\site-packages\sounddevice-0.4.4-py3.9-win-amd64.egg\_sounddevice_data\portaudio-binaries >nul 2>&1
60 | ) else (
61 | echo Unsupport python version %pyversion%
62 | pause
63 | goto end
64 | )
65 | cd ..
66 | cd frontend
67 | echo Installing Frontend...
68 | where yarn.exe >nul 2>&1 && echo yarn already installed || call ..\tools\win\install-yarn.bat
69 | echo Grab a coffee!
70 | call ..\install.bat
71 | cls
72 | cd %~dp0
73 | @REM del init.bat
74 | cd %project%
75 | echo DONE!
76 | echo =====
77 | echo Commands to start:
78 | echo dev backend
79 | echo dev frontend
80 | echo dev
81 | echo =====
82 | echo You want to start now?
83 | pause
84 | del init.bat
85 | del install.bat
86 | del .gitignore
87 | del LICENSE
88 | del README.md
89 | rmdir .github /s /q
90 | rmdir .git /s /q
91 | powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Desktop\LedFx-Dev.lnk');$s.TargetPath='%~dp0%project%\dev.bat';$s.WorkingDirectory='%~dp0%project%\';$s.IconLocation='%~dp0%project%\backend\icons\discord.ico';$s.Save()"
92 | call dev.bat
93 |
94 | :end
95 |
--------------------------------------------------------------------------------
/install.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | cd ..
3 | cd frontend
4 | yarn -s
5 |
--------------------------------------------------------------------------------
/tools/Readme.md:
--------------------------------------------------------------------------------
1 | Some tools for ledfx development
2 |
--------------------------------------------------------------------------------
/tools/cors.patch:
--------------------------------------------------------------------------------
1 | diff --git a/ledfx/api/__init__.py b/ledfx/api/__init__.py
2 | index 22d7dbd6..f035e456 100644
3 | --- a/ledfx/api/__init__.py
4 | +++ b/ledfx/api/__init__.py
5 | @@ -12,6 +12,11 @@ _LOGGER = logging.getLogger(__name__)
6 |
7 | SNACKBAR_OPTIONS = ["success", "info", "warning", "error"]
8 |
9 | +@web.middleware
10 | +async def cors_middleware(request, handler):
11 | + response = await handler(request)
12 | + response.headers['Access-Control-Allow-Private-Network'] = 'true'
13 | + return response
14 |
15 | @BaseRegistry.no_registration
16 | class RestEndpoint(BaseRegistry):
17 | @@ -192,6 +197,7 @@ class RestApi(RegistryLoader):
18 | self._ledfx = ledfx
19 |
20 | def register_routes(self, app):
21 | + app.middlewares.append(cors_middleware)
22 | methods = ["GET", "PUT", "POST", "DELETE"]
23 | cors = aiohttp_cors.setup(
24 | app,
25 |
--------------------------------------------------------------------------------
/tools/linux/yzlinux.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | import importlib.util
4 |
5 | # specify the module that needs to be
6 | # imported relative to the path of the
7 | # module
8 | spec_imports = importlib.util.spec_from_file_location("hiddenimports","/home/runner/work/LedFx-Builds/LedFx-Builds/src/hiddenimports.py")
9 |
10 | # creates a new module based on spec
11 | imp = importlib.util.module_from_spec(spec_imports)
12 |
13 | # executes the module in its own namespace
14 | # when a module is imported or reloaded.
15 | spec_imports.loader.exec_module(imp)
16 |
17 | spec_root = os.path.abspath(SPECPATH)
18 |
19 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
20 | block_cipher = None
21 | print(venv_root)
22 |
23 | a = Analysis([f'{spec_root}/ledfx/__main__.py'],
24 | pathex=[f'{spec_root}', f'{spec_root}/ledfx'],
25 | binaries=[],
26 | datas=[(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.')],
27 | hiddenimports=imp.hiddenimports,
28 | hookspath=[f'{venv_root}/lib/site-packages/pyupdater/hooks'],
29 | runtime_hooks=[],
30 | excludes=[],
31 | win_no_prefer_redirects=False,
32 | win_private_assemblies=False,
33 | cipher=block_cipher,
34 | noarchive=False)
35 | pyz = PYZ(a.pure, a.zipped_data,
36 | cipher=block_cipher)
37 | exe = EXE(pyz,
38 | a.scripts,
39 | a.binaries,
40 | a.zipfiles,
41 | a.datas,
42 | name='LedFx',
43 | debug=False,
44 | bootloader_ignore_signals=False,
45 | strip=False,
46 | upx=True,
47 | console=False,
48 | icon=f'{spec_root}/ledfx_assets/discord.ico')
49 |
--------------------------------------------------------------------------------
/tools/mac/aubio-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/mac/aubio-0.4.9-cp39-cp39-macosx_10_9_x86_64.whl
--------------------------------------------------------------------------------
/tools/mac/aubio-0.5.0a0-cp39-cp39-macosx_10_9_x86_64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/mac/aubio-0.5.0a0-cp39-cp39-macosx_10_9_x86_64.whl
--------------------------------------------------------------------------------
/tools/mac/libsamplerate-arm64.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/mac/libsamplerate-arm64.dylib
--------------------------------------------------------------------------------
/tools/mac/libsamplerate-x86-x64.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/mac/libsamplerate-x86-x64.dylib
--------------------------------------------------------------------------------
/tools/mac/mac-arm64.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | from ledfx.consts import PROJECT_VERSION
5 | # from PyInstaller.utils.hooks import copy_metadata
6 | # from PyInstaller.utils.hooks import collect_data_files
7 |
8 | spec_root = os.path.abspath(SPECPATH)
9 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
10 | block_cipher = None
11 |
12 | # Remove the ledfx.env file if it exists
13 | os.remove("ledfx.env") if os.path.exists("ledfx.env") else None
14 |
15 | # Get environment variables
16 | github_sha_value = os.getenv('GITHUB_SHA')
17 |
18 | # Initialize variables
19 | variables = [f"GITHUB_SHA = {github_sha_value}"]
20 | variables.append('IS_RELEASE = false')
21 |
22 | # Write to ledfx.env file
23 | with open('ledfx.env', 'a') as file:
24 | file.write('\n'.join(variables))
25 |
26 | print(venv_root)
27 | print(f'{spec_root}')
28 | yzdata = [(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.'), (f'{spec_root}/ledfx.env','.')]
29 | # yzdata += collect_data_files('bokeh')
30 | # yzdata += collect_data_files('xyzservices')
31 | # yzdata += copy_metadata('bokeh')
32 | # yzdata += copy_metadata('xyzservices')
33 |
34 | a = Analysis([f'{spec_root}/ledfx/__main__.py'],
35 | pathex=[f'{spec_root}', f'{spec_root}/ledfx'],
36 | binaries=[],
37 | datas=yzdata,
38 | hiddenimports=hiddenimports,
39 | hookspath=[f'{venv_root}/lib/site-packages/pyupdater/hooks'],
40 | runtime_hooks=[],
41 | excludes=[],
42 | win_no_prefer_redirects=False,
43 | win_private_assemblies=False,
44 | cipher=block_cipher,
45 | noarchive=False)
46 | pyz = PYZ(a.pure, a.zipped_data,
47 | cipher=block_cipher)
48 | exe = EXE(pyz,
49 | a.scripts,
50 | [],
51 | exclude_binaries=True,
52 | name='LedFx_v2',
53 | debug=False,
54 | bootloader_ignore_signals=False,
55 | strip=False,
56 | upx=True,
57 | console=False,
58 | # target_arch='universal2',
59 | # target_arch='arm64',
60 | # target_arch='x86_64',
61 | icon=f'{spec_root}/ledfx_assets/logo.icns')
62 | app = BUNDLE(exe,
63 | a.binaries,
64 | a.zipfiles,
65 | a.datas,
66 | name='LedFx_v2',
67 | icon=f'{spec_root}/ledfx_assets/logo.icns',
68 | bundle_identifier='com.blade.ledfx',
69 | version=f'{PROJECT_VERSION}',
70 | info_plist={
71 | 'CFBundleShortVersionString': f'{PROJECT_VERSION}',
72 | 'CFBundleVersion': f'{PROJECT_VERSION}',
73 | 'LSApplicationCategoryType': 'public.app-category.music',
74 | 'NSHumanReadableCopyright': 'Copyright © 2024 YeonV aka Blade',
75 | 'NSPrincipalClass': 'NSApplication',
76 | 'NSAppleScriptEnabled': False,
77 | 'NSMicrophoneUsageDescription': 'LedFx uses audio for sound visualization',
78 | 'com.apple.security.device.audio-input': True,
79 | 'com.apple.security.device.microphone': True,
80 | },
81 | entitlements_plist={
82 | 'com.apple.security.device.audio-input': True,
83 | 'com.apple.security.device.microphone': True,
84 | })
85 | # Cleanup ledfx.env
86 | os.remove("ledfx.env")
87 |
--------------------------------------------------------------------------------
/tools/mac/mac.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | from ledfx.consts import PROJECT_VERSION
5 | # from PyInstaller.utils.hooks import copy_metadata
6 | # from PyInstaller.utils.hooks import collect_data_files
7 |
8 | spec_root = os.path.abspath(SPECPATH)
9 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
10 | block_cipher = None
11 |
12 | # Remove the ledfx.env file if it exists
13 | os.remove("ledfx.env") if os.path.exists("ledfx.env") else None
14 |
15 | # Get environment variables
16 | github_sha_value = os.getenv('GITHUB_SHA')
17 |
18 | # Initialize variables
19 | variables = [f"GITHUB_SHA = {github_sha_value}"]
20 | variables.append('IS_RELEASE = false')
21 |
22 | # Write to ledfx.env file
23 | with open('ledfx.env', 'a') as file:
24 | file.write('\n'.join(variables))
25 |
26 | print(venv_root)
27 | print(f'{spec_root}')
28 | yzdata = [(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.'), (f'{spec_root}/ledfx.env','.')]
29 | # yzdata += collect_data_files('bokeh')
30 | # yzdata += collect_data_files('xyzservices')
31 | # yzdata += copy_metadata('bokeh')
32 | # yzdata += copy_metadata('xyzservices')
33 |
34 | a = Analysis([f'{spec_root}/ledfx/__main__.py'],
35 | pathex=[f'{spec_root}', f'{spec_root}/ledfx'],
36 | binaries=[],
37 | datas=yzdata,
38 | hiddenimports=hiddenimports,
39 | hookspath=[f'{venv_root}/lib/site-packages/pyupdater/hooks'],
40 | runtime_hooks=[],
41 | excludes=[],
42 | win_no_prefer_redirects=False,
43 | win_private_assemblies=False,
44 | cipher=block_cipher,
45 | noarchive=False)
46 | pyz = PYZ(a.pure, a.zipped_data,
47 | cipher=block_cipher)
48 | exe = EXE(pyz,
49 | a.scripts,
50 | [],
51 | exclude_binaries=True,
52 | name='LedFx_v2',
53 | debug=False,
54 | bootloader_ignore_signals=False,
55 | strip=False,
56 | upx=True,
57 | console=False,
58 | icon=f'{spec_root}/ledfx_assets/logo.icns')
59 | app = BUNDLE(exe,
60 | a.binaries,
61 | a.zipfiles,
62 | a.datas,
63 | name='LedFx_v2',
64 | icon=f'{spec_root}/ledfx_assets/logo.icns',
65 | bundle_identifier='com.blade.ledfx',
66 | version=f'{PROJECT_VERSION}',
67 | info_plist={
68 | 'CFBundleShortVersionString': f'{PROJECT_VERSION}',
69 | 'CFBundleVersion': f'{PROJECT_VERSION}',
70 | 'LSApplicationCategoryType': 'public.app-category.music',
71 | 'NSHumanReadableCopyright': 'Copyright © 2024 YeonV aka Blade',
72 | 'NSPrincipalClass': 'NSApplication',
73 | 'NSAppleScriptEnabled': False,
74 | 'NSMicrophoneUsageDescription': 'LedFx uses audio for sound visualization',
75 | 'com.apple.security.device.audio-input': True,
76 | 'com.apple.security.device.microphone': True,
77 | },
78 | entitlements_plist={
79 | 'com.apple.security.device.audio-input': True,
80 | 'com.apple.security.device.microphone': True,
81 | })
82 | # Cleanup ledfx.env
83 | os.remove("ledfx.env")
84 |
--------------------------------------------------------------------------------
/tools/mac/numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/mac/numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl
--------------------------------------------------------------------------------
/tools/mac/selfhosted.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | import platform
4 | import shutil
5 | import glob
6 | import os
7 |
8 | def link_homebrew_tool(dir, formula_dir):
9 | shutil.rmtree(dir, ignore_errors=True)
10 | os.makedirs(dir, exist_ok=True)
11 | x64_complete = os.path.join(tool_dir, 'x64.complete')
12 | x86_complete = os.path.join(tool_dir, 'x86.complete')
13 | open(x64_complete, 'x') if not os.path.isfile(x64_complete) else 0
14 | open(x86_complete, 'x') if not os.path.isfile(x86_complete) else 0
15 |
16 | os.symlink(formula_dir, os.path.join(dir, 'x64'), target_is_directory=True)
17 | os.symlink(formula_dir, os.path.join(dir, 'x86'), target_is_directory=True)
18 | return
19 |
20 | tool_cache_dir = os.path.dirname(os.path.abspath(__file__))
21 | homebrew_root = '/opt/homebrew' if platform.processor() == 'arm' else '/usr/local'
22 | homebrew_cellar = os.path.join(homebrew_root, 'Cellar')
23 | for formula in glob.glob(os.path.join(homebrew_cellar, '*/*/')):
24 | rel_dir = os.path.relpath(formula, homebrew_cellar)
25 | tool_dir = os.path.join(tool_cache_dir, rel_dir)
26 | link_homebrew_tool(tool_dir, formula)
27 |
--------------------------------------------------------------------------------
/tools/sentry.patch:
--------------------------------------------------------------------------------
1 | diff --git a/hiddenimports.py b/hiddenimports.py
2 | index c92e3418..40d0596e 100644
3 | --- a/hiddenimports.py
4 | +++ b/hiddenimports.py
5 | @@ -29,13 +29,5 @@ hiddenimports = [
6 | "PIL.Image",
7 | "PIL.ImageDraw",
8 | "PIL.ImageEnhance",
9 | - "sentry_sdk.integrations.stdlib",
10 | - "sentry_sdk.integrations.excepthook",
11 | - "sentry_sdk.integrations.dedupe",
12 | - "sentry_sdk.integrations.atexit",
13 | - "sentry_sdk.integrations.modules",
14 | - "sentry_sdk.integrations.argv",
15 | - "sentry_sdk.integrations.logging",
16 | - "sentry_sdk.integrations.threading",
17 | "vnoise",
18 | ]
19 | diff --git a/ledfx/__main__.py b/ledfx/__main__.py
20 | index cc720dfe..d99566dd 100644
21 | --- a/ledfx/__main__.py
22 | +++ b/ledfx/__main__.py
23 | @@ -16,8 +16,6 @@ import os
24 | import sys
25 | from logging.handlers import RotatingFileHandler
26 |
27 | -from ledfx.sentry_config import setup_sentry
28 | -
29 | try:
30 | import psutil
31 |
32 | @@ -269,8 +267,6 @@ def main():
33 | else:
34 | p.nice(15)
35 |
36 | - if args.offline_mode is False:
37 | - setup_sentry()
38 |
39 | if args.sentry_test:
40 | _LOGGER.warning("Steering LedFx into a brick wall.")
41 | diff --git a/ledfx/sentry_config.py b/ledfx/sentry_config.py
42 | deleted file mode 100644
43 | index 849bb723..00000000
44 | --- a/ledfx/sentry_config.py
45 | +++ /dev/null
46 | @@ -1,62 +0,0 @@
47 | -import logging
48 | -import os
49 | -
50 | -import sentry_sdk
51 | -from sentry_sdk.integrations.aiohttp import AioHttpIntegration
52 | -
53 | -from ledfx.consts import PROJECT_VERSION
54 | -from ledfx.utils import currently_frozen
55 | -
56 | -_LOGGER = logging.getLogger(__name__)
57 | -
58 | -
59 | -def setup_sentry():
60 | - """
61 | - Set up the Sentry configuration based on the environment variables.
62 | - If running in development mode, a development Sentry DSN is used along with a sample rate of 0.
63 | - If running in production mode, a production Sentry DSN is used along with a sample rate of 0.
64 | - The release version is determined based on the project version and the git commit hash.
65 | - """
66 | - is_release = os.getenv("IS_RELEASE", "false").lower()
67 | -
68 | - if is_release == "false":
69 | - _LOGGER.debug("Running in development mode.")
70 | - sentry_dsn = "https://b192934eebd517c86bf7e9c512b3888a@o482797.ingest.sentry.io/4506350241841152"
71 | - # Change sample_rate to 1 to look at http calls, so all rest traffic stats
72 | - sample_rate = 0
73 | -
74 | - try:
75 | - if currently_frozen():
76 | - commit_hash = os.getenv("GITHUB_SHA", "unknown")
77 | - else:
78 | - from subprocess import PIPE, Popen
79 | -
80 | - process = Popen(["git", "rev-parse", "HEAD"], stdout=PIPE)
81 | - (commit_hash, err) = process.communicate()
82 | - commit_hash = commit_hash[:7].decode("utf-8")
83 | - exit_code = process.wait()
84 | - # TODO: trap explicit exceptions if it becomes clear what they are
85 | - except Exception as e:
86 | - commit_hash = "unknown"
87 | - _LOGGER.warning(f"Failed to get git commit hash: {e}")
88 | - finally:
89 | - commit_hash = commit_hash[:7]
90 | - release = f"ledfx@{PROJECT_VERSION}-{commit_hash}"
91 | - else:
92 | - _LOGGER.debug("Running in production mode.")
93 | - # production / release behaviour due to injection of "prod" or anything really into ENVIRONMENT env variable
94 | - sentry_dsn = "https://dc6070345a8dfa1f2f24433d16f7a133@o482797.ingest.sentry.io/4506350233321472"
95 | - sample_rate = 0
96 | - release = f"ledfx@{PROJECT_VERSION}"
97 | -
98 | - _LOGGER.info("Sentry Configuration:")
99 | - _LOGGER.info(f"DSN (first ten): {sentry_dsn[8:18]}")
100 | - _LOGGER.info(f"Sample rate: {sample_rate}")
101 | - _LOGGER.info(f"LedFx release: {release}")
102 | -
103 | - sentry_sdk.init(
104 | - sentry_dsn,
105 | - traces_sample_rate=sample_rate,
106 | - integrations=[AioHttpIntegration()],
107 | - release=release,
108 | - )
109 | diff --git a/pyproject.toml b/pyproject.toml
110 | index e8e317fd..73579deb 100644
111 | --- a/pyproject.toml
112 | +++ b/pyproject.toml
113 | @@ -22,7 +22,6 @@ dependencies = [
114 | "python-rtmidi>=1.5.8",
115 | "requests>=2.31.0",
116 | "sacn>=1.9.0",
117 | - "sentry-sdk>=1.40.4",
118 | "sounddevice>=0.4.6",
119 | "samplerate>=0.2.1",
120 | "icmplib>=3.0.4",
121 |
--------------------------------------------------------------------------------
/tools/sentry_android.patch:
--------------------------------------------------------------------------------
1 | diff --git a/buildozer.spec b/buildozer.spec
2 | index 41ad7de..4cf2841 100644
3 | --- a/buildozer.spec
4 | +++ b/buildozer.spec
5 | @@ -28,6 +28,7 @@ source.include_exts = py,png,jpg,kv,atlas
6 |
7 | # (list) List of directory to exclude (leave empty to not exclude anything)
8 | #source.exclude_dirs = tests, bin, venv
9 | +source.exclude_dirs = Lib/test
10 |
11 | # (list) List of exclusions using pattern matching
12 | # Do not prefix with './'
13 | diff --git a/recipes/ledfx/__init__.py b/recipes/ledfx/__init__.py
14 | index 824ea11..f78d1b8 100644
15 | --- a/recipes/ledfx/__init__.py
16 | +++ b/recipes/ledfx/__init__.py
17 | @@ -41,7 +41,6 @@ class LedFxRecipe(PyProjectRecipe):
18 | 'python-dotenv>=1.0.0,<2.0.0',
19 | 'vnoise>=0.1.0,<1.0.0',
20 | 'webcolors>=24',
21 | - 'sentry-sdk>=1.40.4'
22 | ]
23 |
24 |
25 |
--------------------------------------------------------------------------------
/tools/win/aubio-0.5.0a0-cp310-cp310-win_amd64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/aubio-0.5.0a0-cp310-cp310-win_amd64.whl
--------------------------------------------------------------------------------
/tools/win/aubio-0.5.0a0-cp312-cp312-win_amd64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/aubio-0.5.0a0-cp312-cp312-win_amd64.whl
--------------------------------------------------------------------------------
/tools/win/aubio-0.5.0a0-cp39-cp39-win_amd64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/aubio-0.5.0a0-cp39-cp39-win_amd64.whl
--------------------------------------------------------------------------------
/tools/win/hook-samplerate.py:
--------------------------------------------------------------------------------
1 |
2 | """
3 | samplerate:
4 | https://github.com/tuxu/python-samplerate/
5 | """
6 |
7 | import os
8 |
9 | from PyInstaller.compat import is_darwin, is_win
10 | from PyInstaller.utils.hooks import get_package_paths
11 |
12 | sfp = get_package_paths("samplerate")
13 |
14 | path = None
15 | if is_win:
16 | path = os.path.join(sfp[0], "samplerate", "_samplerate_data")
17 | elif is_darwin:
18 | path = os.path.join(
19 | sfp[0], "samplerate", "_samplerate_data", "libsamplerate.dylib"
20 | )
21 |
22 | if path is not None and os.path.exists(path):
23 | binaries = [(path,
24 | os.path.join("samplerate", "_samplerate_data"))]
--------------------------------------------------------------------------------
/tools/win/install-yarn.bat:
--------------------------------------------------------------------------------
1 | npm --silent --location=global install yarn
2 |
--------------------------------------------------------------------------------
/tools/win/libportaudio64bit.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/libportaudio64bit.dll
--------------------------------------------------------------------------------
/tools/win/libsamplerate-32bit.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/libsamplerate-32bit.dll
--------------------------------------------------------------------------------
/tools/win/libsamplerate-64bit.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/libsamplerate-64bit.dll
--------------------------------------------------------------------------------
/tools/win/numpy-1.22.4+vanilla-cp310-cp310-win_amd64.whl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YeonV/LedFx-Builds/2e061c4bd169857d31a34cbd2f93584d729ca4c5/tools/win/numpy-1.22.4+vanilla-cp310-cp310-win_amd64.whl
--------------------------------------------------------------------------------
/tools/win/req.txt:
--------------------------------------------------------------------------------
1 | aiohttp==3.7.4.post0
2 | aiohttp-cors==0.7.0
3 | altgraph==0.17.2
4 | appdirs==1.4.4
5 | async-timeout==3.0.1
6 | attrs==21.4.0
7 | beautifulsoup4==4.11.1
8 | bsdiff4==1.2.2
9 | certifi==2022.6.15
10 | cffi==1.15.1
11 | chardet==3.0.4
12 | charset-normalizer==2.1.0
13 | Cython==3.0.0a10
14 | Deprecated==1.2.13
15 | docopt==0.6.2
16 | dsdev-utils==1.3.0
17 | future==0.18.2
18 | idna==3.3
19 | ifaddr==0.2.0
20 | Js2Py==0.71
21 | -e git+https://github.com/LedFx/LedFx@87a3c95300dcaf4a310c60e4b9c0198764095328#egg=ledfx
22 | mido==1.2.10
23 | multidict==5.0.2
24 | numpy==1.23.1
25 | openrgb-python==0.2.15
26 | packaging==21.3
27 | paho-mqtt==1.6.1
28 | pbr==5.9.0
29 | pefile==2022.5.30
30 | Pillow==9.2.0
31 | pipwin==0.5.2
32 | psutil==5.9.1
33 | pycparser==2.21
34 | pyinstaller==5.2
35 | pyinstaller-hooks-contrib==2022.8
36 | pyjsparser==2.7.1
37 | PyNaCl==1.5.0
38 | pyparsing==3.0.9
39 | PyPrind==2.11.3
40 | pyserial==3.5
41 | pySmartDL==1.3.4
42 | pystray==0.17.0
43 | python-rtmidi==1.4.9
44 | pytz-deprecation-shim==0.1.0.post0
45 | PyUpdater==4.0+3.gd408f54
46 | pywin32-ctypes==0.2.0
47 | requests==2.28.1
48 | sacn==1.6.4
49 | samplerate==0.1.0
50 | sentry-sdk==1.4.3
51 | six==1.16.0
52 | sounddevice==0.4.4
53 | soupsieve==2.3.2.post1
54 | stevedore==3.5.0
55 | tcp-latency==0.0.12
56 | typing_extensions==4.3.0
57 | tzdata==2022.1
58 | tzlocal==4.2
59 | urllib3==1.26.10
60 | voluptuous==0.12.2
61 | wrapt==1.14.1
62 | yappi==1.3.5
63 | yarl==1.7.2
64 | zeroconf==0.30.0
65 |
--------------------------------------------------------------------------------
/tools/win/version-bump.ps1:
--------------------------------------------------------------------------------
1 | (Get-Content "src\\ledfx\\consts.py") -replace "CONFIG_MICRO_VERSION ", "CONFIG_MICRO__YZ_VERSION " | Set-Content "src\\ledfx\\consts.py"
2 |
3 | (Get-Content "src\\ledfx\\consts.py") -replace "MICRO_VERSION = \d+", "MICRO_VERSION = $args" | Set-Content "src\\ledfx\\consts.py"
4 |
5 | (Get-Content "src\\ledfx\\consts.py") -replace "CONFIG_MICRO__YZ_VERSION ", "CONFIG_MICRO_VERSION " | Set-Content "src\\ledfx\\consts.py"
6 |
--------------------------------------------------------------------------------
/tools/win/version-bump2.ps1:
--------------------------------------------------------------------------------
1 | $versionNumber = $args[0] # get the first argument
2 |
3 | (Get-Content "ledfx\\consts.py") -replace "PROJECT_VERSION = \d+", "PROJECT_VERSION = $versionNumber" | Set-Content "ledfx\\consts.py"
4 |
5 | (Get-Content "pyproject.toml") -replace "version = \d+", "version = $versionNumber" | Set-Content "pyproject.toml"
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tools/win/win-gh.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | spec_root = os.path.abspath(SPECPATH)
5 |
6 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
7 | block_cipher = None
8 | print(venv_root)
9 |
10 |
11 | a = Analysis([f'{spec_root}/ledfx/__main__.py'],
12 | pathex=[f'{spec_root}', f'{spec_root}/ledfx'],
13 | binaries=[],
14 | datas=[(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.')],
15 | hiddenimports=hiddenimports,
16 | hookspath=[f'{venv_root}/lib/site-packages/pyupdater/hooks'],
17 | runtime_hooks=[],
18 | excludes=[],
19 | win_no_prefer_redirects=False,
20 | win_private_assemblies=False,
21 | cipher=block_cipher,
22 | noarchive=False)
23 | pyz = PYZ(a.pure, a.zipped_data,
24 | cipher=block_cipher)
25 | exe = EXE(pyz,
26 | a.scripts,
27 | [],
28 | exclude_binaries=True,
29 | name='LedFx',
30 | debug=False,
31 | bootloader_ignore_signals=False,
32 | strip=False,
33 | upx=True,
34 | console=False,
35 | icon=f'{spec_root}/ledfx_assets/discord.ico')
36 | coll = COLLECT(exe,
37 | a.binaries,
38 | a.zipfiles,
39 | a.datas,
40 | strip=False,
41 | upx=True,
42 | upx_exclude=[],
43 | name='LedFx')
44 |
--------------------------------------------------------------------------------
/tools/win/win-ghyz.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | spec_root = os.path.abspath(SPECPATH)
5 |
6 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
7 | block_cipher = None
8 | print(venv_root)
9 |
10 | a = Analysis([f'{spec_root}\\ledfx\\__main__.py'],
11 | pathex=[f'{spec_root}', f'{spec_root}\\ledfx'],
12 | binaries=[],
13 | datas=[(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'), (f'{spec_root}/ledfx_assets/tray.png','.')],
14 | hiddenimports=hiddenimports,
15 | hookspath=[f'{venv_root}\\lib\\site-packages\\pyupdater\\hooks'],
16 | runtime_hooks=[],
17 | excludes=[],
18 | win_no_prefer_redirects=False,
19 | win_private_assemblies=False,
20 | cipher=block_cipher,
21 | noarchive=False)
22 | pyz = PYZ(a.pure, a.zipped_data,
23 | cipher=block_cipher)
24 | exe = EXE(pyz,
25 | a.scripts,
26 | a.binaries,
27 | a.zipfiles,
28 | a.datas,
29 | name='LedFx',
30 | debug=False,
31 | bootloader_ignore_signals=False,
32 | strip=False,
33 | upx=True,
34 | console=False,
35 | icon=f'{spec_root}/ledfx_assets/discord.ico')
36 |
--------------------------------------------------------------------------------
/tools/win/win.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | from PyInstaller.utils.hooks import copy_metadata
5 | from PyInstaller.utils.hooks import collect_data_files
6 | spec_root = os.path.abspath(SPECPATH)
7 |
8 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
9 | block_cipher = None
10 | print(venv_root)
11 | # Create prod.env for the packaged binaries to read from
12 | with open('prod.env', 'w') as file:
13 | file.write('IS_RELEASE = true')
14 |
15 | yzdata = [(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.'), (f'{spec_root}/prod.env','.')]
16 | # yzdata += collect_data_files('bokeh')
17 | # yzdata += collect_data_files('xyzservices')
18 | # yzdata += copy_metadata('bokeh')
19 | # yzdata += copy_metadata('xyzservices')
20 |
21 | a = Analysis([f'{spec_root}\\ledfx\\__main__.py'],
22 | pathex=[f'{spec_root}', f'{spec_root}\\ledfx'],
23 | binaries=[],
24 | datas=yzdata,
25 | hiddenimports=hiddenimports,
26 | hookspath=[f'{venv_root}\\lib\\site-packages\\pyupdater\\hooks'],
27 | runtime_hooks=[],
28 | excludes=[],
29 | win_no_prefer_redirects=False,
30 | win_private_assemblies=False,
31 | cipher=block_cipher,
32 | noarchive=False)
33 | pyz = PYZ(a.pure, a.zipped_data,
34 | cipher=block_cipher)
35 | exe = EXE(pyz,
36 | a.scripts,
37 | [],
38 | exclude_binaries=True,
39 | name='LedFx',
40 | debug=False,
41 | bootloader_ignore_signals=False,
42 | strip=False,
43 | upx=True,
44 | console=False,
45 | icon=f'{spec_root}\\ledfx_assets\\discord.ico')
46 | coll = COLLECT(exe,
47 | a.binaries,
48 | a.zipfiles,
49 | a.datas,
50 | strip=False,
51 | upx=True,
52 | upx_exclude=[],
53 | name='LedFx')
54 | # Cleanup prod.env
55 | os.remove("prod.env")
56 |
--------------------------------------------------------------------------------
/tools/win/yzwin.spec:
--------------------------------------------------------------------------------
1 | # -*- mode: python ; coding: utf-8 -*-
2 | import os
3 | from hiddenimports import hiddenimports
4 | from PyInstaller.utils.hooks import copy_metadata
5 | from PyInstaller.utils.hooks import collect_data_files
6 | spec_root = os.path.abspath(SPECPATH)
7 |
8 | venv_root = os.path.abspath(os.path.join(SPECPATH, '..'))
9 | block_cipher = None
10 | print(venv_root)
11 | yzdata = [(f'{spec_root}/ledfx_frontend', 'ledfx_frontend/'), (f'{spec_root}/ledfx/', 'ledfx/'), (f'{spec_root}/ledfx_assets', 'ledfx_assets/'),(f'{spec_root}/ledfx_assets/tray.png','.')]
12 | # yzdata += collect_data_files('bokeh')
13 | # yzdata += collect_data_files('xyzservices')
14 | # yzdata += copy_metadata('bokeh')
15 | # yzdata += copy_metadata('xyzservices')
16 |
17 | a = Analysis([f'{spec_root}\\ledfx\\__main__.py'],
18 | pathex=[f'{spec_root}', f'{spec_root}\\ledfx'],
19 | binaries=[],
20 | datas=yzdata,
21 | hiddenimports=hiddenimports,
22 | hookspath=[f'{venv_root}\\lib\\site-packages\\pyupdater\\hooks'],
23 | runtime_hooks=[],
24 | excludes=[],
25 | win_no_prefer_redirects=False,
26 | win_private_assemblies=False,
27 | cipher=block_cipher,
28 | noarchive=False)
29 | pyz = PYZ(a.pure, a.zipped_data,
30 | cipher=block_cipher)
31 | exe = EXE(pyz,
32 | a.scripts,
33 | a.binaries,
34 | a.zipfiles,
35 | a.datas,
36 | name='LedFx',
37 | debug=False,
38 | bootloader_ignore_signals=False,
39 | strip=False,
40 | upx=True,
41 | console=False,
42 | icon=f'{spec_root}\\ledfx_assets\\discord.ico')
43 |
--------------------------------------------------------------------------------