Skip to content

Commit 19e448b

Browse files
committed
Remove ansible from macOS CI
1 parent 32bf3fe commit 19e448b

File tree

7 files changed

+106
-71
lines changed

7 files changed

+106
-71
lines changed

.github/workflows/ci-macos.yml

+17-23
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,43 @@ env:
55
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66

77
on:
8-
pull_request:
98
push:
109
branches: ["main"]
1110
tags: ["**"]
11+
pull_request:
12+
branches: ["main"]
1213

1314
jobs:
1415
macos:
1516
name: LLVM ${{ matrix.LLVM_VERSION }}
1617
runs-on: macos-latest
1718
strategy:
1819
matrix:
19-
LLVM_VERSION: [13, 14, 15, 16, 17, 18]
20+
include:
21+
- OS_NAME: "macos"
22+
LLVM_VERSION: 13
2023

2124
steps:
22-
- name: Debugging
23-
run: |
24-
env | sort
25-
cat $GITHUB_EVENT_PATH
26-
2725
- name: Fix git
2826
run: |
2927
git config --global --add safe.directory $PWD
30-
31-
- name: Checkout sources
32-
uses: actions/checkout@v3
28+
- uses: actions/checkout@v4
3329
with:
3430
submodules: true
35-
3631
- uses: ./actions/detect-package-metadata
3732
id: metadata
3833

