diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..196de4f --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,31 @@ +name: ROMEO Builder +on: + workflow_call + +jobs: + Build_Code: + runs-on: romeo_runner + steps: + - name: Check out repository code + uses: actions/checkout@v4 + with: + token: ${{ secrets.ROMEO_NUMALFIX_CI_TOKEN }} + submodules: 'recursive' + - name: Configure z7 + run: | + mkdir build_z7 + cd build_z7 + cmake -DCMAKE_TOOLCHAIN_FILE=../bsp_z7/cmake/arm-none-eabi.toolchain .. + - name: Build z7 + run: | + cd build_z7 + make -j8 + - name: Configure linux + run: | + mkdir build_linux + cd build_linux + cmake .. + - name: Build linux + run: | + cd build_linux + make -j8 diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..5a111a0 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,8 @@ +name: ROMEO CI Job +on: push + + +jobs: + Build_Code: + uses: ./.gitea/workflows/build.yaml + secrets: inherit diff --git a/.gitea/workflows/pull.yaml b/.gitea/workflows/pull.yaml new file mode 100644 index 0000000..a323b06 --- /dev/null +++ b/.gitea/workflows/pull.yaml @@ -0,0 +1,11 @@ +name: ROMEO Pull +on: + pull_request: + +jobs: + Build_Code: + runs-on: romeo_runner + steps: + - name: Build linux + run: | + echo ${{ env.GITHUB_SHA }} diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..3e6953a --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,45 @@ +name: ROMEO Release Job +on: push + + +jobs: + Build_Code: + runs-on: romeo_runner + steps: + - name: Check out repository code + uses: actions/checkout@v4 + with: + token: ${{ secrets.ROMEO_NUMALFIX_CI_TOKEN }} + submodules: 'recursive' + - name: Configure z7 + run: | + mkdir build_z7 + cd build_z7 + cmake -DCMAKE_TOOLCHAIN_FILE=../bsp_z7/cmake/arm-none-eabi.toolchain .. + - name: Build z7 + run: | + cd build_z7 + make -j8 + - name: Configure linux + run: | + mkdir build_linux + cd build_linux + cmake .. + - name: Build linux + run: | + cd build_linux + make -j8 + - name: Create artefacts + run: | + cp build_z7/romeo-obsw romeo-obsw_v1234 + date > description + echo 1234 >> description + echo ${{ env.GITHUB_SHA }} >> description + - name: Create Release + uses: https://gitea.com/actions/gitea-release-action@v1 + with: + body_path: description + tag_name: v1.2.5 + target_commitish: ${{ env.GITHUB_SHA }} + files: |- + romeo-obsw_v1234 diff --git a/.gitmodules b/.gitmodules index 5815ed4..7cb3ea4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,7 +3,7 @@ url = https://github.com/FreeRTOS/FreeRTOS-Kernel [submodule "contrib/lwip"] path = contrib/lwip - url = ../lwip + url = ../../romeo/lwip [submodule "fsbl-compiled"] path = fsbl-compiled - url = ../fsbl-compiled + url = ../../romeo/fsbl-compiled diff --git a/canary b/canary new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/canary @@ -0,0 +1 @@ +1 diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..17a6e65 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,27 @@ +FROM debian:12.7-slim + +# Install required packages +RUN apt-get update && apt-get upgrade --yes + +RUN DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \ + git \ + ssh \ + make \ + cmake \ + gcc \ + libc6-dev \ + curl \ + ca-certificates \ + gcc-arm-none-eabi \ + libnewlib-arm-none-eabi \ + # remove for image size + && rm -rf /var/lib/apt/lists/* + +# Install Rustup and select the nightly toolchain +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly && \ + . "$HOME/.cargo/env" && \ + rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + + +# Add the Rust toolchain binaries to PATH +ENV PATH="/root/.cargo/bin:${PATH}" diff --git a/docker/Dockerfile_Runner b/docker/Dockerfile_Runner new file mode 100644 index 0000000..59696b0 --- /dev/null +++ b/docker/Dockerfile_Runner @@ -0,0 +1,100 @@ +from romeo_builder + +RUN groupadd --gid 1000 node \ + && useradd --uid 1000 --gid node --shell /bin/bash --create-home node + +ENV NODE_VERSION 20.18.0 + +RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \ + && case "${dpkgArch##*-}" in \ + amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; \ + ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; \ + s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; \ + arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; \ + armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; \ + i386) ARCH='x86' OPENSSL_ARCH='linux-elf';; \ + *) echo "unsupported architecture"; exit 1 ;; \ + esac \ + && set -ex \ + # libatomic1 for arm + && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* \ + # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150 + && export GNUPGHOME="$(mktemp -d)" \ + # gpg keys listed at https://github.com/nodejs/node#release-keys + && for key in \ + 4ED778F539E3634C779C87C6D7062848A1AB005C \ + 141F07595B7B3FFE74309A937405533BE57C7D57 \ + 74F12602B6F1C4E913FAA37AD3A89613643B6201 \ + DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \ + CC68F5A3106FF448322E48ED27F5E38D5B0A215F \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \ + C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \ + 108F52B48DB57BB0CC439B2997B01419BD92F80A \ + A363A499291CBBC940DD62E41F10027AF002F8B0 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && gpgconf --kill all \ + && rm -rf "$GNUPGHOME" \ + && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ + # Remove unused OpenSSL headers to save ~34MB. See this NodeJS issue: https://github.com/nodejs/node/issues/46451 + && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; \ +# && apt-mark auto '.*' > /dev/null \ +# && find /usr/local -type f -executable -exec ldd '{}' ';' \ +# | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ +# | sort -u \ +# | xargs -r dpkg-query --search \ +# | cut -d: -f1 \ +# | sort -u \ +# | xargs -r apt-mark manual \ +# && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ + # smoke tests + && node --version \ + && npm --version + +ENV YARN_VERSION 1.22.22 + +RUN set -ex \ + && savedAptMark="$(apt-mark showmanual)" \ + && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* \ + # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150 + && export GNUPGHOME="$(mktemp -d)" \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ + && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && gpgconf --kill all \ + && rm -rf "$GNUPGHOME" \ + && mkdir -p /opt \ + && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ +# && apt-mark auto '.*' > /dev/null \ +# && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \ +# && find /usr/local -type f -executable -exec ldd '{}' ';' \ +# | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ +# | sort -u \ +# | xargs -r dpkg-query --search \ +# | cut -d: -f1 \ +# | sort -u \ +# | xargs -r apt-mark manual \ +# && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + # smoke test + && yarn --version \ + && rm -rf /tmp/* diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..949d1b8 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,4 @@ +We provide two Dockerfiles: + +- `Dockerfile` provides the environment to build the obsw. +- `Dockerfile_Runner` is used to run our CI Jobs. It mainly adds node.js:20 to run gitea/github actions. \ No newline at end of file diff --git a/docker/compile_fsbl/.gitignore b/docker/compile_fsbl/.gitignore deleted file mode 100644 index 43c5ba6..0000000 --- a/docker/compile_fsbl/.gitignore +++ /dev/null @@ -1 +0,0 @@ -embeddedsw \ No newline at end of file diff --git a/docker/compile_fsbl/Dockerfile b/docker/compile_fsbl/Dockerfile deleted file mode 100644 index b1e1582..0000000 --- a/docker/compile_fsbl/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM debian:12.5 - -ENV DEBIAN_FRONTEND=noninteractive - -# Install required packages -RUN apt-get update && apt-get install -y \ - make \ - cmake \ - gcc-arm-none-eabi \ - && rm -rf /var/lib/apt/lists/* - # Remove the package lists to reduce the image size - - -WORKDIR /fsbl/ - diff --git a/docker/compile_mission/Dockerfile b/docker/compile_mission/Dockerfile deleted file mode 100644 index 837a46d..0000000 --- a/docker/compile_mission/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# Use Debian 12.5 as the base image -FROM debian:12.5 - -# Set environment variables to avoid any interactive dialogue -ENV DEBIAN_FRONTEND=noninteractive - -# Install dependencies required for Rust and rustup -RUN apt-get update && apt-get install -y curl gcc cmake && \ - # Clean up the apt cache to reduce image size - apt-get clean && rm -rf /var/lib/apt/lists/* - -# Install Rustup and select the nightly toolchain -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly && \ - . $HOME/.cargo/env - -# Add the Rust toolchain binaries to PATH -ENV PATH="/root/.cargo/bin:${PATH}" - -# Install the nightly Rust toolchain, the rust-src component, and set the override -RUN rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu - - -# Your project's specific setup steps here -# For example, setting the working directory and copying your project files into the container -WORKDIR /mission_rust/ - diff --git a/docker/compile_obsw/Dockerfile b/docker/compile_obsw/Dockerfile deleted file mode 100644 index 0da1195..0000000 --- a/docker/compile_obsw/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM debian:12.5 - -ENV DEBIAN_FRONTEND=noninteractive - -# Install required packages -RUN apt-get update && apt-get install -y \ - make \ - cmake \ - gcc \ - curl \ - gcc-arm-none-eabi \ - doxygen \ - graphviz \ - && rm -rf /var/lib/apt/lists/* - # Remove the package lists to reduce the image size - -# Install Rustup and select the nightly toolchain -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly && \ - . $HOME/.cargo/env - -# Add the Rust toolchain binaries to PATH -ENV PATH="/root/.cargo/bin:${PATH}" - -# Install the nightly Rust toolchain, the rust-src component, and set the override -RUN rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu - -WORKDIR /obsw/ - -# ENV DOT_PATH=/usr/local/bin # Works without this in debian @paul \ No newline at end of file