Skip to content

Commit 0c00e4d

Browse files
authored
Merge pull request #31 from WolfDan/musl
static linux compilation
2 parents b8235d9 + 6cf81cb commit 0c00e4d

9 files changed

Lines changed: 156 additions & 34 deletions

File tree

.github/workflows/Tests.yml

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,61 @@ name: tests
22

33
on:
44
push:
5-
branches: [ master ]
5+
branches: [master]
66
pull_request:
7-
branches: [ master ]
7+
branches: [master]
88

99
jobs:
1010
linux:
1111
runs-on: ubuntu-24.04
1212
name: Ubuntu 24.04
1313
steps:
14-
- name: Install Swift
15-
uses: tayloraswift/swift-install-action@master
16-
with:
17-
swift-prefix: "swift-6.0.3-release/ubuntu2404/swift-6.0.3-RELEASE"
18-
swift-id: "swift-6.0.3-RELEASE-ubuntu24.04"
14+
- name: Install Swift
15+
uses: tayloraswift/swift-install-action@master
16+
with:
17+
swift-prefix: "swift-6.0.3-release/ubuntu2404/swift-6.0.3-RELEASE"
18+
swift-id: "swift-6.0.3-RELEASE-ubuntu24.04"
1919

20-
- name: Checkout repository
21-
uses: actions/checkout@v3
20+
- name: Checkout repository
21+
uses: actions/checkout@v3
2222

23-
- name: Install imagemagick
24-
run: sudo apt install -y imagemagick
23+
- name: Install imagemagick
24+
run: sudo apt install -y imagemagick
2525

26-
- name: Run tests
27-
run: Scripts/TestAll
26+
- name: Run tests
27+
run: Scripts/TestAll
28+
29+
linux-musl:
30+
runs-on: ubuntu-24.04
31+
name: Ubuntu 24.04
32+
steps:
33+
- name: Install Swift
34+
uses: tayloraswift/swift-install-action@master
35+
with:
36+
swift-prefix: "swift-6.0.3-release/ubuntu2404/swift-6.0.3-RELEASE"
37+
swift-id: "swift-6.0.3-RELEASE-ubuntu24.04"
38+
39+
- name: Checkout repository
40+
uses: actions/checkout@v3
41+
42+
- name: Install imagemagick
43+
run: sudo apt install -y imagemagick
44+
45+
- name: Install linux SDK
46+
run: swift sdk install https://download.swift.org/swift-6.0.3-release/static-sdk/swift-6.0.3-RELEASE/swift-6.0.3-RELEASE_static-linux-0.0.1.artifactbundle.tar.gz --checksum 67f765e0030e661a7450f7e4877cfe008db4f57f177d5a08a6e26fd661cdd0bd
47+
48+
- name: Run tests
49+
run: Scripts/TestAll -b "--swift-sdk x86_64-swift-linux-musl"
2850

2951
macos:
3052
runs-on: macos-15
3153
name: macOS
3254
steps:
33-
- name: Checkout repository
34-
uses: actions/checkout@v3
55+
- name: Checkout repository
56+
uses: actions/checkout@v3
3557

36-
- name: Install imagemagick
37-
run: brew install imagemagick
58+
- name: Install imagemagick
59+
run: brew install imagemagick
3860

39-
- name: Run tests
40-
run: Scripts/TestAll
61+
- name: Run tests
62+
run: Scripts/TestAll

Scripts/TestAll

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,28 @@
22
set -e
33
swift --version
44

5-
utils/tests
6-
utils/examples -c release
5+
DEFAULT_BUILD_FLAGS=""
6+
7+
usage()
8+
{
9+
echo "usage: Scripts/TestAll [OPTION...]
10+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'"
11+
}
12+
13+
build_flags=$DEFAULT_BUILD_FLAGS
14+
15+
while [ "$1" != "" ] ; do
16+
case $1 in
17+
-b | --build-flags )
18+
shift
19+
build_flags=$1
20+
;;
21+
* )
22+
usage
23+
exit 1
24+
esac
25+
shift
26+
done
27+
28+
utils/tests -b "$build_flags"
29+
utils/examples -c release -b "$build_flags"

Sources/JPEGSystem/os.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import JPEG
66

