Skip to content

Commit 23f632b

Browse files
committed
switch all examples from ramfs to cpiovfs
Point unikraft source to danbugs/unikraft cpiovfs-fix branch which includes the vnop_write_t signature fix and IST re-entry prevention. Update CI fallback clone logic to parse source URLs from kraft.yaml instead of hardcoding unikraft/ org. Signed-off-by: danbugs <danilochiarlone@gmail.com>
1 parent 77c88dd commit 23f632b

15 files changed

Lines changed: 122 additions & 75 deletions

File tree

.github/workflows/benchmarks.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,14 @@ jobs:
7373
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
7474
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
7575
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
76-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
76+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
77+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
78+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
79+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
7780
mkdir -p .unikraft/apps .unikraft/libs
7881
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
79-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
80-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
82+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
83+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
8184
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
8285
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
8386
fi

.github/workflows/publish-examples.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,14 @@ jobs:
103103
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
104104
# Fallback: manual source clone + build
105105
if [ ! -f ".unikraft/build/${{ matrix.example.kernel }}" ]; then
106-
UK_BRANCH=$(grep 'version:' kraft.yaml | head -1 | awk '{print $2}')
106+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
107+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
108+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
109+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
107110
mkdir -p .unikraft/apps .unikraft/libs
108111
rm -rf .unikraft/unikraft .unikraft/apps/elfloader
109-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
110-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
112+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
113+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
111114
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
112115
rm -rf .unikraft/build
113116
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64

.github/workflows/test-examples.yml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,14 @@ jobs:
110110
# Manually clone the components and rebuild with --no-fetch/--no-update.
111111
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
112112
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
113-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
113+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
114+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
115+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
116+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
114117
mkdir -p .unikraft/apps .unikraft/libs
115118
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
116-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
117-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
119+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
120+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
118121
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
119122
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
120123
fi
@@ -287,11 +290,14 @@ jobs:
287290
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
288291
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
289292
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
290-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
293+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
294+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
295+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
296+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
291297
mkdir -p .unikraft/apps .unikraft/libs
292298
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
293-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
294-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
299+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
300+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
295301
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
296302
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
297303
fi
@@ -420,11 +426,14 @@ jobs:
420426
just rootfs
421427
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
422428
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
423-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
429+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
430+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
431+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
432+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
424433
mkdir -p .unikraft/apps .unikraft/libs
425434
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
426-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
427-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
435+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
436+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
428437
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
429438
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
430439
fi

examples/dotnet-nativeaot/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: dotnet-nativeaot-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
CONFIG_PLAT_HYPERLIGHT: 'y'
99
CONFIG_PAGING: 'n'
@@ -18,8 +18,11 @@ unikraft:
1818
CONFIG_OPTIMIZE_PIE: 'y'
1919
CONFIG_LIBVFSCORE: 'y'
2020
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
21-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
22-
CONFIG_LIBRAMFS: 'y'
21+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
22+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
25+
CONFIG_LIBCPIOVFS: 'y'
2326
CONFIG_LIBUKCPIO: 'y'
2427
CONFIG_APPELFLOADER: 'y'
2528
CONFIG_APPELFLOADER_VFSEXEC: 'y'
@@ -53,7 +56,7 @@ unikraft:
5356

5457
libraries:
5558
app-elfloader:
56-
source: https://github.com/unikraft/app-elfloader.git
59+
source: https://github.com/danbugs/app-elfloader.git
5760
version: plat-hyperlight
5861
libelf:
5962
source: https://github.com/unikraft/lib-libelf.git

examples/go/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ specification: '0.6'
33
name: go-hyperlight
44

55
unikraft:
6-
source: https://github.com/unikraft/unikraft.git
7-
version: plat-hyperlight
6+
source: https://github.com/danbugs/unikraft.git
7+
version: cpiovfs-fix
88
kconfig:
99
# Platform
1010
CONFIG_PLAT_HYPERLIGHT: 'y'
@@ -26,8 +26,11 @@ unikraft:
2626
# VFS and initrd support
2727
CONFIG_LIBVFSCORE: 'y'
2828
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
29-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
30-
CONFIG_LIBRAMFS: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
32+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
33+
CONFIG_LIBCPIOVFS: 'y'
3134
CONFIG_LIBUKCPIO: 'y'
3235

3336
# ELF loader - Go binary location
@@ -61,7 +64,7 @@ unikraft:
6164

6265
libraries:
6366
app-elfloader:
64-
source: https://github.com/unikraft/app-elfloader.git
67+
source: https://github.com/danbugs/app-elfloader.git
6568
version: plat-hyperlight
6669
libelf:
6770
source: https://github.com/unikraft/lib-libelf.git

