Skip to content

Commit fd97984

Browse files
committed
Add basic CI via GitHub actions.
1 parent 1cf5402 commit fd97984

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

.github/workflows/build.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: Build GNUstep (CI)
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
pull_request:
7+
branches: [ master ]
8+
9+
jobs:
10+
build-linux:
11+
name: Build on Ubuntu
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 180
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
20+
- name: Prepare gnustep workspace
21+
shell: bash
22+
run: |
23+
# Create the layout expected by the scripts: a 'gnustep' parent directory
24+
mkdir -p gnustep
25+
# Copy repository contents into gnustep/tools-scripts (exclude the .git directory to avoid nested git issues)
26+
rsync -a --exclude '.git' ./ gnustep/tools-scripts/
27+
ls -la gnustep/tools-scripts | sed -n '1,200p'
28+
29+
- name: Clone GNUStep repositories (HTTPS)
30+
shell: bash
31+
run: |
32+
set -euo pipefail
33+
cd gnustep
34+
FILES="libs-back libs-gui apps-projectcenter libs-palettes libs-boron apps-easydiff libs-opal libs-ec libs-mica libs-webservices libobjc2 libs-performance libs-base libs-sqlclient libs-corebase libs-dbuskit gitsvn-scripts plugins-themes-WinUXTheme plugins-themes-Gtk plugins-session plugins-gs-emacs libs-gscoredata apps-thematic apps-systempreferences tools-android android-examples tools-windows-development-installer tools-startup libs-gsweb tools-nfmake tools-installers tests-testsuite tests-retaincount tests-palettetest tests-gormtest libs-webserver libs-uikit libs-ucsdata libs-sysconfig apps-interfacecreator tests-examples libs-xcode libs-steptalk libs-smbkit libs-simplewebkit libs-ruby libs-renaissance libs-quartzcore libs-ppd libs-java libs-guile libs-gsldap libs-gsgd libs-gscrypt libs-gsantlr libs-gdl2 libs-corenetwork libs-coreimage gap libs-audiotoolbox apps-gworkspace apps-gsldapwebexplorer apps-gorm tools-make tools-scripts tools-model-main tools-charsets plugins-deprecated license libobjc webkit-cef apps-dock tools-bridge plugins-themes tools-windows-msvc"
35+
36+
for repo in $FILES; do
37+
echo "Processing $repo"
38+
if [ -d "$repo" ]; then
39+
echo "Updating existing $repo"
40+
git -C "$repo" pull origin master || true
41+
else
42+
git clone --recursive "https://github.com/gnustep/$repo.git" || true
43+
fi
44+
done
45+
46+
- name: Make scripts executable
47+
shell: bash
48+
run: |
49+
cd gnustep/tools-scripts || exit 1
50+
chmod +x ./* || true
51+
52+
- name: Install dependencies (Linux)
53+
shell: bash
54+
run: |
55+
set -euo pipefail
56+
cd gnustep
57+
# The install script will call apt/yum as appropriate. Use sudo in the runner.
58+
sudo ./tools-scripts/install-dependencies-linux || true
59+
60+
- name: Build GNUstep (clang)
61+
shell: bash
62+
env:
63+
WITH_ARC: ""
64+
run: |
65+
set -euo pipefail
66+
cd gnustep
67+
# Build using the repository scripts. This follows the README's build steps.
68+
./tools-scripts/build-linux
69+
70+
- name: Post-install steps
71+
shell: bash
72+
run: |
73+
set -euo pipefail
74+
cd gnustep
75+
./tools-scripts/post-install-linux || true

0 commit comments

Comments
 (0)