77
#if os(macOS)
88
import Darwin
9-
#elseif os(Linux)
9+
#elseif canImport(Glibc)
1010
import Glibc
11+
#elseif canImport(Musl)
12+
import Musl
1113
#elseif os(Android)
1214
import Android
1315
#else

utils/examples

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/bin/bash
22
DEFAULT_BUILD_CONFIGURATION="debug"
33
SCRIPT_NAME="examples"
4+
DEFAULT_BUILD_FLAGS=""
45

56
usage()
67
{
78
echo "usage: utils/$SCRIPT_NAME [OPTION...]
8-
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'"
9+
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'
10+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'"
911
}
1012

1113
error()
@@ -23,21 +25,26 @@ check()
2325
}
2426

2527
build_configuration=$DEFAULT_BUILD_CONFIGURATION
28+
build_flags=$DEFAULT_BUILD_FLAGS
2629

2730
while [ "$1" != "" ] ; do
2831
case $1 in
2932
-c | --configuration )
3033
shift
3134
build_configuration=$1
3235
;;
36+
-b | --build-flags )
37+
shift
38+
build_flags=$1
39+
;;
3340
* )
3441
usage
3542
exit 1
3643
esac
3744
shift
3845
done
3946

40-
swift build -c $build_configuration
47+
swift build -c $build_configuration $build_flags
4148

4249
# run `DecodeBasic` example
4350
check "error: runtime error" \

utils/fuzz-test

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22
DEFAULT_BUILD_CONFIGURATION="debug"
33
DEFAULT_COUNT="16"
44
DEFAULT_PREFIX="tests/fuzz/data"
5+
DEFAULT_BUILD_FLAGS=""
56

67
usage()
78
{
89
echo "usage: utils/fuzz-test [OPTION...]
910
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'
11+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'
1012
-n, --count number of 8x8 test jpegs to generate, default $DEFAULT_COUNT
1113
-p, --prefix directory to write test images to, default '$DEFAULT_PREFIX'"
1214
}
@@ -36,6 +38,7 @@ fi
3638
prefix=$DEFAULT_PREFIX
3739
count=$DEFAULT_COUNT
3840
build_configuration=$DEFAULT_BUILD_CONFIGURATION
41+
build_flags=$DEFAULT_BUILD_FLAGS
3942