examples/helloworld-c/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: helloworld-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
CONFIG_PLAT_HYPERLIGHT: 'y'
99
CONFIG_PAGING: 'n'
@@ -20,8 +20,11 @@ unikraft:
2020
CONFIG_OPTIMIZE_PIE: 'y'
2121
CONFIG_LIBVFSCORE: 'y'
2222
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
23-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
24-
CONFIG_LIBRAMFS: 'y'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
25+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
26+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
27+
CONFIG_LIBCPIOVFS: 'y'
2528
CONFIG_LIBUKCPIO: 'y'
2629
CONFIG_APPELFLOADER: 'y'
2730
CONFIG_APPELFLOADER_VFSEXEC: 'y'
@@ -52,7 +55,7 @@ unikraft:
5255

5356
libraries:
5457
app-elfloader:
55-
source: https://github.com/unikraft/app-elfloader.git
58+
source: https://github.com/danbugs/app-elfloader.git
5659
version: plat-hyperlight
5760
libelf:
5861
source: https://github.com/unikraft/lib-libelf.git

examples/hostfs-posix-c/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: hostfs-posix-c-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
# Platform
99
CONFIG_PLAT_HYPERLIGHT: 'y'
@@ -25,8 +25,11 @@ unikraft:
2525
# VFS + initrd as ramfs (for /bin/hello and the ELF loader)
2626
CONFIG_LIBVFSCORE: 'y'
2727
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
28-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
29-
CONFIG_LIBRAMFS: 'y'
28+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
32+
CONFIG_LIBCPIOVFS: 'y'
3033
CONFIG_LIBUKCPIO: 'y'
3134

3235
# devfs + /dev/hcall (needed for HYPERLIGHT_HCALL symbol;
@@ -68,7 +71,7 @@ unikraft:
6871

6972
libraries:
7073
app-elfloader:
71-
source: https://github.com/unikraft/app-elfloader.git
74+
source: https://github.com/danbugs/app-elfloader.git
7275
version: plat-hyperlight
7376
libelf:
7477
source: https://github.com/unikraft/lib-libelf.git

examples/hostfs-posix-py/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: hostfs-posix-py-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
# Platform
99
CONFIG_PLAT_HYPERLIGHT: 'y'
@@ -25,8 +25,11 @@ unikraft:
2525
# VFS + initrd as ramfs (for /usr/local/bin/python3 and the ELF loader)
2626
CONFIG_LIBVFSCORE: 'y'
2727
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
28-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
29-
CONFIG_LIBRAMFS: 'y'
28+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
32+
CONFIG_LIBCPIOVFS: 'y'
3033
CONFIG_LIBUKCPIO: 'y'
3134

3235
# devfs + /dev/hcall (needed for HYPERLIGHT_HCALL symbol;
@@ -73,7 +76,7 @@ unikraft:
7376

7477
libraries:
7578
app-elfloader:
76-
source: https://github.com/unikraft/app-elfloader.git
79+
source: https://github.com/danbugs/app-elfloader.git
7780
version: plat-hyperlight
7881
libelf:
7982
source: https://github.com/unikraft/lib-libelf.git

examples/multifn-c/kraft.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: multifn-c-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
CONFIG_PLAT_HYPERLIGHT: 'y'
99
CONFIG_PAGING: 'n'
@@ -19,8 +19,11 @@ unikraft:
1919
CONFIG_OPTIMIZE_PIE: 'y'
2020
CONFIG_LIBVFSCORE: 'y'
2121
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
22-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
23-
CONFIG_LIBRAMFS: 'y'
22+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
25+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
26+
CONFIG_LIBCPIOVFS: 'y'
2427
CONFIG_LIBUKCPIO: 'y'
2528
CONFIG_APPELFLOADER: 'y'
2629
CONFIG_APPELFLOADER_VFSEXEC: 'y'
@@ -46,7 +49,7 @@ unikraft:
4649

4750
libraries:
4851
app-elfloader:
49-
source: https://github.com/unikraft/app-elfloader.git
52+
source: https://github.com/danbugs/app-elfloader.git
5053
version: plat-hyperlight
5154
libelf:
5255
source: https://github.com/unikraft/lib-libelf.git

examples/powershell/kraft.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ specification: '0.6'
22
name: powershell-hyperlight
33

44
unikraft:
5-
source: https://github.com/unikraft/unikraft.git
6-
version: plat-hyperlight
5+
source: https://github.com/danbugs/unikraft.git
6+
version: cpiovfs-fix
77
kconfig:
88
# Platform
99
CONFIG_PLAT_HYPERLIGHT: 'y'
@@ -89,7 +89,7 @@ unikraft:
8989

9090
libraries:
9191
app-elfloader:
92-
source: https://github.com/unikraft/app-elfloader.git
92+
source: https://github.com/danbugs/app-elfloader.git
9393
version: plat-hyperlight
9494
libelf:
9595
source: https://github.com/unikraft/lib-libelf.git

0 commit comments

Comments
 (0)