Skip to content

Commit

Permalink
Merge pull request #903 from dsm/current
Browse files Browse the repository at this point in the history
add windows setup support to ci.
  • Loading branch information
ra3xdh authored Aug 24, 2024
2 parents d5c36a1 + 994dba2 commit b82ee24
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 32 deletions.
84 changes: 58 additions & 26 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ env:
QT_VERSION: 6.7.2
QUCS_MACOS_BIN: build/qucs/qucs-s.app/Contents/MacOS/bin
QUCS_MACOS_RESOURCES: build/qucs/qucs-s.app/Contents/MacOS/share/qucs-s
NGSPICE_URL: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/43/ngspice-43_64.7z

jobs:
setup:
Expand Down Expand Up @@ -52,35 +53,45 @@ jobs:
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y qt6-base-dev qt6-tools-dev qt6-tools-dev-tools libglx-dev linguist-qt6 qt6-l10n-tools libqt6svg6-dev libgl1-mesa-dev
sudo apt-get install -y flex bison gperf dos2unix
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=/usr -DWITH_QT6=ON

- name: Build
sudo apt-get install -y libglx-dev libgl1-mesa-dev flex bison gperf dos2unix flex bison gperf dos2unix
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12
- name: 'Install Qt6'
uses: jurplel/install-qt-action@v4
with:
version: '6.7.2'
host: 'linux'
target: 'desktop'
cache: true
arch: 'linux_gcc_64'
install-deps: 'true'


- name: 'Configure CMake'
run: |
cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=/usr -DWITH_QT6=ON
- name: 'Build'
# Build your program with the given configuration
run: |
cmake --build ${{github.workspace}}/build -j`nproc` --config ${{env.BUILD_TYPE}}
make -C ${{github.workspace}}/build install DESTDIR=${{github.workspace}}/AppDir
- name: Install linuxdeploy
- name: 'Install linuxdeploy'
run: |
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
wget -q --tries=3 --wait=5 https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget -q --tries=3 --wait=5 https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
sudo apt-get install fuse libfuse2
chmod +x linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
- name: 'Create AppImage'
run: |
export QMAKE=/usr/bin/qmake6
./linuxdeploy-x86_64.AppImage --appdir ${{github.workspace}}/AppDir --desktop-file=${{github.workspace}}/AppDir/usr/share/applications/qucs-s.desktop --icon-file=${{github.workspace}}/AppDir/usr/share/icons/hicolor/256x256/apps/qucs-s.png --plugin=qt --output appimage
rm linuxdeploy-x86_64.AppImage
rm linuxdeploy-plugin-qt-x86_64.AppImage
mv *.AppImage ${{ env.APP_NAME }}-${{env.VERSION}}-linux-x86_64.AppImage
./linuxdeploy-x86_64.AppImage --appdir ${{github.workspace}}/AppDir --desktop-file=${{github.workspace}}/AppDir/usr/share/applications/qucs-s.desktop --icon-file=${{github.workspace}}/AppDir/usr/share/icons/hicolor/256x256/apps/qucs-s.png --plugin=qt --output appimage
rm linuxdeploy-x86_64.AppImage
rm linuxdeploy-plugin-qt-x86_64.AppImage
mv *.AppImage ${{ env.APP_NAME }}-${{env.VERSION}}-linux-x86_64.AppImage
- name: 'Upload artifact: AppImage'
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -131,7 +142,7 @@ jobs:
- name: 'Configure CMake'
run: |
qt-cmake -B ${{github.workspace}}/build -G 'Ninja' \
cmake -B ${{github.workspace}}/build -G 'Ninja' \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_QT6=1 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
-DCMAKE_OSX_ARCHITECTURES="x86_64"
Expand Down Expand Up @@ -281,9 +292,7 @@ jobs:
needs: setup
strategy:
fail-fast: false
matrix:
environment:
- ucrt64

