Skip to content

Conversation

@sculamacaz
Copy link
Collaborator

Part of #65

razvand and others added 30 commits September 22, 2024 13:51
Reword sentence on updating repositories for custom build. Previous
wording was confusing.

Signed-off-by: Razvan Deaconescu <[email protected]>
- `Config.uk`: application configuration
- `server.c`: the source code file
- `Makefile.uk`: defining source code files used
- `Makefile`: for building the application
- `fc.x86_64.json` / `fc.arm64.json`: Firecracker configuration
- `xen.x86_64.cfg` / `xen.arm64.cfg`: Xen configuration
- `README.md`: instructions

Signed-off-by: Razvan Deaconescu <[email protected]>
Signed-off-by: Razvan Deaconescu <[email protected]>
A missing `arch` variable resulted in a wrong link and a failed command.
Use a proper call to `uname` for the link.

Signed-off-by: Razvan Deaconescu <[email protected]>
Add `elfloader-basic/` directory (no networking):

- `Config.uk`: ELF Loader configuration
- `rootfs/`: setup for building Linux ELFs
- `Makefile`: for building the ELF Loader
- `fc.x86_64.json`: Firecracker configuration
- `README.md`: instructions

Signed-off-by: Razvan Deaconescu <[email protected]>
Add `c-fs/` directory:

- `Config.uk`: application configuration
- `cat.c`: the source code file
- `rootfs/`: directory storing the (root) filesystem
- `Makefile.uk`: defining source code files used
- `Makefile`: for building the application
- `fc.x86_64.json` / `fc.arm64.json`: Firecracker configuration
- `xen.x86_64.cfg` / `xen.arm64.cfg`: Xen configuration
- `README.md`: instructions

Signed-off-by: Razvan Deaconescu <[email protected]>
Add `cpp-hello` directory:
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: empty placeholder file required by build s
ystem
- `fc.x86_64.json` / `fc.arm64.json`: Firecracker configura
tion
- `xen.x86_64.cfg` / `xen.arm64.cfg`: Xen configuration
- `README.md`: instructions
- `.gitignore`: ignore generated files

Signed-off-by: Radu Onutu <[email protected]>
Update "C Hello" to "C HTTP" in the `Customize` section of the C HTTP
application README.

Signed-off-by: Maria Pana <[email protected]>
Add `python3-hello` directory:
- `hello.py`: the Python3 Hello program
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: empty placeholder file required by build system
- `Dockerfile`: for creating the application filesystem
- `fc.x86_64.json` / `fc.arm64.json`: Firecracker configuration
- `xen.x86_64.cfg` / `xen.arm64.cfg`: Xen configuration
- `README.md`: instructions
- `.gitignore`: ignore generated files

Signed-off-by: Razvan Deaconescu <[email protected]>
The Firecracker command line requires at lease an argument in order to
properly parse the arguments. For C HTTP, add `placeholder` as an
argument to the Firecracker command line.

Signed-off-by: Razvan Deaconescu <[email protected]>
Python requires randomness support. Update `Config.uk` accordingly.

Signed-off-by: Razvan Deaconescu <[email protected]>
`Makefile.uk` is always required by the build system, even if is an
empty file. Add it to the `elfloader-basic` application.

Signed-off-by: Razvan Deaconescu <[email protected]>
Ignore test output files:
* `log.build.*`: the output of build phases
* `log.run.*`: the output of run phases

Signed-off-by: Razvan Deaconescu <[email protected]>
Update `README.md` to also clone the `app-elfloader` repository into
the `repos/apps` directory if absent.

Signed-off-by: Maria Pana <[email protected]>
Add `elfloader-net/` directory (with networking support)

- `Config.uk`: ELF Loader configuration
- `rootfs/`: setup for building Linux ELFs, with simple C HTTP server
- `Makefile`: for building the ELF Loader
- `Makefile.uk`: empty placeholder file required by build system
- `fc.x86_64.json`: Firecracker configuration
- `README.md`: instructions

Signed-off-by: Razvan Deaconescu <[email protected]>
For each application directory, user `workdir/` as the application
working directory.

Add the top-level `setup.sh` script to clone repositories in top-level
`repos/` directory. Then use the per-application `setup.sh` to set up the
`workdir/` directory accordingly.

Update per-application `Makefile` and `README.md` files to use
`workdir/` and to instruct the use of the `setup.sh` script.

Update per-application `.gitignore` file to ignore `workdir/`.

Signed-off-by: Razvan Deaconescu <[email protected]>
Use `workdir/build/` instead of `out/` as the output directory for build
artifacts. This is cleaner as it stores all repository clones (in the
set up phase) and output files (in the build phase) in the `workdir/`
directory.

Signed-off-by: Razvan Deaconescu <[email protected]>
Move "Clean Up" section after "Run" section. Previously, it was placed
right after the "Build" section (and before the "Run" section). This
caused a "natural workflow" to use the clean up actions before the run
actions, effectively removing the necessary build artifacts.

Signed-off-by: Razvan Deaconescu <[email protected]>
Add information about the build, run and test scripts in the `script`
and `test` branches.

Signed-off-by: Razvan Deaconescu <[email protected]>
Use "Unikraft applications" instead of just "applications", to clearly
state the repository is targeted towards Unikraft development.

