From e1c1d38266b974c8a58f123539fb4e700cdc64de Mon Sep 17 00:00:00 2001 From: dragonflylee Date: Fri, 14 Nov 2025 01:42:14 +0000 Subject: [PATCH] Initial commit --- .gitignore | 3 +++ Dockerfile | 30 +++++++++++++++++++++++++++ Makefile | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 3 +++ 4 files changed, 95 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f1b1b6b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/build +/src +*.tar.* \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..78c2c9b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# docker run --rm --privileged tonistiigi/binfmt --install arm64 +# docker build --network host -t build:switchroot-bionic . +# docker run --rm --name switchroot --network host -v $PWD:/opt -w /opt -it build:switchroot-bionic bash -l + +FROM arm64v8/ubuntu:18.04 +RUN apt-get update && apt-get install -y gnupg wget \ + && wget -qO- https://newrepo.switchroot.org/pubkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/switchroot.gpg \ + && echo > /etc/apt/sources.list.d/99-switchroot-newrepo.list "deb https://newrepo.switchroot.org/ switchroot unstable" \ + && wget -qO- https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/kitware.gpg \ + && echo > /etc/apt/sources.list.d/kitware.list "deb https://apt.kitware.com/ubuntu/ bionic main" \ + && wget -qO- https://repo.download.nvidia.com/jetson/jetson-ota-public.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/jetson.gpg \ + && echo >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list "deb https://repo.download.nvidia.com/jetson/common r32.7 main" \ + && echo >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list "deb https://repo.download.nvidia.com/jetson/t210 r32.7 main" \ + && mkdir -p /opt/nvidia/l4t-packages && touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall /etc/nv_boot_control.conf \ + && apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends nvidia-l4t-jetson-multimedia-api \ + g++-8 nasm cmake pkgconf make nano sudo git python3.8 python3-setuptools ninja-build xz-utils \ + && wget -qO- https://github.com/mesonbuild/meson/archive/1.8.5.tar.gz | tar zxf - -C /tmp && cd /tmp/meson-1.8.5 && python3.8 setup.py install \ + && cp -r /usr/lib/python3/dist-packages/pkg_resources /usr/local/lib/python3.8/dist-packages/ && apt-get remove -y gnupg python3-setuptools \ + && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* /usr/share/man/* /usr/src/tensorrt/* /tmp/meson-1.8.5 \ + && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/cc cc /usr/bin/gcc-8 \ + && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 60 --slave /usr/bin/cpp cpp /usr/bin/g++-8 \ + && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 60 + +# RUN apt-get update && apt-get install -y --no-install-recommends xorg-dev libdbus-1-dev libssl-dev libv4l-dev libpulse-dev libuchardet-dev \ +# && rm -rf /var/lib/apt/lists/* /usr/share/man/* + +RUN adduser --gecos '' --disabled-password ubuntu \ + && echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/ubuntu + +USER ubuntu \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2e381dd --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +#!/usr/bin/make -f + +PREFIX ?= /usr/local +TMPDIR ?= /tmp + +export PKG_CONFIG_PATH=$(PREFIX)/lib/pkgconfig +export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu/tegra + +all: + + +dav1d: + wget -qO- https://downloads.videolan.org/pub/videolan/dav1d/1.5.2/dav1d-1.5.2.tar.xz | tar Jxf - -C $(TMPDIR) + meson setup build/dav1d $(TMPDIR)/dav1d-1.5.2 --prefix=$(PREFIX) \ + --buildtype=release --default-library=static -Denable_tools=false \ + -Denable_examples=false -Denable_tests=false -Denable_docs=false + meson compile -C build/dav1d + meson install -C build/dav1d + +harfbuzz: + wget -qO- https://github.com/harfbuzz/harfbuzz/releases/download/12.1.0/harfbuzz-12.1.0.tar.xz | tar Jxf - -C $(TMPDIR) + meson setup build/harfbuzz $(TMPDIR)/harfbuzz-12.1.0 --prefix=$(PREFIX) --libdir=lib \ + --buildtype=release --default-library=static -Dtests=disabled -Ddocs=disabled -Dicu=disabled \ + -Dcairo=disabled -Dgobject=disabled -Dbenchmark=disabled -Dutilities=disabled + meson compile -C build/harfbuzz + meson install -C build/harfbuzz + +fribidi: + wget -qO- https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz | tar Jxf - -C $(TMPDIR) + meson setup build/fribidi $(TMPDIR)/fribidi-1.0.16 --prefix=$(PREFIX) --libdir=lib \ + --buildtype=release --default-library=static -Dbin=false -Ddocs=false -Dtests=false + meson compile -C build/fribidi + meson install -C build/fribidi + +libass: harfbuzz fribidi + wget -qO- https://github.com/libass/libass/releases/download/0.17.4/libass-0.17.4.tar.xz | tar Jxf - -C $(TMPDIR) + meson setup build/libass $(TMPDIR)/libass-0.17.4 --prefix=$(PREFIX) --libdir=lib \ + --buildtype=release --default-library=static + meson compile -C build/libass + meson install -C build/libass + +ffmpeg: + wget -qO- https://github.com/theofficialgman/FFmpeg/archive/6.1.1-nvv4l2.tar.gz | tar zxf - -C $(TMPDIR) + mkdir -p build/ffmpeg && cd build/ffmpeg && $(TMPDIR)/FFmpeg-6.1.1-nvv4l2/configure --prefix=$(PREFIX) \ + --extra-cflags='-march=armv8-a+simd+crypto+crc -mtune=cortex-a57 -I/usr/src/jetson_multimedia_api/include' \ + --extra-ldflags='-L/usr/lib/aarch64-linux-gnu/tegra' --extra-libs='-lpthread -lm -lv4l2' \ + --disable-shared --enable-static --ld=g++ --enable-neon --disable-debug --disable-doc --disable-avdevice \ + --enable-nonfree --enable-openssl --enable-libv4l2 --enable-nvv4l2 --enable-libass --enable-libdav1d \ + --disable-muxers --disable-encoders --disable-programs --enable-zlib + make -C build/ffmpeg -j$(shell nproc) + make -C build/ffmpeg install + +mpv: + wget -qO- https://github.com/mpv-player/mpv/archive/v0.36.0.tar.gz | tar zxf - -C $(TMPDIR) + meson setup build/mpv $(TMPDIR)/mpv-0.36.0 --prefix=$(PREFIX) --libdir=lib \ + --buildtype=release --default-library=shared -Dlibmpv=true -Dcplayer=false -Dtests=false \ + -Dlibarchive=disabled -Dlua=disabled -Dvulkan=disabled -Dwayland=disabled + meson compile -C build/mpv + meson install -C build/mpv \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c3703e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# switchroot + +switchroot ubuntu \ No newline at end of file