1717 id : check-cache
1818 uses : actions/cache@main
1919 with :
20- key : gcc-14.2. 0
20+ key : gcc-15.0.1- 0
2121 lookup-only : true
2222 path : |
2323 /tmp/x86_64-linux-gnu.tar.xz
2626 if : ${{ steps.check-cache.outputs.cache-hit != 'true' }}
2727 run : |
2828 bash './build.sh' 'native'
29+ - name : Create logs
30+ if : always()
31+ run : |
32+ declare logs=''
33+
34+ while read file; do
35+ logs+="${file} "
36+ done <<< $(find "/tmp/"*"/build" -wholename '*/config.log')
37+
38+ tar --create --file=- ${logs} | xz --threads='0' --compress -9 > '/tmp/logs.tar.xz'
39+ - name : Upload logs
40+ if : always()
41+ uses : actions/upload-artifact@main
42+ with :
43+ name : logs
44+ if-no-files-found : error
45+ path : |
46+ /tmp/logs.tar.xz
2947 - name : Generate tarball
3048 if : ${{ steps.check-cache.outputs.cache-hit != 'true' }}
3149 run : |
4563 if : ${{ steps.check-cache.outputs.cache-hit != 'true' }}
4664 uses : actions/cache@main
4765 with :
48- key : gcc-14.2. 0
66+ key : gcc-15.0.1- 0
4967 path : |
5068 /tmp/x86_64-linux-gnu.tar.xz
5169 /tmp/x86_64-linux-gnu.tar.xz.sha256
@@ -58,22 +76,58 @@ jobs:
5876 strategy :
5977 matrix :
6078 target : [
61- ' ia64-unknown-linux-gnu' ,
62- ' alpha-unknown-linux-gnu' ,
79+ # FreeBSD
80+ ' x86_64-unknown-freebsd' ,
81+ ' aarch64-unknown-freebsd' ,
82+ ' i386-unknown-freebsd' ,
83+
84+ # Linux (musl)
85+ ' aarch64-unknown-linux-musl' ,
86+ ' x86_64-unknown-linux-musl' ,
87+ ' arm-unknown-linux-musleabihf' ,
88+ ' i386-unknown-linux-musl' ,
89+ ' armv7l-unknown-linux-musleabihf' ,
90+
91+ # Linux (glibc)
6392 ' x86_64-unknown-linux-gnu' ,
6493 ' i386-unknown-linux-gnu' ,
65- ' arm-unknown-linux-gnueabi' ,
6694 ' arm-unknown-linux-gnueabihf' ,
67- ' hppa-unknown-linux-gnu' ,
6895 ' aarch64-unknown-linux-gnu' ,
69- ' mips-unknown-linux-gnu' ,
70- ' mipsel-unknown-linux-gnu' ,
71- ' powerpc-unknown-linux-gnu' ,
72- ' s390-unknown-linux-gnu' ,
73- ' s390x-unknown-linux-gnu' ,
74- ' sparc-unknown-linux-gnu' ,
75- ' powerpc64le-unknown-linux-gnu' ,
76- ' mips64el-unknown-linux-gnuabi64'
96+
97+ # OpenBSD
98+ ' x86_64-unknown-openbsd' ,
99+ ' i386-unknown-openbsd' ,
100+ ' arm-unknown-openbsd' ,
101+ ' aarch64-unknown-openbsd' ,
102+
103+ # OpenBSD
104+ ' x86_64-unknown-openbsd' ,
105+ ' i386-unknown-openbsd' ,
106+ ' aarch64-unknown-openbsd' ,
107+ ' arm-unknown-openbsd' ,
108+
109+ # Haiku
110+ ' i586-unknown-haiku' ,
111+ ' x86_64-unknown-haiku' ,
112+
113+ # SerenityOS
114+ ' aarch64-unknown-serenity' ,
115+ ' x86_64-unknown-serenity' ,
116+ ' riscv64-unknown-serenity' ,
117+
118+ # NetBSD
119+ ' i386-unknown-netbsdelf' ,
120+ ' x86_64-unknown-netbsd' ,
121+
122+ # DragonFly BSD
123+ ' x86_64-unknown-dragonfly' ,
124+
125+ # Android
126+ ' x86_64-unknown-linux-android' ,
127+ ' i686-unknown-linux-android' ,
128+ ' arm-unknown-linux-androideabi' ,
129+ ' aarch64-unknown-linux-android' ,
130+ ' riscv64-unknown-linux-android'
77131 ]
78132 steps :
79133 - uses : actions/checkout@main
82136 - name : Restore from cache
83137 uses : actions/cache@main
84138 with :
85- key : gcc-14.2. 0
139+ key : gcc-15.0.1- 0
86140 fail-on-cache-miss : true
87141 path : |
88142 /tmp/x86_64-linux-gnu.tar.xz
@@ -91,12 +145,139 @@ jobs:
91145 run : |
92146 tar --directory='/tmp' --extract --file='/tmp/x86_64-linux-gnu.tar.xz'
93147 mv '/tmp/venti' '/tmp/venti-toolchain'
94- - name : Build Venti with OBGGCC
148+ - name : Cross-compile Venti to ${{ matrix.target }}
95149 run : |
96150 source './tools/setup_toolchain.sh'
97- source './submodules/obggcc/tools/setup_toolchain.sh'
151+
152+ if [[ '${{ matrix.target }}' == *'-linux-musl'* ]]; then
153+ declare -r RAIDEN_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Raiden/releases/latest')")"
154+ declare -r RAIDEN_TARBALL='/tmp/toolchain.tar.xz'
155+ declare -r RAIDEN_URL="https://github.com/AmanoTeam/Raiden/releases/download/${RAIDEN_TAG}/x86_64-unknown-linux-gnu.tar.xz"
156+
157+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${RAIDEN_URL}" --output "${RAIDEN_TARBALL}"
158+ tar --directory="$(dirname "${RAIDEN_TARBALL}")" --extract --file="${RAIDEN_TARBALL}"
159+
160+ export RAIDEN_HOME='/tmp/raiden'
161+ export PATH="${RAIDEN_HOME}/bin:${PATH}"
162+
163+ source "${RAIDEN_HOME}/usr/local/share/raiden/autotools/${{ matrix.target }}.sh"
164+ elif [[ '${{ matrix.target }}' == *'-freebsd' ]]; then
165+ declare -r LOKI_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Loki/releases/latest')")"
166+ declare -r LOKI_TARBALL='/tmp/toolchain.tar.xz'
167+ declare -r LOKI_URL="https://github.com/AmanoTeam/Loki/releases/download/${LOKI_TAG}/x86_64-unknown-linux-gnu.tar.xz"
168+
169+ curl --silent --connect-timeout '10' --retry '15' --retry-all-errors --fail --location --url "${LOKI_URL}" --output "${LOKI_TARBALL}"
170+ tar --directory="$(dirname "${LOKI_TARBALL}")" --extract --file="${LOKI_TARBALL}"
171+
172+ export LOKI_HOME='/tmp/loki'
173+ export PATH="${LOKI_HOME}/bin:${PATH}"
174+
175+ source "${LOKI_HOME}/usr/local/share/loki/autotools/${{ matrix.target }}.sh"
176+ elif [[ '${{ matrix.target }}' == *'-linux-gnu'* ]]; then
177+ declare -r OBGGCC_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/obggcc/releases/latest')")"
178+ declare -r OBGGCC_TARBALL='/tmp/toolchain.tar.xz'
179+ declare -r OBGGCC_URL="https://github.com/AmanoTeam/obggcc/releases/download/${OBGGCC_TAG}/x86_64-unknown-linux-gnu.tar.xz"
180+
181+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${OBGGCC_URL}" --output "${OBGGCC_TARBALL}"
182+ tar --directory="$(dirname "${OBGGCC_TARBALL}")" --extract --file="${OBGGCC_TARBALL}"
183+
184+ export OBGGCC_HOME='/tmp/obggcc'
185+ export PATH="${OBGGCC_HOME}/bin:${PATH}"
186+
187+ source "${OBGGCC_HOME}/usr/local/share/obggcc/autotools/${{ matrix.target }}.sh"
188+ elif [[ '${{ matrix.target }}' == *'-openbsd'* ]]; then
189+ declare -r ATAR_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Atar/releases/latest')")"
190+ declare -r ATAR_TARBALL='/tmp/toolchain.tar.xz'
191+ declare -r ATAR_URL="https://github.com/AmanoTeam/Atar/releases/download/${ATAR_TAG}/x86_64-unknown-linux-gnu.tar.xz"
192+
193+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${ATAR_URL}" --output "${ATAR_TARBALL}"
194+ tar --directory="$(dirname "${ATAR_TARBALL}")" --extract --file="${ATAR_TARBALL}"
195+
196+ export ATAR_HOME='/tmp/atar'
197+ export PATH="${ATAR_HOME}/bin:${PATH}"
198+
199+ source "${ATAR_HOME}/usr/local/share/atar/autotools/${{ matrix.target }}.sh"
200+ elif [[ '${{ matrix.target }}' == *'-haiku' ]]; then
201+ declare -r SIL_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Sil/releases/latest')")"
202+ declare -r SIL_TARBALL='/tmp/toolchain.tar.xz'
203+ declare -r SIL_URL="https://github.com/AmanoTeam/Sil/releases/download/${SIL_TAG}/x86_64-unknown-linux-gnu.tar.xz"
204+
205+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${SIL_URL}" --output "${SIL_TARBALL}"
206+ tar --directory="$(dirname "${SIL_TARBALL}")" --extract --file="${SIL_TARBALL}"
207+
208+ export SIL_HOME='/tmp/sil'
209+ export PATH="${SIL_HOME}/bin:${PATH}"
210+
211+ source "${SIL_HOME}/usr/local/share/sil/autotools/${{ matrix.target }}.sh"
212+ elif [[ '${{ matrix.target }}' == *'-serenity' ]]; then
213+ declare -r SENNA_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Senna/releases/latest')")"
214+ declare -r SENNA_TARBALL='/tmp/toolchain.tar.xz'
215+ declare -r SENNA_URL="https://github.com/AmanoTeam/Senna/releases/download/${SENNA_TAG}/x86_64-unknown-linux-gnu.tar.xz"
216+
217+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${SENNA_URL}" --output "${SENNA_TARBALL}"
218+ tar --directory="$(dirname "${SENNA_TARBALL}")" --extract --file="${SENNA_TARBALL}"
219+
220+ export SENNA_HOME='/tmp/senna'
221+ export PATH="${SENNA_HOME}/bin:${PATH}"
222+
223+ source "${SENNA_HOME}/usr/local/share/senna/autotools/${{ matrix.target }}.sh"
224+ elif [[ '${{ matrix.target }}' == *'-netbsd'* ]]; then
225+ declare -r DAKINI_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Dakini/releases/latest')")"
226+ declare -r DAKINI_TARBALL='/tmp/toolchain.tar.xz'
227+ declare -r DAKINI_URL="https://github.com/AmanoTeam/Dakini/releases/download/${DAKINI_TAG}/x86_64-unknown-linux-gnu.tar.xz"
228+
229+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${DAKINI_URL}" --output "${DAKINI_TARBALL}"
230+ tar --directory="$(dirname "${DAKINI_TARBALL}")" --extract --file="${DAKINI_TARBALL}"
231+
232+ export DAKINI_HOME='/tmp/dakini'
233+ export PATH="${DAKINI_HOME}/bin:${PATH}"
234+
235+ source "${DAKINI_HOME}/usr/local/share/dakini/autotools/${{ matrix.target }}.sh"
236+ elif [[ '${{ matrix.target }}' == *'-dragonfly' ]]; then
237+ declare -r VENTI_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Venti/releases/latest')")"
238+ declare -r VENTI_TARBALL='/tmp/toolchain.tar.xz'
239+ declare -r VENTI_URL="https://github.com/AmanoTeam/Venti/releases/download/${VENTI_TAG}/x86_64-unknown-linux-gnu.tar.xz"
240+
241+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${VENTI_URL}" --output "${VENTI_TARBALL}"
242+ tar --directory="$(dirname "${VENTI_TARBALL}")" --extract --file="${VENTI_TARBALL}"
243+
244+ export VENTI_HOME='/tmp/venti'
245+ export PATH="${VENTI_HOME}/bin:${PATH}"
246+
247+ source "${VENTI_HOME}/usr/local/share/venti/autotools/${{ matrix.target }}.sh"
248+ elif [[ '${{ matrix.target }}' == *'-android'* ]]; then
249+ declare -r PINO_TAG="$(jq --raw-output '.tag_name' <<< "$(curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --url 'https://api.github.com/repos/AmanoTeam/Pino/releases/latest')")"
250+ declare -r PINO_TARBALL='/tmp/toolchain.tar.xz'
251+ declare -r PINO_URL="https://github.com/AmanoTeam/Pino/releases/download/${PINO_TAG}/x86_64-unknown-linux-gnu.tar.xz"
252+
253+ curl --connect-timeout '10' --retry '15' --retry-all-errors --fail --silent --location --url "${PINO_URL}" --output "${PINO_TARBALL}"
254+ tar --directory="$(dirname "${PINO_TARBALL}")" --extract --file="${PINO_TARBALL}"
255+
256+ export PINO_HOME='/tmp/pino'
257+ export PATH="${PINO_HOME}/bin:${PATH}"
258+
259+ source "${PINO_HOME}/usr/local/share/pino/autotools/${{ matrix.target }}.sh"
260+ fi
98261
99262 bash './build.sh' '${{ matrix.target }}'
263+ - name : Create logs
264+ if : always()
265+ run : |
266+ declare logs=''
267+
268+ while read file; do
269+ logs+="${file} "
270+ done <<< $(find "/tmp/"*"/build" -wholename '*/config.log')
271+
272+ tar --create --file=- ${logs} | xz --threads='0' --compress -9 > '/tmp/logs.tar.xz'
273+ - name : Upload logs
274+ if : always()
275+ uses : actions/upload-artifact@main
276+ with :
277+ name : ${{ matrix.target }}-logs
278+ if-no-files-found : error
279+ path : |
280+ /tmp/logs.tar.xz
100281 - name : Generate tarball
101282 run : |
102283 declare tarball_filename='/tmp/${{ matrix.target }}.tar.xz'
0 commit comments