defaults:
run:
shell: msys2 {0}
Expand Down Expand Up @@ -311,7 +320,7 @@ jobs:
- name: Set up MSYS2 environment
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.environment }}
msystem: ucrt64
cache: true
update: true
install: >-
Expand All @@ -320,7 +329,7 @@ jobs:
dos2unix
curl
zip
unzip
p7zip
pacboy: >-
cmake:p
gcc:p
Expand Down Expand Up @@ -353,29 +362,50 @@ jobs:
windeployqt-qt6.exe build/qucs-suite/bin/qucs-sfilter.exe --no-translations
windeployqt-qt6.exe build/qucs-suite/bin/qucs-spowercombining.exe --no-translations
windeployqt-qt6.exe build/qucs-suite/bin/qucs-strans.exe --no-translations
- name: Copy non-Qt DLLs to bin directory
run: |
shopt -s extglob
FILES=$(ldd build/qucs-suite/bin/qucs-s.exe | awk '($3 ~ /\/${{ matrix.environment }}\/bin\//) {print $3}')
FILES=$(ldd build/qucs-suite/bin/qucs-s.exe | awk '($3 ~ /\/ucrt64\/bin\//) {print $3}')
for file in $FILES; do
if [[ $(basename "$file") != Qt6* ]]; then
cp -r "$file" build/qucs-suite/bin
fi
done
- name: Add ngspice to release
run: |
curl -sL --retry 3 --retry-delay 5 -o ngspice.7z ${{ env.NGSPICE_URL }}
7z x ngspice.7z -ongspice
mkdir -p build/qucs-suite/lib/ngspice
cp -rf ngspice/Spice64/bin/ build/qucs-suite
cp -rf ngspice/Spice64/lib/ build/qucs-suite
- name: Create zip archive for release
run: |
mkdir -p build/qucs-suite/misc
cp -rf contrib/InnoSetup/misc build/qucs-suite/
cd build/qucs-suite
zip -r ../../${{ env.APP_NAME }}-${{ env.VERSION }}-win64.zip ./bin ./share
zip -r ../../${{ env.APP_NAME }}-${{ env.VERSION }}-win64.zip ./bin ./share ./lib ./misc
cd ../..
- name: Compile .ISS to .EXE Installer
uses: Minionguyjpro/Inno-Setup-Action@v1.2.4
with:
path: contrib/InnoSetup/qucs.iss

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ env.APP_NAME }}-${{ env.VERSION }}-win64
path: ${{ env.APP_NAME }}-${{ env.VERSION }}-win64.zip

- name: Upload exe artifacts
uses: actions/upload-artifact@v4
with:
name: qucs-s-24.3.0-setup
path: contrib\InnoSetup\Output\qucs-s-24.3.0-setup.exe

create-release:
runs-on: ubuntu-latest
if: github.event_name == 'push'
Expand Down Expand Up @@ -416,13 +446,15 @@ jobs:
continue-on-error: true
run: |
# Find existing zip and dmg files
exe_files=$(find ~/artifacts -name "*.exe" -print0 | xargs -0 echo)
zip_files=$(find ~/artifacts -name "*.zip" -print0 | xargs -0 echo)
dmg_files=$(find ~/artifacts -name "*.dmg" -print0 | xargs -0 echo)
appimage_files=$(find ~/artifacts -name "*.AppImage" -print0 | xargs -0 echo)
# Create release only if there are files to upload
if [ -n "$zip_files" ] || [ -n "$dmg_files" ] || [ -n "$appimage_files" ]; then
if [ -n "$exe_files" ] || [ -n "$zip_files" ] || [ -n "$dmg_files" ] || [ -n "$appimage_files" ]; then
gh release create continuous_build \
$exe_files \
$zip_files \
$dmg_files \
$appimage_files \
Expand Down
13 changes: 7 additions & 6 deletions contrib/InnoSetup/qucs.iss
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#define APPNAME "Qucs-S"
#define APPVERNAME "Quite Universal Circuit Simulator 24.3.0"
#define URL "https://ra3xdh.github.io/"
#define TREE "c:\msys64\home\vvk\qucs_s_win64\"


[Setup]
AppName={# APPNAME}
Expand All @@ -38,12 +38,13 @@ AppUpdatesURL={# URL}
DefaultDirName={pf}\Qucs-S
DefaultGroupName=Qucs-S
AllowNoIcons=yes
LicenseFile={# TREE}\misc\gpl.rtf
LicenseFile=.\misc\gpl.rtf
OutputBaseFilename={# BASENAME}-{# RELEASE}-setup
Compression=lzma
SolidCompression=yes
ChangesEnvironment=yes
UsePreviousAppDir=yes
WizardStyle=modern

; [Registry]
; Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Control\Session Manager\Environment; ValueType: string; ValueName: QUCSDIR; ValueData: "{app}"; Flags: deletevalue createvalueifdoesntexist noerror; MinVersion: 0,4.00.1381
Expand All @@ -52,12 +53,12 @@ UsePreviousAppDir=yes
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "{# TREE}\bin\*"; DestDir: "{app}\bin"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "..\..\build\qucs-suite\bin\*"; DestDir: "{app}\bin"; Flags: ignoreversion recursesubdirs createallsubdirs
; Source: "{# TREE}\include\*"; DestDir: "{app}\include"; Flags: ignoreversion recursesubdirs createallsubdirs
; Source: "{# TREE}\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{# TREE}\misc\*"; DestDir: "{app}\misc"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{# TREE}\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{# TREE}\share\*"; DestDir: "{app}\share"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: ".\misc\*"; DestDir: "{app}\misc"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "..\..\build\qucs-suite\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "..\..\build\qucs-suite\share\*"; DestDir: "{app}\share"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\Qucs-S Simulator"; Filename: "{app}\bin\qucs-s.exe"; IconFilename: "{app}\misc\qucs64x64.ico"; WorkingDir: "{app}\bin"
Expand Down

0 comments on commit b82ee24

Please sign in to comment.