Personal Submodule Forks and Docker Build
- Modify ec, coreboot, and edk submodules to point to personal forks using relative URL path - Add image and script to build firmware in docker container - Move firmware update build steps from flash.sh to build.sh so it can be built inside docker container
This commit is contained in:
parent
7265ca3579
commit
860dcb1039
8
.gitmodules
vendored
8
.gitmodules
vendored
@ -1,10 +1,10 @@
|
||||
[submodule "edk2"]
|
||||
path = edk2
|
||||
url = https://github.com/system76/edk2.git
|
||||
url = ../system76-edk2.git
|
||||
branch = system76
|
||||
[submodule "coreboot"]
|
||||
path = coreboot
|
||||
url = https://github.com/system76/coreboot.git
|
||||
url = ../system76-coreboot.git
|
||||
branch = system76
|
||||
[submodule "tools/UEFITool"]
|
||||
path = tools/UEFITool
|
||||
@ -36,8 +36,8 @@
|
||||
branch = master
|
||||
[submodule "ec"]
|
||||
path = ec
|
||||
url = https://github.com/system76/ec.git
|
||||
branch = master
|
||||
url = ../system76-embedded-controller.git
|
||||
branch = main
|
||||
[submodule "tools/apobtool"]
|
||||
path = tools/apobtool
|
||||
url = https://github.com/system76/apobtool.git
|
||||
|
67
docker/Dockerfile
Normal file
67
docker/Dockerfile
Normal file
@ -0,0 +1,67 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
# Install most dependencies
|
||||
USER root
|
||||
ARG TZ="America/New_York"
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
adduser \
|
||||
sudo \
|
||||
tzdata \
|
||||
build-essential \
|
||||
ccache \
|
||||
cmake \
|
||||
curl \
|
||||
dosfstools \
|
||||
flashrom \
|
||||
git-lfs \
|
||||
libncurses-dev \
|
||||
libssl-dev \
|
||||
libudev-dev \
|
||||
mtools \
|
||||
parted \
|
||||
pkgconf \
|
||||
python-is-python3 \
|
||||
python3-distutils \
|
||||
uuid-dev \
|
||||
zlib1g-dev \
|
||||
bison \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
flex \
|
||||
g++ \
|
||||
gcc \
|
||||
gnat \
|
||||
libnss3-dev \
|
||||
patch \
|
||||
tar \
|
||||
xz-utils \
|
||||
avr-libc \
|
||||
avrdude \
|
||||
clang-format \
|
||||
gcc-avr \
|
||||
libc-dev \
|
||||
libhidapi-dev \
|
||||
libudev-dev \
|
||||
sdcc \
|
||||
shellcheck \
|
||||
xxd
|
||||
|
||||
# Create non-root user with disabled password and sudo privileges
|
||||
ARG USER=docker
|
||||
RUN adduser --disabled-password --gecos '' ${USER}
|
||||
RUN adduser ${USER} sudo
|
||||
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# Enter build directory in user's home
|
||||
USER ${USER}
|
||||
ARG BUILD_DIR=/home/${USER}/firmware-open
|
||||
WORKDIR ${BUILD_DIR}
|
||||
|
||||
# Set git configuration (required by some scripts)
|
||||
ARG GIT_NAME="Docker User"
|
||||
ARG GIT_EMAIL="docker@gmail.com"
|
||||
RUN git config --global user.name "${GIT_NAME}"
|
||||
RUN git config --global user.email "${GIT_EMAIL}"
|
2
ec
2
ec
@ -1 +1 @@
|
||||
Subproject commit 3d8204c3f40b4de1e3b94f2c1aaca5f29a80122e
|
||||
Subproject commit e41716575ccb537871afec52f4d59a750db39d4a
|
2
edk2
2
edk2
@ -1 +1 @@
|
||||
Subproject commit 88f5720e163089a8ed8831080d4ab9eeebf42ea2
|
||||
Subproject commit 9ca522ba15f34311ed9606534cf2397ec8081211
|
@ -120,4 +120,21 @@ then
|
||||
mv -v "${USB}.partial" "${USB}"
|
||||
fi
|
||||
|
||||
# Define base directory for firmware-update
|
||||
export BASEDIR="system76-firmware-update"
|
||||
|
||||
# Clean build directory
|
||||
mkdir -p build
|
||||
BUILD="$(realpath "build/${MODEL}")"
|
||||
rm -rf "${BUILD:?}/${BASEDIR}"
|
||||
mkdir -p "${BUILD}/${BASEDIR}"
|
||||
|
||||
# Rebuild and copy firmware-update
|
||||
pushd apps/firmware-update >/dev/null
|
||||
rm -rf "build/x86_64-unknown-uefi"
|
||||
make "build/x86_64-unknown-uefi/boot.efi"
|
||||
cp -v "build/x86_64-unknown-uefi/boot.efi" "${BUILD}/${BASEDIR}"
|
||||
cp -rv "res" "${BUILD}/${BASEDIR}"
|
||||
popd >/dev/null
|
||||
|
||||
echo "Built '${VERSION}' for '${MODEL}'"
|
||||
|
20
scripts/docker-build-env.sh
Executable file
20
scripts/docker-build-env.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DOCKER_USER=${USER}
|
||||
BUILD_DIR=/home/${DOCKER_USER}/firmware-open
|
||||
GIT_NAME="Sravan Balaji"
|
||||
GIT_EMAIL="balajsra@umich.edu"
|
||||
|
||||
docker buildx build \
|
||||
-f ./docker/Dockerfile \
|
||||
--tag system76-firmware-open-build-env:latest \
|
||||
--build-arg="USER=${DOCKER_USER}" \
|
||||
--build-arg="BUILD_DIR=${BUILD_DIR}" \
|
||||
--build-arg="GIT_NAME=${GIT_NAME}" \
|
||||
--build-arg="GIT_EMAIL=${GIT_EMAIL}" \
|
||||
.
|
||||
|
||||
docker run -it \
|
||||
--volume .:${BUILD_DIR} \
|
||||
system76-firmware-open-build-env:latest \
|
||||
/bin/bash
|
@ -24,20 +24,7 @@ fi
|
||||
|
||||
# Define base directory for firmware-update
|
||||
export BASEDIR="system76-firmware-update"
|
||||
|
||||
# Clean build directory
|
||||
mkdir -p build
|
||||
BUILD="$(realpath "build/${MODEL}")"
|
||||
rm -rf "${BUILD:?}/${BASEDIR}"
|
||||
mkdir -p "${BUILD}/${BASEDIR}"
|
||||
|
||||
# Rebuild and copy firmware-update
|
||||
pushd apps/firmware-update >/dev/null
|
||||
rm -rf "build/x86_64-unknown-uefi"
|
||||
make "build/x86_64-unknown-uefi/boot.efi"
|
||||
cp -v "build/x86_64-unknown-uefi/boot.efi" "${BUILD}/${BASEDIR}"
|
||||
cp -rv "res" "${BUILD}/${BASEDIR}"
|
||||
popd >/dev/null
|
||||
|
||||
# Copy firmware
|
||||
mkdir -p "${BUILD}/${BASEDIR}/firmware"
|
||||
|
Loading…
x
Reference in New Issue
Block a user