4043
JPEG_DIRECTORY_NAME="jpeg"
4144
YCC_DIRECTORY_NAME="ycc"
@@ -48,6 +51,10 @@ while [ "$1" != "" ] ; do
4851
shift
4952
build_configuration=$1
5053
;;
54+
-b | --build-flags )
55+
shift
56+
build_flags=$1
57+
;;
5158
-n | --count )
5259
shift
5360
count=$1
@@ -67,9 +74,9 @@ jpeg_pattern=$prefix/*.$JPEG_EXTENSION
6774
ycc_pattern=$prefix/*.$YCC_EXTENSION
6875

6976
check "error: swift build failed" \
70-
swift build -c $build_configuration --product JPEGFuzzer
77+
swift build -c $build_configuration --product JPEGFuzzer $build_flags
7178
check "error: swift build failed" \
72-
swift build -c $build_configuration --product JPEGComparator
79+
swift build -c $build_configuration --product JPEGComparator $build_flags
7380

7481
binaries=".build/$build_configuration"
7582
if ! [ -f $binaries/JPEGFuzzer ]; then

utils/integration-test

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/bin/bash
22
DEFAULT_BUILD_CONFIGURATION="debug"
33
TOOL_NAME="JPEGIntegrationTests"
4+
DEFAULT_BUILD_FLAGS=""
45

56
usage()
67
{
78
echo "usage: utils/$TOOL_NAME [OPTION...]
8-
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'"
9+
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'
10+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'"
911
}
1012

1113
error()
@@ -23,13 +25,18 @@ check()
2325
}
2426

2527
build_configuration=$DEFAULT_BUILD_CONFIGURATION
28+
build_flags=$DEFAULT_BUILD_FLAGS
2629

2730
while [ "$1" != "" ] ; do
2831
case $1 in
2932
-c | --configuration )
3033
shift
3134
build_configuration=$1
3235
;;
36+
-b | --build-flags )
37+
shift
38+
build_flags=$1
39+
;;
3340
* )
3441
usage
3542
exit 1
@@ -38,7 +45,7 @@ while [ "$1" != "" ] ; do
3845
done
3946

4047
check "error: swift build failed" \
41-
swift build -c $build_configuration --product $TOOL_NAME
48+
swift build -c $build_configuration --product $TOOL_NAME $build_flags
4249

4350
binaries=".build/$build_configuration"
4451
if ! [ -f $binaries/$TOOL_NAME ]; then

utils/regression-test

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/bin/bash
22
DEFAULT_BUILD_CONFIGURATION="debug"
33
TOOL_NAME="JPEGRegressionTests"
4+
DEFAULT_BUILD_FLAGS=""
45

56
usage()
67
{
78
echo "usage: utils/$TOOL_NAME [OPTION...]
89
-c, --configuration swift build configuration mode, default '$DEFAULT_BUILD_CONFIGURATION'
10+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'
911
-u, --update remove and regenerate golden outputs (tests will fail)"
1012
}
1113

@@ -24,13 +26,18 @@ check()
2426
}
2527

2628
build_configuration=$DEFAULT_BUILD_CONFIGURATION
29+
build_flags=$DEFAULT_BUILD_FLAGS
2730

2831
while [ "$1" != "" ] ; do
2932
case $1 in
3033
-c | --configuration )
3134
shift
3235
build_configuration=$1
3336
;;
37+
-b | --build-flags )
38+
shift
39+
build_flags=$1
40+
;;
3441
-u | --update )
3542
shift
3643
gold=(tests/regression/gold/*.jpg.ycc)
@@ -51,7 +58,7 @@ while [ "$1" != "" ] ; do
5158
done
5259

5360
check "error: swift build failed" \
54-
swift build -c $build_configuration --product $TOOL_NAME
61+
swift build -c $build_configuration --product $TOOL_NAME $build_flags
5562

5663
binaries=".build/$build_configuration"
5764
if ! [ -f $binaries/$TOOL_NAME ]; then

utils/tests

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,29 @@
11
#!/bin/bash
2+
SCRIPT_NAME="tests"
3+
DEFAULT_BUILD_FLAGS=""
24

3-
utils/unit-test || exit 1
4-
utils/integration-test -c release || exit 1
5-
utils/regression-test -c release || exit 1
6-
utils/fuzz-test -c release -n 16 || exit 1
5+
usage()
6+
{
7+
echo "usage: utils/$SCRIPT_NAME [OPTION...]
8+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'"
9+
}
10+
11+
build_flags=$DEFAULT_BUILD_FLAGS
12+
13+
while [ "$1" != "" ] ; do
14+
case $1 in
15+
-b | --build-flags )
16+
shift
17+
build_flags=$1
18+
;;
19+
* )
20+
usage
21+
exit 1
22+
esac
23+
shift
24+
done
25+
26+
utils/unit-test -b "$build_flags" || exit 1
27+
utils/integration-test -c release -b "$build_flags" || exit 1
28+
utils/regression-test -c release -b "$build_flags" || exit 1
29+
utils/fuzz-test -c release -n 16 -b "$build_flags" || exit 1

utils/unit-test

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#!/bin/bash
22
TOOL_NAME="JPEGUnitTests"
3+
SCRIPT_NAME="unit-test"
4+
DEFAULT_BUILD_FLAGS=""
5+
36
error()
47
{
58
echo $1
@@ -14,8 +17,29 @@ check()
1417
"$@" || error "$message"
1518
}
1619

20+
usage()
21+
{
22+
echo "usage: utils/$SCRIPT_NAME [OPTION...]
23+
-b, --build-flags swift build additional command flags, default '$DEFAULT_BUILD_FLAGS'"
24+
}
25+
26+
build_flags=$DEFAULT_BUILD_FLAGS
27+
28+
while [ "$1" != "" ] ; do
29+
case $1 in
30+
-b | --build-flags )
31+
shift
32+
build_flags=$1
33+
;;
34+
* )
35+
usage
36+
exit 1
37+
esac
38+
shift
39+
done
40+
1741
check "error: swift build failed" \
18-
swift build -c release --product $TOOL_NAME
42+
swift build -c release --product $TOOL_NAME $build_flags
1943

2044
binaries=".build/release"
2145
if ! [ -f $binaries/$TOOL_NAME ]; then

0 commit comments

Comments
 (0)