-
Notifications
You must be signed in to change notification settings - Fork 66
121 lines (114 loc) · 5.21 KB
/
Copy pathbuild-linux.yml
File metadata and controls
121 lines (114 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
name: build-linux
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
workflow_call:
env:
QWT_version: 6.3.0
jobs:
build-linux:
permissions:
contents: read
pull-requests: write
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-22.04]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- run: sudo apt update
- run: sudo apt install -y apt-utils build-essential wget qt6-base-dev-tools qt6-declarative-dev qt6-multimedia-dev libqt6charts6-dev libqt6datavisualization6-dev libqt6svg6-dev libopencv-core-dev libopencv-dev libarmadillo-dev libgl1-mesa-dev libglu1-mesa-dev bear imagemagick file libfuse2
- run: wget -O qwt-${{env.QWT_version}}.zip https://sourceforge.net/projects/qwt/files/qwt/${{env.QWT_version}}/qwt-${{env.QWT_version}}.zip/download?use_mirror=pilotfiber
- run: 7z x qwt-${{env.QWT_version}}.zip
- run: cd qwt-${{env.QWT_version}} ; /usr/lib/qt6/bin/qmake
- run: cd qwt-${{env.QWT_version}} ; make -j4
- run: cd qwt-${{env.QWT_version}} ; sudo make install
- name: Put release name into a variable (pull request)
if: ${{ github.event_name == 'pull_request' }}
run: echo "WORKFLOW_VERSION=${{github.event.pull_request.head.sha}}_${{github.event.pull_request.base.sha}}" >> $GITHUB_ENV
- name: Put release name into a variable (tag)
if: ${{ startsWith(github.event.ref, 'refs/tags/v') }}
run: echo "WORKFLOW_VERSION=${{github.ref_name}}" >> $GITHUB_ENV
- name: Put release name into a variable (single commit)
if: ${{ !startsWith(github.event.ref, 'refs/tags/v') && github.event_name != 'pull_request' }}
run: echo "WORKFLOW_VERSION=${{github.sha}}" >> $GITHUB_ENV
- name: Find and Replace MY_AUTOMATED_VERSION_STRING
run: sed -i "s/MY_AUTOMATED_VERSION_STRING/${{env.WORKFLOW_VERSION}}/" DFTFringe.pro
- run: /usr/lib/qt6/bin/qmake DFTFringe.pro
- uses: ammaraskar/gcc-problem-matcher@master
- run: echo "::add-matcher::.github/matcher/uic_matcher.json"
- name: capture compile_commands.json from build
run: bear -- make -j4
- run: echo "::remove-matcher owner=uic-problem-matcher::"
- name: Run C++ Linter (clang-tidy)
if: strategy.job-index == 0 && github.event_name == 'pull_request' #run only for first OS of the matrix
uses: cpp-linter/cpp-linter-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: '' # we don't want check from clang-format
lines-changed-only: 'true' # Only lines in the diff that contain additions are analyzed. Avoid noise from existing code.
thread-comments: 'update'
tidy-checks: '' # rely solely on .clang-tidy file
tidy-review: true
passive-reviews: true
ignore: 'bezier|boost|SingleApplication|spdlog|zernike|cnpy|moc_*|ui_*|qwt*'
- name: Assemble AppDir
if: matrix.os == 'ubuntu-22.04'
run: |
mkdir -p AppDir/usr/bin
cp DFTFringe AppDir/usr/bin/
# Runtime data is resolved relative to applicationDirPath(), so it
# must sit next to the binary (see colormapviewerdlg.cpp, mainwindow.cpp)
cp -r ColorMaps AppDir/usr/bin/
mkdir -p AppDir/usr/bin/res
cp -r res/Help AppDir/usr/bin/res/
cp RevisionHistory.html AppDir/usr/bin/
# Icon: reuse the Windows .ico, keep the largest frame
convert res/surface_LeY_icon.ico ico_frame.png
cp "$(ls -S ico_frame*.png | head -n 1)" dftfringe.png
# Desktop entry (required by appimagetool)
cat > dftfringe.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=DFTFringe
Comment=Interferometry analysis for telescope mirror makers
Exec=DFTFringe
Icon=dftfringe
Categories=Science;Education;
Terminal=false
EOF
- name: Fetch linuxdeploy
if: matrix.os == 'ubuntu-22.04'
run: |
wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget -q https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-*.AppImage
- name: Build AppImage
if: matrix.os == 'ubuntu-22.04'
env:
QMAKE: /usr/lib/qt6/bin/qmake
VERSION: ${{ env.WORKFLOW_VERSION }}
run: |
./linuxdeploy-x86_64.AppImage --appdir AppDir \
--desktop-file dftfringe.desktop \
--icon-file dftfringe.png \
--plugin qt \
--output appimage
- name: Smoke test AppImage
if: matrix.os == 'ubuntu-22.04'
run: |
./DFTFringe-*.AppImage --appimage-extract > /dev/null
ldd squashfs-root/usr/bin/DFTFringe | grep -v "not found"
! ldd squashfs-root/usr/bin/DFTFringe | grep "not found"
- name: Upload AppImage
if: matrix.os == 'ubuntu-22.04'
uses: actions/upload-artifact@v7
with:
name: DFTFringe-linux-appimage
path: DFTFringe-*.AppImage
if-no-files-found: error