-
Notifications
You must be signed in to change notification settings - Fork 44
166 lines (157 loc) · 7.09 KB
/
linux.yml
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: linux
on:
push:
tags:
- 'nightly'
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v2
# Ideally we would like to do it once for all builds,
# but this is complicated as we want to allow to trigger a nightly by
# pushing the tag, so this can't be in nightly.yml. One option would be to
# have another intermediate workflow, but we take the quik & dirty
# solution: increment it in each workflow and push it in one (linux.yml).
- name: Increment version
id: version
run: |
version=$(grep "define NIGHTLY" source/LeLib/data.cpp | awk '{ print $3 }')
let version=${version}+1
sed -i "s/define NIGHTLY .*/define NIGHTLY $version/" source/LeLib/data.cpp
version=$(grep "define \(MAJOR\|FEATURE\|NIGHTLY\)" source/LeLib/data.cpp | awk '{ print $3 }' | xargs | sed 's/ /\./g')
echo "::set-output name=TRSE_VERSION::${version}"
- name: Commit & Push new version
uses: actions-js/push@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
author_name: "Nightly Build"
message: "Increment nightly version"
branch: master
- run: |
sudo apt-get update
sudo apt-get install qtbase5-dev qt5-qmake qtdeclarative5-dev
# For 'Verify all' tests
# dbus-x11, at-spi2-core, libavformat58, libswscale5 and libswresample3 seem to be required by vice yet not pulled by its package
# libsdl2-dev, libfreetype6-dev, zlib1g-dev and libpng-dev are needed to build Caprice32
sudo apt-get install lz4 python3 xvfb vice dosbox nasm dbus-x11 at-spi2-core libavformat58 libswscale5 libswresample3 libsdl2-dev libfreetype6-dev zlib1g-dev libpng-dev
- name: Build and configure assemblers and emulators (vasm, rgbasm, VICE, cap32)
run: |
mkdir tools
pushd tools
# vasm (Atari)
# wget --tries=3 http://sun.hasenbraten.de/vasm/daily/vasm.tar.gz
wget --tries=3 https://www.irio.co.uk/div/vasm.tar.gz
tar -xzf vasm.tar.gz
pushd vasm
make CPU=m68k SYNTAX=mot -j 4
popd
# rgbasm (GameBoy)
#git clone https://github.com/gbdev/rgbds.git
#pushd rgbds
# v0.5 removes GLOBAL keyword
#git checkout tags/v0.4.2
#cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
#cmake --build build -j 4
#popd
# exomizer
wget --tries=3 https://bitbucket.org/magli143/exomizer/get/3.1.1.zip
unzip 3.1.1.zip -d exomizer
pushd exomizer/*/src
make -j 4
popd
# Install ROMs to be able to run VICE
wget --tries=3 https://sourceforge.net/projects/vice-emu/files/releases/vice-3.5.tar.gz/download -O vice-3.5.tar.gz
tar -xzf vice-3.5.tar.gz
mkdir -p ~/.config/vice/
cp -r vice-3.5/data/* ~/.config/vice/
# Build Caprice32 (Amstrad CPC emulator)
git clone https://github.com/ColinPitrat/caprice32.git
pushd caprice32
make -j 4
popd
# Build SameBoy (GameBoy emulator): requires rgbasm (built before)
#export PATH=`pwd`/rgbds/build/src:$PATH
#git clone https://github.com/LIJI32/SameBoy.git
#pushd SameBoy
#make -j 4
#popd
# leave tools directory
popd
# patch dirs
exomizer=`ls ${PWD}/tools/exomizer/*/src/exomizer`
sed -i "s,^vasmm =.*,vasmm = ${PWD}/tools/vasm/vasmm68k_mot," Publish/publish_linux/trse.ini
sed -i "s,^gameboy_rgbasm_dir =.*,gameboy_rgbasm_dir = ${PWD}/tools/rgbds/build/src," Publish/publish_linux/trse.ini
sed -i "s,^exomizer =.*,exomizer = ${exomizer}," Publish/publish_linux/trse.ini
c1541=$(which c1541)
sed -i "s,^c1541 =.*,c1541 = ${c1541}," Publish/publish_linux/trse.ini
x64=$(which x64)
sed -i "s,^emulator =.*,emulator = ${x64}," Publish/publish_linux/trse.ini
cap32=`pwd`/tools/caprice32/cap32
sed -i "s,^amstradcpc_emulator =.*,amstradcpc_emulator = ${cap32}," Publish/publish_linux/trse.ini
dosbox=$(which dosbox)
sed -i "s,^dosbox =.*,dosbox = ${dosbox}," Publish/publish_linux/trse.ini
nasm=$(which nasm)
sed -i "s,^nasm =.*,nasm = ${nasm}," Publish/publish_linux/trse.ini
sed -i "s,^gameboy_emulator =.*,gameboy_emulator = ${PWD}/tools/SameBoy/build/bin/SDL/sameboy," Publish/publish_linux/trse.ini
- name: Build TRSE
run: |
# PREFIX is here for the AppImage build
qmake PREFIX=/usr TRSE.pro
make -j 4 -k
- name: Build OK64
run: |
git clone https://github.com/leuat/OK64.git
pushd OK64
OK64dir=`pwd`
sudo apt-get install qtmultimedia5-dev
# Build resid
#wget --tries=3 http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/resid/resid-0.16.tar.gz
# www.zimmers.net seems to be very unstable around the time of the nightly (or some other problem) so
# we have our own copy of resid.
wget --tries=3 http://www.irio.co.uk/trse/resid-0.16.tar.gz
tar -xzf resid-0.16.tar.gz
pushd resid-0.16
./configure --prefix=$OK64dir/resid
make
make install
popd
# Build OK64
pushd OK64
qmake INCLUDEPATH=$OK64dir/resid/include QMAKE_LFLAGS=-Wl,-L$OK64dir/resid/lib/ OK64.pro
make
popd
popd
# Construct and publish the linux binary package
- name: Build tar.gz
run: cd Publish/publish_linux && ./publish nightly
- name: Publish tar.gz
uses: ColinPitrat/update-release@master
with:
release: nightly
message: Nightly build
body: TRSE ${{ steps.version.outputs.TRSE_VERSION }} <br/> The latest automated nightly build of TRSE which succeeded. This is the recommended version to use.
files: Publish/publish_linux/trse_linux64.tar.gz
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}
- name: Verify tutorials
run: |
mkdir bin
cp trse bin/
ln -s Publish/tutorials tutorials
ln -s Publish/source/themes themes
mkdir -p ~/.local/share/TRSE
cp Publish/publish_linux/trse.ini ~/.local/share/TRSE/
cd bin
# This is the default value but defining the var should avoid logs polluting the output
export XDG_RUNTIME_DIR=/tmp/runtime-runner
#xvfb-run --auto-servernum python3 ../Publish/verify_all/verify_all.py --trse `pwd`/trse --trse.ini ~/.local/share/TRSE/trse.ini
- name: Build notification
if: failure()
uses: adamkdean/simple-slack-notify@master
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
with:
channel: #bugs
text: "[GitHub Actions Notification] Linux build failed: ${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}"