From 2895dc23185f9595f524ac060977391d206e8d68 Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Mon, 10 Feb 2025 13:22:32 +0100 Subject: [PATCH 1/3] Added noble docker images --- docker/Dockerfile_base-noble | 114 ++++++++++++++++++++++++++++++++++ docker/Dockerfile_nuttx-noble | 51 +++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 docker/Dockerfile_base-noble create mode 100644 docker/Dockerfile_nuttx-noble diff --git a/docker/Dockerfile_base-noble b/docker/Dockerfile_base-noble new file mode 100644 index 0000000..a8bea24 --- /dev/null +++ b/docker/Dockerfile_base-noble @@ -0,0 +1,114 @@ +# +# PX4 base development environment +# + +FROM ubuntu:24.04 +LABEL maintainer="Alexander Lerach " + +ENV DEBIAN_FRONTEND noninteractive +ENV LANG C.UTF-8 +ENV LC_ALL C.UTF-8 + +RUN apt-get update && apt-get -y --quiet --no-install-recommends install \ + ant \ + binutils-dev \ + ca-certificates \ + ccache \ + cmake \ + cppcheck \ + curl \ + dirmngr \ + doxygen \ + g++-multilib \ + gcc-multilib \ + gdb \ + gettext \ + git \ + gnupg \ + gosu \ + lcov \ + libelf-dev \ + libexpat-dev \ + libvecmath-java \ + libfreetype6-dev \ + libgmp-dev \ + libgtest-dev \ + libisl-dev \ + libmpc-dev \ + libmpfr-dev \ + libpng-dev \ + libssl-dev \ + lsb-release \ + make \ + ninja-build \ + openssh-client \ + openjdk-11-jre \ + openjdk-11-jdk \ + python3 \ + python3-dev \ + python3-pip \ + python3-venv \ + rsync \ + screen \ + shellcheck \ + tzdata \ + texinfo \ + u-boot-tools \ + util-linux \ + unzip \ + valgrind \ + wget \ + xsltproc \ + zip \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +# Set java 11 as default +RUN update-alternatives --set java $(update-alternatives --list java | grep "java-11") + +# gtest +RUN cd /usr/src/gtest \ + && mkdir build && cd build \ + && cmake .. && make -j$(nproc) \ + && find . -name \*.a -exec cp {} /usr/lib \; \ + && cd .. && rm -rf build + +# Python 3 dependencies installed by pip +RUN python3 -m pip install --break-system-packages argparse argcomplete coverage cerberus empy==3.3.4 jinja2 kconfiglib \ + matplotlib>=3.0.* numpy nunavut>=1.1.0 packaging pkgconfig pyros-genmsg pyulog \ + pyyaml requests serial six toml psutil pyulog wheel jsonschema pynacl lxml + +# manual ccache setup +RUN ln -s /usr/bin/ccache /usr/lib/ccache/cc \ + && ln -s /usr/bin/ccache /usr/lib/ccache/c++ + +# astyle v3.1 +RUN wget -q https://downloads.sourceforge.net/project/astyle/astyle/astyle%203.1/astyle_3.1_linux.tar.gz -O /tmp/astyle.tar.gz \ + && cd /tmp && tar zxf astyle.tar.gz && cd astyle/src \ + && make -f ../build/gcc/Makefile -j$(nproc) && cp bin/astyle /usr/local/bin \ + && rm -rf /tmp/* + +# create user with id 1001 (jenkins docker workflow default) +RUN useradd --shell /bin/bash -u 1001 -c "" -m user && usermod -a -G dialout user + +# setup virtual X server +RUN mkdir /tmp/.X11-unix && \ + chmod 1777 /tmp/.X11-unix && \ + chown -R root:root /tmp/.X11-unix +ENV DISPLAY :99 + +ENV CCACHE_UMASK=000 +ENV PATH="/usr/lib/ccache:$PATH" +ENV TERM=xterm +ENV TZ=UTC + +# SITL UDP PORTS +EXPOSE 14556/udp +EXPOSE 14557/udp + +# create and start as LOCAL_USER_ID +COPY scripts/entrypoint.sh /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] + +CMD ["/bin/bash"] diff --git a/docker/Dockerfile_nuttx-noble b/docker/Dockerfile_nuttx-noble new file mode 100644 index 0000000..750cd6d --- /dev/null +++ b/docker/Dockerfile_nuttx-noble @@ -0,0 +1,51 @@ +# +# PX4 NuttX development environment in Ubuntu 24.04 Noble +# + +FROM px4io/px4-dev-base-noble:2025-02-10 +LABEL maintainer="Alexander Lerach " + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \ + autoconf \ + automake \ + bison \ + build-essential \ + bzip2 \ + file \ + flex \ + genromfs \ + gperf \ + libncurses-dev \ + libncurses6 \ + libncursesw6 \ + libtool \ + pkg-config \ + uncrustify \ + vim-common \ + && apt-get -y autoremove \ + && apt-get clean autoclean \ + && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +# GNU Arm Embedded Toolchain: 13.3.Rel1 Released: July 04, 2024 +RUN mkdir -p /opt/gcc && cd /opt/gcc \ + && wget -qO- "https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz" | tar -Jx --strip 1 \ + && rm -rf /opt/gcc/share/doc + +ENV PATH="$PATH:/opt/gcc/bin" + +# manual ccache setup for arm-none-eabi-g++/arm-none-eabi-gcc +RUN ln -s /usr/bin/ccache /usr/lib/ccache/arm-none-eabi-g++ \ + && ln -s /usr/bin/ccache /usr/lib/ccache/arm-none-eabi-gcc + +# nuttx tools +RUN git clone --depth 1 https://bitbucket.org/nuttx/tools.git /tmp/tools \ + && cd /tmp/tools/kconfig-frontends \ + && autoreconf -f -i \ + && ./configure --enable-mconf --disable-nconf --disable-gconf --disable-qconf -prefix=/usr && make -j$(nproc) && make install \ + && rm -rf /tmp/* + +# bloaty - https://github.com/google/bloaty +RUN git clone --recursive https://github.com/google/bloaty.git /tmp/bloaty \ + && cd /tmp/bloaty && cmake -GNinja . && ninja -j $(nproc) bloaty && cp bloaty /usr/local/bin/ \ + && rm -rf /tmp/* From 3b0156235132db8ecd96b0ac2f0b5bf555c1754e Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Tue, 11 Feb 2025 10:40:30 +0100 Subject: [PATCH 2/3] updated readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 33ac860..295f560 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ License: according to [LICENSE](https://github.com/PX4/Firmware/blob/master/LICE - [px4io/px4-dev-ros2-galactic](https://hub.docker.com/r/px4io/px4-dev-ros2-galactic) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-ros2-galactic.svg)](http://microbadger.com/images/px4io/px4-dev-ros2-galactic) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-ros2-galactic.svg)](https://hub.docker.com/r/px4io/px4-dev-ros2-galactic) - [px4io/px4-dev-base-jammy](https://hub.docker.com/r/px4io/px4-dev-base-jammy) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-base-jammy.svg)](http://microbadger.com/images/px4io/px4-dev-base-jammy) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-base-jammy.svg)](https://hub.docker.com/r/px4io/px4-dev-base-jammy) - [px4io/px4-dev-nuttx-jammy](https://hub.docker.com/r/px4io/px4-dev-nuttx-jammy) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-nuttx-jammy.svg)](http://microbadger.com/images/px4io/px4-dev-nuttx-jammy) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-nuttx-jammy.svg)](https://hub.docker.com/r/px4io/px4-dev-nuttx-jammy) +- [px4io/px4-dev-base-noble](https://hub.docker.com/r/px4io/px4-dev-base-noble) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-base-noble.svg)](http://microbadger.com/images/px4io/px4-dev-base-noble) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-base-noble.svg)](https://hub.docker.com/r/px4io/px4-dev-base-noble) + - [px4io/px4-dev-nuttx-noble](https://hub.docker.com/r/px4io/px4-dev-nuttx-noble) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-nuttx-noble.svg)](http://microbadger.com/images/px4io/px4-dev-nuttx-noble) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-nuttx-noble.svg)](https://hub.docker.com/r/px4io/px4-dev-nuttx-noble) - [px4io/px4-dev-armhf](https://hub.docker.com/r/px4io/px4-dev-armhf) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-armhf.svg)](http://microbadger.com/images/px4io/px4-dev-armhf) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-armhf.svg)](https://hub.docker.com/r/px4io/px4-dev-armhf) - [px4io/px4-dev-aarch64](https://hub.docker.com/r/px4io/px4-dev-aarch64) [![](https://images.microbadger.com/badges/image/px4io/px4-dev-aarch64.svg)](http://microbadger.com/images/px4io/px4-dev-aarch64) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-dev-aarch64.svg)](https://hub.docker.com/r/px4io/px4-dev-aarch64) - [px4io/px4-docs](https://hub.docker.com/r/px4io/px4-docs) [![](https://images.microbadger.com/badges/image/px4io/px4-docs.svg)](http://microbadger.com/images/px4io/px4-docs) [![Docker Pulls](https://img.shields.io/docker/pulls/px4io/px4-docs.svg)](https://hub.docker.com/r/px4io/px4-docs) From f8fc447d2c5c0f5c9af56a258ef3febbd77c5c5c Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Tue, 11 Feb 2025 10:54:15 +0100 Subject: [PATCH 3/3] Updated Makefile & Workflow --- .github/workflows/docker_builds.yml | 45 +++++++++++++++++++++++++++++ docker/Makefile | 14 ++++++--- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker_builds.yml b/.github/workflows/docker_builds.yml index 73c0e90..4dcce82 100644 --- a/.github/workflows/docker_builds.yml +++ b/.github/workflows/docker_builds.yml @@ -77,6 +77,28 @@ jobs: tag_names: true workdir: docker + px4-dev-base-noble: + name: "Ubuntu Noble Base" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build container + if: github.event_name == 'pull_request' + run: | + cd docker + make px4-dev-base-noble + - name: Build & Publish container + if: github.event_name == 'push' && (contains(github.ref, '/heads/master') || contains(github.ref, '/tags/')) + uses: julianoes/Publish-Docker-Github-Action@master + with: + name: px4io/px4-dev-base-noble + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + dockerfile: Dockerfile_base-noble + cache: false + tag_names: true + workdir: docker + px4-dev-simulation-jammy: name: "Ubuntu Jammy Simulation" runs-on: ubuntu-latest @@ -236,6 +258,29 @@ jobs: tag_names: true workdir: docker + px4-dev-nuttx-nobble: + name: "NuttX in Ubuntu Noble" + runs-on: ubuntu-latest + needs: px4-dev-base-noble + steps: + - uses: actions/checkout@v3 + - name: Build container + if: github.event_name == 'pull_request' + run: | + cd docker + make px4-dev-nuttx-noble + - name: Build & Publish container + if: github.event_name == 'push' && (contains(github.ref, '/heads/master') || contains(github.ref, '/tags/')) + uses: julianoes/Publish-Docker-Github-Action@master + with: + name: px4io/px4-dev-nuttx-noble + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + dockerfile: Dockerfile_nuttx-noble + cache: false + tag_names: true + workdir: docker + px4-dev-raspi: name: "Ubuntu Raspberry Pi" runs-on: ubuntu-latest diff --git a/docker/Makefile b/docker/Makefile index d790844..6249ead 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -1,14 +1,14 @@ .PHONY: px4-dev-armhf, px4-dev-base-archlinux, px4-dev-base-bionic, \ - px4-dev-base-focal, px4-dev-base-jammy, px4-dev-clang, px4-dev-nuttx-bionic, \ - px4-dev-nuttx-focal, px4-dev-nuttx-jammy, px4-dev-nuttx-clang, px4-dev-raspi, \ + px4-dev-base-focal, px4-dev-base-jammy, px4-dev-base-noble, px4-dev-clang, px4-dev-nuttx-bionic, \ + px4-dev-nuttx-focal, px4-dev-nuttx-jammy, px4-dev-nuttx-noble, px4-dev-nuttx-clang, px4-dev-raspi, \ px4-dev-ros-melodic, px4-dev-ros-noetic, px4-dev-ros2-dashing, \ px4-dev-ros2-eloquent, px4-dev-ros2-foxy, px4-dev-ros2-galactic, \ px4-dev-ros2-rolling, px4-dev-simulation-bionic, px4-dev-simulation-focal, \ px4-docs all: px4-dev-armhf, px4-dev-base-archlinux, px4-dev-base-bionic, \ - px4-dev-base-focal, px4-dev-base-jammy, px4-dev-clang, px4-dev-nuttx-bionic, \ - px4-dev-nuttx-focal, px4-dev-nuttx-jammy, px4-dev-nuttx-clang, px4-dev-raspi, \ + px4-dev-base-focal, px4-dev-base-jammy, px4-dev-base-noble, px4-dev-clang, px4-dev-nuttx-bionic, \ + px4-dev-nuttx-focal, px4-dev-nuttx-jammy, px4-dev-nuttx-noble, px4-dev-nuttx-clang, px4-dev-raspi, \ px4-dev-ros-melodic, px4-dev-ros-noetic, px4-dev-ros2-dashing,\ px4-dev-ros2-eloquent, px4-dev-ros2-foxy, px4-dev-ros2-galactic, \ px4-dev-ros2-rolling, px4-dev-simulation-bionic, px4-dev-simulation-focal, \ @@ -32,6 +32,9 @@ px4-dev-base-focal: px4-dev-base-jammy: docker build -t px4io/px4-dev-base-jammy . -f Dockerfile_base-jammy +px4-dev-base-noble: + docker build -t px4io/px4-dev-base-noble . -f Dockerfile_base-noble + px4-dev-clang: px4-dev-base-bionic docker build -t px4io/px4-dev-clang . -f Dockerfile_clang @@ -44,6 +47,9 @@ px4-dev-nuttx-focal: px4-dev-base-focal px4-dev-nuttx-jammy: px4-dev-base-jammy docker build -t px4io/px4-dev-nuttx-jammy . -f Dockerfile_nuttx-jammy +px4-dev-nuttx-noble: px4-dev-base-noble + docker build -t px4io/px4-dev-nuttx-noble . -f Dockerfile_nuttx-noble + px4-dev-simulation-jammy: px4-dev-base-jammy docker build -t px4io/px4-dev-simulation-jammy . -f Dockerfile_simulation-jammy