Skip to content

Commit 45006ad

Browse files
committed
Build system refactor.
Move get-config-scripts to utils folder. Add NO_SAVANNAH env flag for CI usage. Switch download hash check from md5 -> sha25. 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.
1 parent d38cad0 commit 45006ad

44 files changed

Lines changed: 915 additions & 296 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/CI.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,24 @@ jobs:
1010
runs-on: ubuntu-latest
1111

1212
steps:
13-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v6
1414

1515
- name: Check shell scripts are executable
1616
run: |
17-
test -x libraries.sh
18-
test -x scripts/get-config-scripts.sh
19-
find scripts depends -name '*.sh' -exec test -x {} \;
17+
bad=()
18+
while IFS= read -r f; do
19+
test -x "$f" || bad+=("$f")
20+
done < <(find . -name '*.sh')
21+
if (( ${#bad[@]} )); then
22+
printf 'NOT executable: %s\n' "${bad[@]}"
23+
exit 1
24+
fi
2025
2126
- name: Check config helper cache path
2227
run: |
2328
mkdir -p build
2429
cd build
25-
CONFIG_BASE_URL="https://127.0.0.1/pretend-savannah-is-down" CONFIG_TIMEOUT=1 ../scripts/get-config-scripts.sh
30+
NO_SAVANNAH=1 ../config/get-config-scripts.sh
2631
test -s ../archives/config.guess
2732
test -s ../archives/config.sub
2833

.github/workflows/build.yml

Lines changed: 217 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,222 @@ name: Build libraries package
33
on: [ push, pull_request, workflow_dispatch ]
44

55
jobs:
6-
build_ps3libraries:
7-
runs-on: ubuntu-22.04
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+
821
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: ./libraries.sh 000
95+
96+
- name: Build Zlib 1.2.13
97+
run: ./libraries.sh 001
98+
99+
- name: Build Libpng 1.4.4
100+
run: ./libraries.sh 002
101+
102+
- name: Build Jpeg 8b
103+
run: ./libraries.sh 003
104+
105+
- name: Build Freetype 2.4.3
106+
run: ./libraries.sh 004
107+
108+
- name: Build Pixman 0.20.0
109+
run: ./libraries.sh 005
110+
111+
- name: Build Cairo 1.10.0
112+
run: ./libraries.sh 006
113+
114+
- name: Build Libogg 1.3.4
115+
run: ./libraries.sh 007
116+
117+
- name: Build Libvorbis 1.3.5
118+
run: ./libraries.sh 008
119+
120+
- name: Build Libzip 0.9.3
121+
run: ./libraries.sh 009
122+
123+
- name: Build Tiff 3.9.4
124+
run: ./libraries.sh 010
125+
126+
- name: Build Libmikmod 3.1.11
127+
run: ./libraries.sh 011
128+
129+
- name: Build Libxml2 2.7.8
130+
run: ./libraries.sh 012
131+
132+
- name: Build Sdl_psl1ght
133+
run: ./libraries.sh 013
134+
135+
- name: Build Sdl2_psl1ght
136+
run: ./libraries.sh 014
137+
138+
- name: Build Sdl_psl1ght_libs
139+
run: ./libraries.sh 015
140+
141+
- name: Build SDL2_mixer 2.0.4
142+
run: ./libraries.sh 016
143+
144+
- name: Build Polarssl 1.3.9
145+
run: ./libraries.sh 017
146+
147+
- name: Build Libcurl 7.64.1
148+
run: ./libraries.sh 018
149+
150+
- name: Build Libmad 0.15.1b
151+
run: ./libraries.sh 019
152+
153+
- name: Build Flac 1.2.1
154+
run: ./libraries.sh 020
155+
156+
- name: Build Faad2 2.7
157+
run: ./libraries.sh 021
158+
159+
- name: Build Libtheora 1.1.1
160+
run: ./libraries.sh 022
161+
162+
- name: Build NoRSX
163+
run: ./libraries.sh 023
164+
165+
- name: Build Libjson
166+
run: ./libraries.sh 024
167+
168+
- name: Build Debugnet
169+
run: ./libraries.sh 025
170+
171+
- name: Build Ps3soundlib
172+
run: ./libraries.sh 026
173+
174+
- name: Build Tiny3d_libfont
175+
run: ./libraries.sh 027
176+
177+
- name: Build MbedTLS 2.28.10
178+
run: ./libraries.sh 028
179+
180+
- name: Build Libunrar
181+
run: ./libraries.sh 029
182+
183+
- name: Build Libnfs
184+
run: ./libraries.sh 030
185+
186+
- name: Build Libsmb2
187+
run: ./libraries.sh 031
188+
189+
- name: Build Package
190+
run: |
191+
7z a ps3libraries-${{ matrix.os }}-${{ runner.arch }}.zip $PSL1GHT/portlibs/
192+
193+
- name: Push package artifact
194+
uses: actions/upload-artifact@v7
195+
with:
196+
name: ps3libraries-${{ env.sha_name }}-${{ matrix.os }}-${{ runner.arch }}
197+
path: ps3libraries-${{ matrix.os }}-${{ runner.arch }}.zip
198+
if-no-files-found: error
199+
200+
push_release:
201+
if: |
202+
github.event_name == 'push' &&
203+
github.repository == 'ps3dev/ps3libraries'
204+
needs: build
205+
runs-on: ubuntu-latest
206+
permissions:
207+
contents: write
208+
steps:
209+
- name: Checkout
210+
uses: actions/checkout@v6
211+
212+
- name: Download artifacts
213+
uses: actions/download-artifact@v8
214+
with:
215+
path: artifacts
216+
merge-multiple: true
9217

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 install python2.7
18-
sudo apt-get -y install autoconf automake bison flex make texinfo patch wget zlib1g-dev libtool-bin bzip2 pkg-config
19-
20-
# using pre-compiled PS3 toolchain
21-
# to do: replace toolchain link
22-
- name: Download PSL1GHT Toolchain
23-
run: |
24-
curl -sL https://github.com/bucanero/ps3toolchain/releases/download/ubuntu-latest-fad3b5fb/ps3dev-ubuntu-latest-2020-08-31.tar.gz | tar xvz -C ./
25-
curl -sL https://github.com/ps3dev/PSL1GHT/raw/master/ppu/include/sysutil/sysutil.h -o ps3dev/ppu/include/sysutil/sysutil.h
26-
curl -sL https://gist.github.com/bucanero/150ec41325894bbd1b4513ecb9e1cfb6/raw/1814600a1b3c804209c4f71dd6316779e160cb25/utime.h -o ps3dev/ppu/ppu/include/sys/utime.h
27-
echo "PS3DEV=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
28-
echo "PSL1GHT=${GITHUB_WORKSPACE}/ps3dev" >> $GITHUB_ENV
29-
30-
- name: Install libraries
31-
run: |
32-
sed -i.bak '8d' libraries-sudo.sh
33-
./libraries-sudo.sh
34-
35-
- name: Build Package
36-
run: |
37-
7z a ps3libraries.zip $PSL1GHT/portlibs/
38-
39-
- name: Push package artifact
40-
uses: actions/upload-artifact@v4
41-
with:
42-
name: ps3libraries-build_${{ env.sha_name }}
43-
path: ps3libraries.zip
44-
if-no-files-found: error
218+
- name: Create Pre-Release
219+
env:
220+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
221+
run: |
222+
TAG="nightly-$(date -u +%Y-%m-%d)"
223+
gh release delete "$TAG" --yes --cleanup-tag || true
224+
gh release create "$TAG" artifacts/*.zip --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/manifest.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.

0 commit comments

Comments
 (0)