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"]
|
[submodule "edk2"]
|
||||||
path = edk2
|
path = edk2
|
||||||
url = https://github.com/system76/edk2.git
|
url = ../system76-edk2.git
|
||||||
branch = system76
|
branch = system76
|
||||||
[submodule "coreboot"]
|
[submodule "coreboot"]
|
||||||
path = coreboot
|
path = coreboot
|
||||||
url = https://github.com/system76/coreboot.git
|
url = ../system76-coreboot.git
|
||||||
branch = system76
|
branch = system76
|
||||||
[submodule "tools/UEFITool"]
|
[submodule "tools/UEFITool"]
|
||||||
path = tools/UEFITool
|
path = tools/UEFITool
|
||||||
@ -36,8 +36,8 @@
|
|||||||
branch = master
|
branch = master
|
||||||
[submodule "ec"]
|
[submodule "ec"]
|
||||||
path = ec
|
path = ec
|
||||||
url = https://github.com/system76/ec.git
|
url = ../system76-embedded-controller.git
|
||||||
branch = master
|
branch = main
|
||||||
[submodule "tools/apobtool"]
|
[submodule "tools/apobtool"]
|
||||||
path = tools/apobtool
|
path = tools/apobtool
|
||||||
url = https://github.com/system76/apobtool.git
|
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}"
|
mv -v "${USB}.partial" "${USB}"
|
||||||
fi
|
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}'"
|
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
|
# Define base directory for firmware-update
|
||||||
export BASEDIR="system76-firmware-update"
|
export BASEDIR="system76-firmware-update"
|
||||||
|
|
||||||
# Clean build directory
|
|
||||||
mkdir -p build
|
|
||||||
BUILD="$(realpath "build/${MODEL}")"
|
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
|
# Copy firmware
|
||||||
mkdir -p "${BUILD}/${BASEDIR}/firmware"
|
mkdir -p "${BUILD}/${BASEDIR}/firmware"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user