Signed-off-by: Razvan Deaconescu <[email protected]>
Add links to instructions to install and configure Docker. Docker is
required for certain application build and / or application filesystem
builds.

Signed-off-by: Razvan Deaconescu <[email protected]>
Instructions in the `README.md` file for the `c-fs` application for
AArch64 were, mistakenly, for Firecracker x86_64.

Update them to correctly refer the instructions for QEMU AArch64.

Signed-off-by: Razvan Deaconescu <[email protected]>
Replace instructions to manually construct the `defconfig` file with
instructions to directly download the corresponding `defconfig` file
from the GitHub repository, from the `scripts` branch.

Signed-off-by: Razvan Deaconescu <[email protected]>
Add instructions to install `bsdcpio`, required for creating initial
ramdisk files. On Debian / Ubuntu, this means installing the
`libarchive-tools` package.

Signed-off-by: Razvan Deaconescu <[email protected]>
Use `apt update` to refresh local package information. This is generally
a required step before installing via `apt install`.

Signed-off-by: Razvan Deaconescu <[email protected]>
Creating the `/etc/qemu/bridge.conf` file (for QEMU bridged networking)
will fail if the `/etc/qemu/` directory does not exist. Add command to
create directory if it does not exist.

Signed-off-by: Razvan Deaconescu <[email protected]>
Add `g++` and `g++-aarch64-linux-gnu` as install dependencies. They are
required for C++ builds.

Signed-off-by: Razvan Deaconescu <[email protected]>
Application testing involves using `curl` (for network applications).
Add `curl` to package install list.

Signed-off-by: Razvan Deaconescu <[email protected]>
razvand and others added 10 commits December 22, 2024 17:14
Add missing option (`-machine virt`) to ARM64 TLDR run command.

Signed-off-by: Razvan Deaconescu <[email protected]>
Use correct URL to download `defconfig` file in TLDR guides, i.e. use a
"raw" download URL: `https://raw.githubusercontent.com`

Signed-off-by: Razvan Deaconescu <[email protected]>
Add `cpp-http/` directory:

- `server.cpp`: HTTP server code
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: source file configuration
- `fc.x86_64.json / fc.arm64.json`: Firecracker configuration
- `xen.x86_64.cfg / xen.arm64.cfg`: Xen configuration
- `README.md`: instructions

Signed-off-by: Srinidhi Krishna <[email protected]>
Add `redis/` directory:

- `rootfs/redis.conf`: Redis server configuration file
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `fc.{arm64,x86_64}.json`: Firecracker configuration
- `xen.{arm64,x86_64}.cfg`: Xen configuration
- `README.md`: instructions
- `setup.sh`: set up symlinks

Update the top-level `setup.sh` to clone `lib-redis`.

Signed-off-by: Luca Mazilescu <[email protected]>
Introduce GitHub workflow to allow periodic testing. The workflow does a
periodic run of the `test.overall.sh` script (the script is on the
`test` branch).

Signed-off-by: Rares-Stefan Goidescu <[email protected]>
Add python3.10 HTTP-Server support on QEMU, Xen and Firecracker.

Add python3.10/ directory:
- http-server.py: HTTP server implementation
- Config.uk: Unikraft application configuration
- Makefile: build script
- fc.{arm64,x86_64}.json: Firecracker config
- xen.{arm64,x86_64}.cfg: Xen config
- README.md: usage instructions

Signed-off-by: Ionut Mantu <[email protected]>
Add wamr/ directory:
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: empty placeholder file required by build system
- `README.md`: instructions
- `fc-x86_64-initrd.json`: configuration for runing firecracker
- `NOTES.md`: notes on issues or caveats
- `setup.sh`: script for configuring libraries

Signed-off-by: Dragos Coscodan <[email protected]>
Add bincompat-java-hello/ directory:
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: empty placeholder file required by build system
- `README.md`: instructions
- `NOTES.md`: notes on issues or caveats
- `setup.sh`: script for configuring libraries
- `Dockerfile`: required to build the java root filesystem

Signed-off-by: Alexandru Raduta <[email protected]>
Add click/ directory:
- `Config.uk`: application configuration
- `Makefile`: for building the application
- `Makefile.uk`: empty placeholder file required by build system
- `README.md`: instructions
- `setup.sh`: script for configuring libraries
- `helloworld.click`: click application file

Signed-off-by: Stefan Marasescu <[email protected]>
@sculamacaz sculamacaz requested a review from razvand August 24, 2025 13:18
Add `bincompat-c-hello/` directory:

- `rootfs/*`: C Hello program
- `fc.x86_64.json`: Firecracker config
- `README.md`: usage instructions

Signed-off-by: Luca Mazilescu <[email protected]>
Add `scripts/` directory:

- `build/kernel.<plat>.<arch>`: scripts for building the base ELF Loader
  image
- `build/rootfs.<arch>`: scripts for building the rootfs
- `build/<plat>.<arch>`: scripts that build both the base image and the
  rootfs
- `run/<plat>.<arch>`: scripts for running Unikraft images
- `common.sh`: common configuration code for scripts
- `README.md`: accompanying document with instructions

Signed-off-by: Luca Mazilescu <[email protected]>
@sculamacaz sculamacaz force-pushed the bincompat-poc-scripts branch from 6786f65 to 9adbc27 Compare November 19, 2025 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants