Skip to content

Commit 1b03720

Browse files
clienthaxbucanero
andauthored
Build system refactor (#81)
* Build system refactor. Add NO_SAVANNAH env flag for CI usage. Switch download hash check from md5 -> sha256. Archive links updated to ssl where possible. Replaced download script as one one was unreliable for downloads with no checksums. Made smoke test print out actual failing files. Added util script for generating seperate build steps for github actions. Added MacOS x64 and arm runners. Use NPROC / NCPU for cpu count for make across the board. * Fix compression cmd * Apply suggestion from @bucanero --------- Co-authored-by: Damián Parrino <bucanero@users.noreply.github.com>
1 parent 43689e6 commit 1b03720

42 files changed

Lines changed: 889 additions & 285 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.sh text eol=lf linguist-language=Shell
2+
*.txt eol=lf

.github/workflows/build.yml

Lines changed: 223 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,229 @@ name: Build libraries package
33
on: [ push, pull_request, workflow_dispatch ]
44

55
jobs:
6-
build_ps3libraries:
6+
build:
7+
runs-on: ${{ matrix.runner }}
8+
strategy:
9+
fail-fast: false
10+
matrix:
11+
include:
12+
- runner: ubuntu-latest
13+
os: linux
14+
15+
- runner: macos-15-intel
16+
os: macos
17+
18+
- runner: macos-26
19+
os: macos
20+
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v6
24+
25+
- name: Set env vars
26+
id: slug
27+
run: |
28+
echo "sha_name=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_ENV
29+
echo "NO_SAVANNAH=1" >> $GITHUB_ENV
30+
31+
- name: Install Linux requirements
32+
if: matrix.os == 'linux'
33+
run: |
34+
sudo apt-get -y install gcc libelf-dev autoconf automake bison flex make texinfo patch wget zlib1g-dev libtool-bin bzip2 pkg-config libssl-dev
35+
36+
- name: Install MacOS requirements
37+
if: matrix.os == 'macos'
38+
shell: bash
39+
env:
40+
HOMEBREW_NO_AUTO_UPDATE: 1
41+
HOMEBREW_NO_INSTALL_CLEANUP: 1
42+
HOMEBREW_NO_ENV_HINTS: 1
43+
run: |
44+
eval "$(brew shellenv)"
45+
brew install autoconf automake openssl libelf ncurses zlib gmp wget pkg-config texinfo
46+
47+
- name: Create build folder
48+
run: |
49+
mkdir build
50+
51+
- name: Cache downloaded archives
52+
uses: actions/cache@v5
53+
with:
54+
path: archives
55+
key: archives-${{ hashFiles('archives/archives.txt') }}
56+
57+
- name: Purge unverifiable archives
58+
run: |
59+
while IFS= read -r line; do
60+
set -- $line
61+
[ "${1:-}" = "-" ] || continue
62+
# 3rd field is URL, 5th field (if "->") is rename
63+
url="$3"
64+
rename=""
65+
[ "${4:-}" = "->" ] && rename="${5:-}"
66+
file="${rename:-$(basename "$url")}"
67+
rm -f "archives/$file"
68+
done < archives/archives.txt
69+
70+
- name: Download PS3DEV Toolchain
71+
env:
72+
GH_TOKEN: ${{ github.token }}
73+
run: |
74+
TOOLCHAIN_URL=$(gh api repos/ps3dev/ps3toolchain/releases \
75+
--jq '
76+
map(select(.prerelease and (.draft | not)))
77+
| sort_by(.published_at)
78+
| reverse
79+
| .[0].assets[]
80+
| select(.name == "ps3dev-${{ matrix.os }}-${{ runner.arch }}.tar.gz")
81+
| .browser_download_url
82+
')
83+
84+
curl -sL "$TOOLCHAIN_URL" | tar xvz -C ./
85+
echo "PS3DEV=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
86+
echo "PSL1GHT=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
87+
echo "PATH=$PATH:$PWD/ps3dev/bin:$PWD/ps3dev/ppu/bin:$PWD/ps3dev/spu/bin" >> $GITHUB_ENV
88+
89+
- name: Download files
90+
working-directory: ./build
91+
run: ../download.sh
92+
93+
- name: Build PSL1GHT
94+
run: |
95+
git clone https://github.com/ps3dev/PSL1GHT.git
96+
cd PSL1GHT
97+
JOBS=$(nproc 2>/dev/null || sysctl -n hw.ncpu)
98+
make -j"$JOBS" install-ctrl
99+
make -j"$JOBS"
100+
make -j"$JOBS" install
101+
102+
- name: Build Zlib 1.2.13
103+
run: ./libraries.sh 001
104+
105+
- name: Build Libpng 1.4.4
106+
run: ./libraries.sh 002
107+
108+
- name: Build Jpeg 8b
109+
run: ./libraries.sh 003
110+
111+
- name: Build Freetype 2.4.3
112+
run: ./libraries.sh 004
113+
114+
- name: Build Pixman 0.20.0
115+
run: ./libraries.sh 005
116+
117+
- name: Build Cairo 1.10.0
118+
run: ./libraries.sh 006
119+
120+
- name: Build Libogg 1.3.4
121+
run: ./libraries.sh 007
122+
123+
- name: Build Libvorbis 1.3.5
124+
run: ./libraries.sh 008
125+
126+
- name: Build Libzip 0.9.3
127+
run: ./libraries.sh 009
128+
129+
- name: Build Tiff 3.9.4
130+
run: ./libraries.sh 010
131+
132+
- name: Build Libmikmod 3.1.11
133+
run: ./libraries.sh 011
134+
135+
- name: Build Libxml2 2.7.8
136+
run: ./libraries.sh 012
137+
138+
- name: Build Sdl_psl1ght
139+
run: ./libraries.sh 013
140+
141+
- name: Build Sdl2_psl1ght
142+
run: ./libraries.sh 014
143+
144+
- name: Build Sdl_psl1ght_libs
145+
run: ./libraries.sh 015
146+
147+
- name: Build SDL2_mixer 2.0.4
148+
run: ./libraries.sh 016
149+
150+
- name: Build Polarssl 1.3.9
151+
run: ./libraries.sh 017
152+
153+
- name: Build Libcurl 7.64.1
154+
run: ./libraries.sh 018
155+
156+
- name: Build Libmad 0.15.1b
157+
run: ./libraries.sh 019
158+
159+
- name: Build Flac 1.2.1
160+
run: ./libraries.sh 020
161+
162+
- name: Build Faad2 2.7
163+
run: ./libraries.sh 021
164+
165+
- name: Build Libtheora 1.1.1
166+
run: ./libraries.sh 022
167+
168+
- name: Build NoRSX
169+
run: ./libraries.sh 023
170+
171+
- name: Build Libjson
172+
run: ./libraries.sh 024
173+
174+
- name: Build Debugnet
175+
run: ./libraries.sh 025
176+
177+
- name: Build Ps3soundlib
178+
run: ./libraries.sh 026
179+
180+
- name: Build Tiny3d_libfont
181+
run: ./libraries.sh 027
182+
183+
- name: Build MbedTLS 2.28.10
184+
run: ./libraries.sh 028
185+
186+
- name: Build Libunrar
187+
run: ./libraries.sh 029
188+
189+
- name: Build Libnfs
190+
run: ./libraries.sh 030
191+
192+
- name: Build Libsmb2
193+
run: ./libraries.sh 031
194+
195+
- name: Build Package
196+
run: |
197+
cd $PSL1GHT
198+
tar -zcvf ../ps3libraries-${{ matrix.os }}-${{ runner.arch }}.tar.gz portlibs/
199+
200+
- name: Push package artifact
201+
uses: actions/upload-artifact@v7
202+
with:
203+
name: ps3libraries-${{ env.sha_name }}-${{ matrix.os }}-${{ runner.arch }}
204+
path: ps3libraries-${{ matrix.os }}-${{ runner.arch }}.tar.gz
205+
if-no-files-found: error
206+
207+
push_release:
208+
if: |
209+
github.event_name == 'push' &&
210+
github.repository == 'ps3dev/ps3libraries'
211+
needs: build
7212
runs-on: ubuntu-latest
213+
permissions:
214+
contents: write
8215
steps:
216+
- name: Checkout
217+
uses: actions/checkout@v6
218+
219+
- name: Download artifacts
220+
uses: actions/download-artifact@v8
221+
with:
222+
path: artifacts
223+
merge-multiple: true
9224

10-
- name: Checkout
11-
uses: actions/checkout@v4
12-
13-
- name: Set env vars
14-
id: slug
15-
run: |
16-
echo "sha_name=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_ENV
17-
sudo apt-get -y install autoconf automake bison flex make texinfo patch wget zlib1g-dev libtool-bin bzip2 pkg-config
18-
19-
# using pre-compiled PS3 toolchain
20-
- name: Download PSL1GHT Toolchain
21-
run: |
22-
curl -sL https://github.com/ps3dev/ps3toolchain/releases/download/2026-06-09/ps3dev-92534e60-ubuntu-latest.tar.gz | tar xvz -C ./
23-
echo "PS3DEV=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
24-
echo "PSL1GHT=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
25-
26-
- name: Install libraries
27-
run: |
28-
sed -i.bak '8d' libraries-sudo.sh
29-
./libraries-sudo.sh
30-
31-
- name: Build Package
32-
run: |
33-
7z a ps3libraries.zip $PSL1GHT/portlibs/
34-
35-
- name: Push package artifact
36-
uses: actions/upload-artifact@v4
37-
with:
38-
name: ps3libraries-build_${{ env.sha_name }}
39-
path: ps3libraries.zip
40-
if-no-files-found: error
225+
- name: Create Pre-Release
226+
env:
227+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
228+
run: |
229+
TAG="nightly-$(date -u +%Y-%m-%d)"
230+
gh release delete "$TAG" --yes --cleanup-tag || true
231+
gh release create "$TAG" artifacts/*.tar.gz --target ${{ GITHUB.SHA }} -t "$TAG" --prerelease

.gitignore

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/build
2-
/archives/*-[0-9]*
3-
/archives/*.tar.gz
4-
/archives/config.guess
5-
/archives/config.sub
2+
/archives/*
3+
!/archives/archives.txt
4+
/ps3dev

archives/archives.txt

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
9b8aa094c4e5765dabf4da391f00d15c 1497445 https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz
2-
297b38f925e745061489b41b1f7c4bb1 829414 http://download.sourceforge.net/libpng/libpng-1.4.4.tar.gz
3-
61ea7b0b1489b6a0315faedb081f5b45 935594 http://www.ijg.org/files/jpegsrc.v8b.tar.gz
4-
649dd3c558278ae1d79a4e8e502c13e4 1907043 http://download.savannah.gnu.org/releases/freetype/freetype-old/freetype-2.4.3.tar.gz
5-
c1a31d5cedfa97c5af7148a2d1fd4356 537274 http://cairographics.org/releases/pixman-0.20.0.tar.gz
6-
70a2ece66cf473d976e2db0f75bf199e 24022822 http://cairographics.org/releases/cairo-1.10.0.tar.gz
7-
b9a66c80bdf45363605e4aa75fa951a8 589570 http://downloads.xiph.org/releases/ogg/libogg-1.3.4.tar.gz
8-
7220e089f3be3412a2317d6fde9e3944 1638779 http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
9-
27610091ca27bf843a6646cd05de35b9 304965 http://www.nih.at/libzip/libzip-0.9.3.tar.bz2
10-
2006c1bdd12644dbf02956955175afd6 1436968 http://download.osgeo.org/libtiff/old/tiff-3.9.4.tar.gz
11-
705106da305e8de191549f1e7393185c 611590 http://mikmod.raphnet.net/files/libmikmod-3.1.11.tar.gz
12-
8127a65e8c3b08856093099b52599c86 4881808 http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz
13-
a36e8410cac46b00a4d01752b32c3eb1 11125077 http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz
14-
48af7d1f0d5de512cbd6dacf5407884c 1741396 https://mirror2.openwrt.org/sources/polarssl-1.3.9-gpl.tgz
15-
371239c13ed64ae4c56cd2480cde52f8 4008103 http://curl.haxx.se/download/curl-7.64.1.tar.gz
16-
1be543bc30c56fb6bea1d7bf6a64e66c 502379 http://downloads.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz
17-
153c8b15a54da428d1f0fadc756c22c7 2009217 http://downloads.sourceforge.net/project/flac/flac-src/flac-1.2.1-src/flac-1.2.1.tar.gz
18-
ee1b4d67ea2d76ee52c5621bc6dbf61e 1137407 http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
19-
292ab65cedd5021d6b7ddd117e07cd8e 1903175 http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
20-
7013b2471a507942eb8ed72a5d872d16 455089 https://codeload.github.com/json-c/json-c/tar.gz/json-c-0.11-20130402
21-
d12e48309d6d1cfdc31a6ebf866c25db 3489179 https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-2.28.10/mbedtls-2.28.10.tar.bz2
22-
- - https://github.com/zeldin/SDL_PSL1GHT/tarball/master -> sdl_psl1ght.tar.gz
23-
- - https://github.com/zeldin/SDL_PSL1GHT_Libs/tarball/master -> sdl_psl1ght_libs.tar.gz
24-
- - https://github.com/shagkur/SDL_PSL1GHT/archive/refs/heads/sdl2_master.tar.gz -> sdl2_psl1ght.tar.gz
25-
- - https://github.com/wargio/NoRSX/tarball/master -> NoRSX.tar.gz
26-
- - https://github.com/sergiou87/ps3debugnet/tarball/master -> ps3debugnet.tar.gz
27-
- - https://github.com/wargio/ps3soundlib/tarball/master -> ps3soundlib.tar.gz
28-
- - https://github.com/wargio/tiny3d/tarball/master -> tiny3d.tar.gz
29-
- - https://github.com/bucanero/libunrar-ps3/tarball/master -> libunrar.tar.gz
30-
- - https://github.com/sahlberg/libnfs/tarball/master -> libnfs.tar.gz
31-
- - https://github.com/sahlberg/libsmb2/tarball/master -> libsmb2.tar.gz
1+
b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30 1497445 https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz
2+
d07616ba1e9c161017384feb3b576d70c160b970abfd9549ad39a622284b574a 829414 https://download.sourceforge.net/libpng/libpng-1.4.4.tar.gz
3+
64be2429346b1aa84a014fc47264661ca2e6c786aea25afecb363d5973b4e6a9 935594 https://www.ijg.org/files/jpegsrc.v8b.tar.gz
4+
33ec92273c2d809e51dece879c09d206e5dfa3d6deb7ce9e4c2bf0891b8111f9 1907043 https://download.savannah.gnu.org/releases/freetype/freetype-old/freetype-2.4.3.tar.gz
5+
9c02c22c6cc3f28f3633d02ef6f0cac130518f621edb011ebbbf08cd1a81251a 537274 https://cairographics.org/releases/pixman-0.20.0.tar.gz
6+
0f2ce4cc4615594088d74eb8b5360bad7c3cc3c3da9b61af9bfd979ed1ed94b2 24022822 https://cairographics.org/releases/cairo-1.10.0.tar.gz
7+
fe5670640bd49e828d64d2879c31cb4dde9758681bb664f9bdbf159a01b0c76e 589570 https://downloads.xiph.org/releases/ogg/libogg-1.3.4.tar.gz
8+
6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce 1638779 https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
9+
e63f5dc1b33fd1c02a881d5a819620634a69d1e4ce8637261ca0cb0fbc9f9dca 304965 https://www.nih.at/libzip/libzip-0.9.3.tar.bz2
10+
67b76d075fb74f7cb32e7e4b217701674755fe6cee0f463b259a753fce691da6 1436968 https://download.osgeo.org/libtiff/old/tiff-3.9.4.tar.gz
11+
2d7598cd2a8c61c023f27c9c7c1aca8bbfd92aadbee2f98b7a6d421eae35c929 611590 https://mikmod.raphnet.net/files/libmikmod-3.1.11.tar.gz
12+
cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec 4881808 http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz
13+
b4cf5a382c061cd75081cf246c2aa2f9df8db04bdda8dcdc6b6cca55bede2419 11125077 https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.4.tar.gz
14+
d3605afc28ed4b7d1d9e3142d72e42855e4a23c07c951bbb0299556b02d36755 1741396 https://mirror2.openwrt.org/sources/polarssl-1.3.9-gpl.tgz
15+
432d3f466644b9416bc5b649d344116a753aeaa520c8beaf024a90cba9d3d35d 4008103 https://curl.haxx.se/download/curl-7.64.1.tar.gz
16+
bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 502379 https://downloads.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz
17+
9635a44bceb478bbf2ee8a785cf6986fba525afb5fad1fd4bba73cf71f2d3edf 2009217 https://downloads.sourceforge.net/project/flac/flac-src/flac-1.2.1-src/flac-1.2.1.tar.gz
18+
ee26ed1e177c0cd8fa8458a481b14a0b24ca0b51468c8b4c8b676fd3ceccd330 1137407 https://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
19+
b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d3affbc 1903175 https://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
20+
9988283408c71838d8d62e5418e5abb5eb5300bd84c385fdc96143b5e8f10ed5 455089 https://codeload.github.com/json-c/json-c/tar.gz/json-c-0.11-20130402 -> json-c-0.11-20130402.tar.gz
21+
19e5b81fdac0fe22009b9e2bdcd52d7dcafbf62bc67fc59cf0a76b5b5540d149 3489179 https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-2.28.10/mbedtls-2.28.10.tar.bz2
22+
- - https://github.com/zeldin/SDL_PSL1GHT/tarball/master -> sdl_psl1ght.tar.gz
23+
- - https://github.com/zeldin/SDL_PSL1GHT_Libs/tarball/master -> sdl_psl1ght_libs.tar.gz
24+
- - https://github.com/shagkur/SDL_PSL1GHT/archive/refs/heads/sdl2_master.tar.gz -> sdl2_psl1ght.tar.gz
25+
- - https://github.com/wargio/NoRSX/tarball/master -> NoRSX.tar.gz
26+
- - https://github.com/sergiou87/ps3debugnet/tarball/master -> ps3debugnet.tar.gz
27+
- - https://github.com/wargio/ps3soundlib/tarball/master -> ps3soundlib.tar.gz
28+
- - https://github.com/wargio/tiny3d/tarball/master -> tiny3d.tar.gz
29+
- - https://github.com/bucanero/libunrar-ps3/tarball/master -> libunrar.tar.gz
30+
- - https://github.com/sahlberg/libnfs/tarball/master -> libnfs.tar.gz
31+
- - https://github.com/sahlberg/libsmb2/tarball/master -> libsmb2.tar.gz
32+
- - https://github.com/clienthax/psl1ght/tarball/master -> psl1ght.tar.gz
File renamed without changes.
File renamed without changes.
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
#!/bin/sh -e
1+
#!/bin/sh
2+
set -e
23

34
CONFIG_TIMEOUT="${CONFIG_TIMEOUT:-15}"
45
CONFIG_BASE_URL="https://git.savannah.gnu.org/cgit/config.git/plain"
56

67
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
78
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
8-
ASSET_DIR="${ROOT_DIR}/assets"
9+
CONFIG_DIR="${ROOT_DIR}/config"
910

1011
cd "${ROOT_DIR}/archives"
1112

@@ -36,9 +37,15 @@ fetch_config_file() {
3637

3738
echo "Falling back to safe ${file}."
3839
rm -f "${tmp}"
39-
cp "${ASSET_DIR}/${file}" "${file}"
40+
cp "${CONFIG_DIR}/${file}" "${file}"
4041
chmod +x "${file}"
4142
}
4243

43-
fetch_config_file config.guess
44-
fetch_config_file config.sub
44+
if [ -z "${NO_SAVANNAH}" ]; then
45+
fetch_config_file config.guess
46+
fetch_config_file config.sub
47+
else
48+
echo "NO_SAVANNAH is set, skipping Savannah downloads."
49+
cp "${CONFIG_DIR}/config.guess" "config.guess"
50+
cp "${CONFIG_DIR}/config.sub" "config.sub"
51+
fi

0 commit comments

Comments
 (0)