From 82056c0ead20bed0c9e9aad8eb012edda854bde8 Mon Sep 17 00:00:00 2001 From: assada Date: Sat, 8 Feb 2025 20:36:35 +0100 Subject: [PATCH] docker builder --- Dockerfile | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 8 ++++++- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..968b6fc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,63 @@ +FROM ubuntu:22.04 + +ARG BINUTILS_VERSION=2.44 +ARG GCC_VERSION=14.2.0 + +RUN apt-get update && apt-get install -y \ + build-essential \ + bison \ + flex \ + grub-pc-bin \ + grub-efi-amd64-bin \ + mtools qemu-system-x86 \ + grub2 \ + libgmp3-dev \ + libmpc-dev \ + libmpfr-dev \ + libisl-dev \ + libelf-dev \ + wget + +# Set environment variables +ENV PREFIX=/usr/local/opt/cross +ENV TARGET=i686-elf +ENV PATH="$PREFIX/bin:$PATH" + +# Create build directory +WORKDIR /build + +# Download and extract sources +RUN wget https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz && \ + wget https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz && \ + tar -xzf binutils-${BINUTILS_VERSION}.tar.gz && \ + tar -xzf gcc-${GCC_VERSION}.tar.gz + +RUN mkdir -p $PREFIX + +# Build Binutils +RUN mkdir binutils-build && \ + cd binutils-build && \ + ../binutils-${BINUTILS_VERSION}/configure --target=${TARGET} --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror && \ + make && \ + make install + +# Build GCC +RUN mkdir gcc-build && \ + cd gcc-build && \ + ../gcc-${GCC_VERSION}/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers --disable-hosted-libstdcxx && \ + make all-gcc && \ + make all-target-libgcc && \ + make install-gcc && \ + make install-target-libgcc + +# Clean up +RUN rm -rf /build + +# Check if the installation is successful +RUN $PREFIX/bin/$TARGET-gcc --version + +RUN apt-get install -y xorriso + +VOLUME /var/lib/deados + +WORKDIR /var/lib/deados diff --git a/Makefile b/Makefile index 99eb539..041bfee 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ OBJECTS = $(SOURCES_ASM:.s=.o) $(SOURCES_C:.c=.o) ISO_DIR = isodir GRUB_DIR = $(ISO_DIR)/boot/grub -.PHONY: all clean iso +.PHONY: all clean iso docker-build docker-make all: $(ISO) @@ -43,3 +43,9 @@ check-multiboot: $(KERNEL) clean: rm -f $(OBJECTS) $(KERNEL) $(ISO) rm -rf $(ISO_DIR) + +docker-build: + docker build --progress=plain -t deados_builder . + +docker-make: + docker run -it -v $(shell pwd):/var/lib/deados deados_builder bash -c "cd /var/lib/deados && make"