Skip to content

Commit

Permalink
EBcL SDK 1.3 (#20)
Browse files Browse the repository at this point in the history
This is PR contains the changes for the EBcL release 1.3.

With this update, the SDK and the image build process got a major
rework.

The image build was completely revised to solve the needs of building
complex embedded images.
All example images are updated to make use of the new image concept.
A public SDK documentation is added using Github pages and mdbook.

Also the dev container concept got a major rework.
The dev container and dev tooling is not developed as separate public
git repositories,
which makes the ebcl_template really a template.
Instead of providing a pre-built container, the container is cloned and
built locally
when the workspace is opened fo r the first time.

## ToDos:

- [ ] rebuild RDB2 images with EBcL 1.3pre2 and check that RDB2 images
are working
- [x] new app development concept
- [x] test and complete sysroot build

### Documentation

- [x] Developing apps
- [x] Embdgen overview
- [x] EBcL build tools overview
- [x] Update README

### Workspace

- [x] VS code task integration not working

## Ideas for EBcL SDK 1.4

- [ ] GH actions for build tools, vscode tools and dev container
releases
- [ ] image images/arm64/nxp/rdb2/network: add only required kernel
modules to final image
- [ ] cominit support
- [ ] Yocto-style SDK, like elbe does
- [ ] example images using EB Hypervisor
- [ ] arm64 build host support

### Build Tools

- [ ] fix initrd modules dependencies

### EBcL build tools proxy

- [ ] check apt signatures
- [ ] HTTP apt proxy
- [ ] proxy add local package
- [ ] proxy record sessions
- [ ] restore proxy from sessions

### EBcL build tools root generator

- [ ] use deboostrap instead of kiwi-ng or elbe
- [ ] us a minimal busybox environment instead of debootstrap

### EBcL template workspace

- [ ] example image using docker and read-only root filesystem
- [ ] example image using podman and read-only root filesystem
- [ ] more robust setup and update of the workspace and container

### Documentation

- [ ] Workspace overview
- [ ] Dev Container overview
- [ ] Embdgen overview
- [ ] EBcL build tools overview

---------

Signed-off-by: Thomas Irgang (thir820) <[email protected]>
Signed-off-by: Simone Weiß <[email protected]>
Co-authored-by: Tom Irgang <[email protected]>
Co-authored-by: Simone Weiß <[email protected]>
Co-authored-by: Matthias Beckert <[email protected]>
Co-authored-by: Matthias Beckert <[email protected]>
  • Loading branch information
5 people authored Sep 25, 2024
1 parent 6f874c8 commit 6a2e1a0
Show file tree
Hide file tree
Showing 630 changed files with 12,823 additions and 4,013 deletions.
46 changes: 21 additions & 25 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,45 +1,41 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "EB corbos Linux SDK 1.2",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "linux.elektrobit.com/ebcl/sdk:1.2",
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// Configure tool-specific properties.
"name": "EB corbos Linux SDK 1.3",
// DO NOT MODIFY THE TAG!!!
// The local container tag and used upstream container version is defined in .env.
"image": "linux.elektrobit.com/ebcl/sdk:local",
// This script will get the container and tag it with the local container tag.
"initializeCommand": "${PWD}/init_workspace",
"postCreateCommand": "${PWD}/init_container",
"postStartCommand": "${PWD}/enter_container",
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"editor.formatOnSave": true,
"files.insertFinalNewline": true,
"[makefile]": {
"editor.insertSpaces": false,
"editor.detectIndentation": false
}
"cmake.options.statusBarVisibility": "visible",
"cmake.configureOnOpen": false
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-vscode.makefile-tools",
"ms-vscode.cpptools-extension-pack"
"[email protected]"
]
}
},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
"remoteUser": "ebcl",
"privileged": false,
"privileged": true,
"mounts": [
{
// Local storage for kiwi build VM images
"source": "ebcl-build-boxes",
"target": "/home/ebcl/.kiwi_boxes",
"type": "volume"
},
{
// Bind-mount the /dev folder, to get access to losetup devices
"source": "/dev",
"target": "/dev",
"type": "bind"
}
],
"workspaceMount": "source=${localWorkspaceFolder},target=/build/workspace,type=bind,consistency=cached",
"workspaceFolder": "/build/workspace"
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind",
"workspaceFolder": "/workspace"
}
10 changes: 10 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export WS_VERSION="1.3"
export BUILD_CONTAINER=1
export REBUILD_CONTAINER=0
export PULL_CONTAINER=0
export CONTAINER_TAG="v1.3.6"
export CONTAINER_BRANCH="v1.3.6"
export LOG_LEVEL="INFO"
export COPY_SSH=1
export EBCL_REPO_URL="http://linux.elektrobit.com/eb-corbos-linux"
export EBCL_VERSION="1.3"
66 changes: 66 additions & 0 deletions .github/workflows/mdbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Sample workflow for building and deploying a mdBook site to GitHub Pages
#
# To get started with mdBook see: https://rust-lang.github.io/mdBook/index.html
#
name: Deploy mdBook site to Pages

on:
# Runs on pushes targeting the default branch
push:
branches:
- main
- SDK_1.3

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
MDBOOK_VERSION: 0.4.37
MDBOOK_IMAGE_SIZE_VERSION: 0.1.0
steps:
- uses: actions/checkout@v4
- name: Install mdBook
run: |
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
rustup update
cargo install --version ${MDBOOK_VERSION} mdbook
- name: Install mdbook-image-size
run: |
cargo install --version ${MDBOOK_IMAGE_SIZE_VERSION} mdbook-image-size
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with mdBook
run: mdbook build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./book

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
68 changes: 58 additions & 10 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,65 @@
sysroot*/**/*
!sysroot_x86_64/.gitkeep
!sysroot_aarch64/.gitkeep

# do not ignore .gitkeep files:
result*/**
!result/.gitkeep
!result/image
result/image/*
!result/image/.gitkeep
!result/app
result/app/*
!result/app/.gitkeep
!sysroot_aarch64/.gitkeep
!sysroot_x86_64/.gitkeep
results*/**
!results/.gitkeep
!results/images
results/image/*
!results/images/.gitkeep
!results/packages
results/packages/*
!results/packages/.gitkeep
!results/apps
results/apps/*
!results/apps/.gitkeep
!apt/.gitkeep
!bin/.gitkeep

images/berrymill*

book
.venv
!/.venv

log.html
output.xml
report.html
interactive_console_output.xml

**/__pycache__
**/__pycache__/**/*
*.pyc

# tasks are generated by tools/tasks/generate_tasks.py
.vscode/tasks.json

.vscode/settings.json

.coverage
htmlcov

initrd.img

/state

/tools

*.swp

**/temp/

# Ignore additional images and apps and created submodules
.gitmodules
/images/user
/apps/user
/images/extra
/apps/extra
/images/ebcl-*


fakedit
/work*

.mypy_cache
1 change: 1 addition & 0 deletions .venv
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

Loading

0 comments on commit 6a2e1a0

Please sign in to comment.