3934
- name: Run CI task
4035
run: |
41-
brew install ansible
42-
cd infrastructure && \
43-
ansible-playbook macos-playbook.yaml \
44-
-e llvm_version="${{ matrix.LLVM_VERSION }}" \
45-
-e source_dir=$PWD/.. \
46-
-e gitref=$GITHUB_SHA \
47-
-e host=localhost \
48-
-e SDKROOT=`xcrun -show-sdk-path` \
49-
-e mull_version=${{ steps.metadata.outputs.version }}${{ steps.metadata.outputs.suffix }} \
50-
--verbose
36+
brew install zlib ncurses sqlite ninja llvm@${{ matrix.LLVM_VERSION }}
37+
pip3 install -r requirements.txt --break-system-packages
38+
./infrastructure/generator.py cmake --os macos --llvm_version ${{ matrix.LLVM_VERSION }}
39+
cmake --preset mull -DMULL_VERSION=${{ steps.metadata.outputs.version }}${{ steps.metadata.outputs.suffix }}
40+
# cmake --workflow --preset build-and-test
41+
cmake --workflow --preset package
42+
./end2end-tests/setup_end2end_tests.sh
43+
./end2end-tests/run_end2end_tests.sh macos ${{ matrix.LLVM_VERSION }}
44+
mull-runner-${{ matrix.LLVM_VERSION }} --version
5145
5246
- name: Publish package
5347
if: env.CLOUDSMITH_API_KEY != null
@@ -57,12 +51,12 @@ jobs:
5751
--version ${{ steps.metadata.outputs.version }}${{ steps.metadata.outputs.suffix }} \
5852
mull-project/mull-${{ steps.metadata.outputs.channel }} \
5953
--tags macos \
60-
infrastructure/packages/`cat infrastructure/PACKAGE_FILE_NAME`.zip
54+
build.${{ matrix.OS_NAME }}.${{ matrix.LLVM_VERSION }}.dir/*.zip
6155
6256
- name: Move package
6357
run: |
6458
mkdir -p /tmp/packages
65-
mv infrastructure/packages/`cat infrastructure/PACKAGE_FILE_NAME`.zip /tmp/packages/`cat infrastructure/PACKAGE_FILE_NAME`.zip
59+
mv build.${{ matrix.OS_NAME }}.${{ matrix.LLVM_VERSION }}.dir/*.zip /tmp/packages/
6660
6761
- uses: ./actions/attach-package
6862
with:

.github/workflows/ci-ubuntu.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ on:
88
push:
99
branches: ["main"]
1010
tags: ["**"]
11-
pull_request:
12-
branches: ["main"]
11+
# pull_request:
12+
# branches: ["main"]
1313

1414
jobs:
1515
build-and-test:
@@ -77,12 +77,12 @@ jobs:
7777
UBUNTU_CODENAME=$(. /etc/os-release; echo "${UBUNTU_CODENAME/*, /}")
7878
env CLOUDSMITH_API_KEY=${{ secrets.CLOUDSMITH_API_KEY }} cloudsmith push deb \
7979
mull-project/mull-${{ steps.metadata.outputs.channel }}/${{ matrix.OS_NAME }}/${UBUNTU_CODENAME} \
80-
build.${{ matrix.LLVM_VERSION }}.dir/*.deb
80+
build.${{ matrix.OS_NAME }}.${{ matrix.LLVM_VERSION }}.dir/*.deb
8181
8282
- name: Move package
8383
run: |
8484
mkdir -p /tmp/packages
85-
sudo mv build.${{ matrix.LLVM_VERSION }}.dir/*.deb /tmp/packages/
85+
sudo mv build.${{ matrix.OS_NAME }}.${{ matrix.LLVM_VERSION }}.dir/*.deb /tmp/packages/
8686
8787
- uses: ./actions/attach-package
8888
with:

.github/workflows/mull-20.04.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Mull (20.04)
22

33
on:
4-
pull_request:
4+
# pull_request:
55
push:
66
branches: ["main"]
77

end2end-tests/run_end2end_tests.sh

+29-9
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
1-
#!/usr/bin/bash
1+
#!/bin/bash
22

33
set -e
44
set -x
55

6-
LLVM_VERSION=$1
6+
OS_NAME=$1
7+
LLVM_VERSION=$2
8+
BUILD_DIR=build.$OS_NAME.$LLVM_VERSION.dir
79

810
if (( $LLVM_VERSION < 16 )); then
911
EXTRA_FLAGS=-fexperimental-new-pass-manager
1012
fi
1113

12-
# Install mull system-wide
13-
dpkg -i build.${LLVM_VERSION}.dir/*.deb
14+
if [ "$OS_NAME" == "macos" ]
15+
then
16+
sudo cmake --install $BUILD_DIR
17+
PLUGIN_PATH=/usr/local/lib/mull-ir-frontend-$LLVM_VERSION
18+
MULL_CC=/opt/homebrew/opt/llvm@$LLVM_VERSION/bin/clang
19+
MULL_CXX=/opt/homebrew/opt/llvm@$LLVM_VERSION/bin/clang++
20+
else
21+
dpkg -i $BUILD_DIR/*.deb
22+
PLUGIN_PATH=/usr/lib/mull-ir-frontend-$LLVM_VERSION
23+
MULL_CC=clang-$LLVM_VERSION
24+
MULL_CXX=clang++-$LLVM_VERSION
25+
fi
26+
27+
which mull-runner-$LLVM_VERSION
1428

1529
pushd `dirname "$0"`
1630

@@ -23,10 +37,10 @@ function test_fmt() {
2337
pushd fmt.build.dir
2438

2539
cmake -G Ninja \
26-
-DCMAKE_CXX_FLAGS="-grecord-command-line -fpass-plugin=/usr/lib/mull-ir-frontend-$LLVM_VERSION $EXTRA_FLAGS" \
40+
-DCMAKE_CXX_FLAGS="-grecord-command-line -fpass-plugin=$PLUGIN_PATH $EXTRA_FLAGS" \
2741
-DCMAKE_BUILD_TYPE=Debug \
28-
-DCMAKE_C_COMPILER=clang-$LLVM_VERSION \
29-
-DCMAKE_CXX_COMPILER=clang++-$LLVM_VERSION \
42+
-DCMAKE_C_COMPILER=$MULL_CC \
43+
-DCMAKE_CXX_COMPILER=$MULL_CXX \
3044
..
3145

3246
ninja core-test
@@ -42,13 +56,19 @@ function test_fmt() {
4256
function test_openssl() {
4357
pushd openssl
4458

45-
env CC=clang-$LLVM_VERSION ./config -g -O0 \
59+
env CC=$MULL_CC ./config -g -O0 \
4660
$EXTRA_FLAGS \
4761
-grecord-command-line \
48-
-fpass-plugin=/usr/lib/mull-ir-frontend-$LLVM_VERSION
62+
-fpass-plugin=$PLUGIN_PATH
4963

5064
make build_generated -j
5165
make ./test/bio_enc_test -j
66+
67+
if [ "$OS_NAME" == "macos" ]
68+
then
69+
install_name_tool -change /usr/local/lib/libcrypto.3.dylib $PWD/libcrypto.3.dylib ./test/bio_enc_test
70+
fi
71+
5272
env LD_LIBRARY_PATH=. ./test/bio_enc_test
5373
env LD_LIBRARY_PATH=. mull-runner-$LLVM_VERSION --allow-surviving ./test/bio_enc_test
5474

end2end-tests/setup_end2end_tests.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/bash
1+
#!/bin/bash
22

33
set -e
44
set -x

infrastructure/generator.py

+50-29
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,53 @@
66
import shutil
77

88
SUPPORTED_PLATFORMS = {
9-
"ubuntu": {
10-
"20.04": [12],
11-
"22.04": [13, 14, 15],
12-
"24.04": [14, 15, 16, 17, 18]
13-
}
9+
"ubuntu": {"20.04": [12], "22.04": [13, 14, 15], "24.04": [14, 15, 16, 17, 18]}
1410
}
1511

1612

1713
def cmake(args):
18-
template_name = f"infrastructure/templates/cmake-presets/{args.os}.mustache"
19-
template_args = {"LLVM_VERSION": args.llvm_version}
14+
os_specific_args = {
15+
"ubuntu": {
16+
"CC": f"clang-{args.llvm_version}",
17+
"CXX": f"clang++-{args.llvm_version}",
18+
"CMAKE_PREFIX_PATH": f"/usr/lib/llvm-{args.llvm_version}/cmake/;/usr/lib/cmake/clang-{args.llvm_version}/",
19+
},
20+
"macos": {
21+
"CC": f"/opt/homebrew/opt/llvm@{args.llvm_version}/bin/clang",
22+
"CXX": f"/opt/homebrew/opt/llvm@{args.llvm_version}/bin/clang++",
23+
"CMAKE_PREFIX_PATH": f"/opt/homebrew/opt/llvm@{args.llvm_version}/lib/cmake/llvm/;/opt/homebrew/opt/llvm@{args.llvm_version}/lib/cmake/clang/",
24+
},
25+
}
26+
template_name = f"infrastructure/templates/cmake-presets/CMakePresets.json.mustache"
27+
template_args = os_specific_args[args.os]
28+
template_args["LLVM_VERSION"] = args.llvm_version
29+
template_args["OS_NAME"] = args.os
2030
renderer = pystache.Renderer(missing_tags="strict")
2131
with open(template_name, "r") as t:
2232
result = renderer.render(t.read(), template_args)
23-
with open('CMakePresets.json', "w") as f:
33+
with open("CMakePresets.json", "w") as f:
2434
f.write(result)
2535

2636

2737
def devcontainers(args):
2838
shutil.rmtree(".devcontainer")
29-
for (os_name, platform) in SUPPORTED_PLATFORMS.items():
39+
for os_name, platform in SUPPORTED_PLATFORMS.items():
3040
template_folder = f"infrastructure/templates/devcontainers/{os_name}"
31-
for (os_version, llvm_versions) in platform.items():
41+
for os_version, llvm_versions in platform.items():
3242
for llvm_version in llvm_versions:
33-
container_folder = f".devcontainer/{os_name}_{os_version}_{llvm_version}"
43+
container_folder = (
44+
f".devcontainer/{os_name}_{os_version}_{llvm_version}"
45+
)
3446
os.makedirs(container_folder, exist_ok=True)
3547

36-
template_args = {"LLVM_VERSION": llvm_version,
37-
"OS_NAME": os_name, "OS_VERSION": os_version}
48+
template_args = {
49+
"LLVM_VERSION": llvm_version,
50+
"OS_NAME": os_name,
51+
"OS_VERSION": os_version,
52+
}
3853

3954
renderer = pystache.Renderer(missing_tags="strict")
40-
for template in ['devcontainer.json', "Dockerfile"]:
55+
for template in ["devcontainer.json", "Dockerfile"]:
4156
template_name = f"{template_folder}/{template}.mustache"
4257
result_filename = f"{container_folder}/{template}"
4358
with open(template_name, "r") as t:
@@ -53,13 +68,16 @@ def gh_workflows(args):
5368
strategies = []
5469
for os_version in sorted(SUPPORTED_PLATFORMS["ubuntu"].keys()):
5570
for llvm_version in SUPPORTED_PLATFORMS["ubuntu"][os_version]:
56-
arg = {"OS_NAME": "ubuntu", "OS_VERSION": os_version,
57-
"LLVM_VERSION": llvm_version}
71+
arg = {
72+
"OS_NAME": "ubuntu",
73+
"OS_VERSION": os_version,
74+
"LLVM_VERSION": llvm_version,
75+
}
5876
strategies.append(arg)
5977

6078
template_args = {"strategy": strategies, "OS_NAME": "Ubuntu"}
6179
renderer = pystache.Renderer(missing_tags="strict")
62-
for template in ['ci-ubuntu.yml']:
80+
for template in ["ci-ubuntu.yml"]:
6381
template_name = f"{template_folder}/{template}.mustache"
6482
result_filename = f"{workflow_folder}/{template}"
6583
with open(template_name, "r") as t:
@@ -70,21 +88,24 @@ def gh_workflows(args):
7088

7189
def main():
7290
parser = argparse.ArgumentParser(
73-
prog='generator', description='Generates various infra files for Mull')
91+
prog="generator", description="Generates various infra files for Mull"
92+
)
7493
subparsers = parser.add_subparsers(
75-
title='subcommands', help='available subcommands', dest="cmd")
76-
77-
parser_cmake = subparsers.add_parser(
78-
'cmake', help='Generates CMake preset file')
79-
parser_cmake.add_argument('--os', choices=('ubuntu',),
80-
help='Select OS for which to generate preset', type=str)
94+
title="subcommands", help="available subcommands", dest="cmd"
95+
)
96+
97+
parser_cmake = subparsers.add_parser("cmake", help="Generates CMake preset file")
98+
parser_cmake.add_argument(
99+
"--os",
100+
choices=("ubuntu", "macos"),
101+
help="Select OS for which to generate preset",
102+
type=str,
103+
)
81104
parser_cmake.add_argument("--llvm_version", type=int)
82105

83-
subparsers.add_parser('devcontainers', help='Generates devcontainer files')
84-
subparsers.add_parser('github_workflows',
85-
help='Generates GitHub workflow files')
86-
subparsers.add_parser('all',
87-
help='Combines devcontainers and github_workflows')
106+
subparsers.add_parser("devcontainers", help="Generates devcontainer files")
107+
subparsers.add_parser("github_workflows", help="Generates GitHub workflow files")
108+
subparsers.add_parser("all", help="Combines devcontainers and github_workflows")
88109

89110
args = parser.parse_args()
90111
if args.cmd == "cmake":

infrastructure/templates/cmake-presets/ubuntu.mustache renamed to infrastructure/templates/cmake-presets/CMakePresets.json.mustache

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
{
55
"name": "mull",
66
"generator": "Ninja",
7-
"binaryDir": "${sourceDir}/build.{{{LLVM_VERSION}}}.dir",
7+
"binaryDir": "${sourceDir}/build.{{OS_NAME}}.{{{LLVM_VERSION}}}.dir",
88
"cacheVariables": {
99
"CMAKE_BUILD_TYPE": "Release",
10-
"CMAKE_C_COMPILER": "clang-{{LLVM_VERSION}}",
11-
"CMAKE_CXX_COMPILER": "clang++-{{LLVM_VERSION}}",
12-
"CMAKE_PREFIX_PATH": "/usr/lib/llvm-{{LLVM_VERSION}}/cmake/;/usr/lib/cmake/clang-{{LLVM_VERSION}}/"
10+
"CMAKE_C_COMPILER": "{{CC}}",
11+
"CMAKE_CXX_COMPILER": "{{CXX}}",
12+
"CMAKE_PREFIX_PATH": "{{CMAKE_PREFIX_PATH}}"
1313
}
1414
}
1515
],

0 commit comments

Comments
 (0)