kopia lustrzana https://github.com/solokeys/solo1
ability to build solo versions via `make docker-build SOLO_VERSION=...`
rodzic
9e9d26e604
commit
8f9ff17bef
|
@ -91,3 +91,5 @@ targets/efm32/EFM32_EFM32JG1B200F128GM32.hwconf
|
||||||
targets/efm32/emlib/em_adc.c
|
targets/efm32/emlib/em_adc.c
|
||||||
targets/efm32/emlib/em_assert.c
|
targets/efm32/emlib/em_assert.c
|
||||||
targets/efm32/emlib/em_cmu.c
|
targets/efm32/emlib/em_cmu.c
|
||||||
|
|
||||||
|
builds/*
|
||||||
|
|
47
Dockerfile
47
Dockerfile
|
@ -1,11 +1,10 @@
|
||||||
# Step 1: build the firmware
|
|
||||||
FROM debian:stretch-slim
|
FROM debian:stretch-slim
|
||||||
MAINTAINER SoloKeys <hello@solokeys.com>
|
MAINTAINER SoloKeys <hello@solokeys.com>
|
||||||
|
|
||||||
RUN apt-get update -qq
|
RUN apt-get update -qq
|
||||||
RUN apt-get install -qq bzip2 git make wget >/dev/null
|
RUN apt-get install -qq bzip2 git make wget >/dev/null
|
||||||
|
|
||||||
# get ARM GCC
|
# 1. ARM GCC: for compilation
|
||||||
RUN wget -q -O gcc.tar.bz2 https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2?revision=d830f9dd-cd4f-406d-8672-cca9210dd220?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,8-2018-q4-major
|
RUN wget -q -O gcc.tar.bz2 https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2?revision=d830f9dd-cd4f-406d-8672-cca9210dd220?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,8-2018-q4-major
|
||||||
# from website
|
# from website
|
||||||
RUN echo "f55f90d483ddb3bcf4dae5882c2094cd gcc.tar.bz2" > gcc.md5
|
RUN echo "f55f90d483ddb3bcf4dae5882c2094cd gcc.tar.bz2" > gcc.md5
|
||||||
|
@ -15,23 +14,7 @@ RUN echo "fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52 gcc.
|
||||||
RUN sha256sum -c gcc.sha256
|
RUN sha256sum -c gcc.sha256
|
||||||
RUN tar -C /opt -xf gcc.tar.bz2
|
RUN tar -C /opt -xf gcc.tar.bz2
|
||||||
|
|
||||||
# get Solo source code
|
# 2. Python3.7: for solotool (merging etc.)
|
||||||
RUN git clone --recurse-submodules https://github.com/solokeys/solo
|
|
||||||
|
|
||||||
# build Solo
|
|
||||||
ENV PREFIX=/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/
|
|
||||||
RUN cd solo/targets/stm32l432 && \
|
|
||||||
make cbor boot-no-sig clean all-hacker
|
|
||||||
|
|
||||||
|
|
||||||
# Step 2: combine the firmware
|
|
||||||
FROM debian:stretch-slim
|
|
||||||
MAINTAINER SoloKeys <hello@solokeys.com>
|
|
||||||
|
|
||||||
RUN apt-get update -qq
|
|
||||||
RUN apt-get install -qq bzip2 git make wget >/dev/null
|
|
||||||
|
|
||||||
# get Python3.7
|
|
||||||
RUN wget -q -O miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-4.5.12-Linux-x86_64.sh
|
RUN wget -q -O miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-4.5.12-Linux-x86_64.sh
|
||||||
# from website
|
# from website
|
||||||
RUN echo "866ae9dff53ad0874e1d1a60b1ad1ef8 miniconda.sh" > miniconda.md5
|
RUN echo "866ae9dff53ad0874e1d1a60b1ad1ef8 miniconda.sh" > miniconda.md5
|
||||||
|
@ -42,28 +25,8 @@ RUN sha256sum -c miniconda.sha256
|
||||||
|
|
||||||
RUN bash ./miniconda.sh -b -p /opt/conda
|
RUN bash ./miniconda.sh -b -p /opt/conda
|
||||||
RUN ln -s /opt/conda/bin/python3 /usr/local/bin/python3
|
RUN ln -s /opt/conda/bin/python3 /usr/local/bin/python3
|
||||||
|
RUN ln -s /opt/conda/bin/python3 /usr/local/bin/python
|
||||||
|
|
||||||
# get Solo source code
|
# 3. Source code
|
||||||
RUN git clone --recurse-submodules https://github.com/solokeys/solo
|
RUN git clone --recurse-submodules https://github.com/solokeys/solo /solo
|
||||||
|
|
||||||
# actually combine the two hex files
|
|
||||||
COPY --from=0 /solo/targets/stm32l432/solo.elf .
|
|
||||||
COPY --from=0 /solo/targets/stm32l432/solo.hex .
|
|
||||||
COPY --from=0 /solo/targets/stm32l432/bootloader.elf .
|
|
||||||
COPY --from=0 /solo/targets/stm32l432/bootloader.hex .
|
|
||||||
|
|
||||||
RUN cd solo && make env3 && . env3/bin/activate && \
|
|
||||||
python3 tools/solotool.py mergehex /bootloader.hex /solo.hex /all.hex
|
|
||||||
|
|
||||||
|
|
||||||
# Step 3: copy out firmware, assumes host volume mounted at /out
|
|
||||||
FROM alpine
|
|
||||||
MAINTAINER SoloKeys <hello@solokeys.com>
|
|
||||||
|
|
||||||
COPY --from=1 /solo.elf .
|
|
||||||
COPY --from=1 /solo.hex .
|
|
||||||
COPY --from=1 /bootloader.elf .
|
|
||||||
COPY --from=1 /bootloader.hex .
|
|
||||||
COPY --from=1 /all.hex .
|
|
||||||
|
|
||||||
CMD cp -v /solo.elf /solo.hex /bootloader.elf /bootloader.hex /all.hex /out
|
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -30,7 +30,7 @@ CFLAGS += -DAES256=1 -DAPP_CONFIG=\"app.h\"
|
||||||
|
|
||||||
name = main
|
name = main
|
||||||
|
|
||||||
.PHONY: all $(LIBCBOR) black blackcheck cppcheck wink fido2-test clean full-clean travis test clean
|
.PHONY: all $(LIBCBOR) black blackcheck cppcheck wink fido2-test clean full-clean travis test clean version
|
||||||
all: main
|
all: main
|
||||||
|
|
||||||
tinycbor/Makefile crypto/tiny-AES-c/aes.c:
|
tinycbor/Makefile crypto/tiny-AES-c/aes.c:
|
||||||
|
@ -42,6 +42,9 @@ cbor: $(LIBCBOR)
|
||||||
$(LIBCBOR):
|
$(LIBCBOR):
|
||||||
cd tinycbor/ && $(MAKE) clean && $(MAKE) -j8
|
cd tinycbor/ && $(MAKE) clean && $(MAKE) -j8
|
||||||
|
|
||||||
|
version:
|
||||||
|
@git describe
|
||||||
|
|
||||||
test: venv
|
test: venv
|
||||||
$(MAKE) clean
|
$(MAKE) clean
|
||||||
$(MAKE) -C . main
|
$(MAKE) -C . main
|
||||||
|
@ -71,11 +74,11 @@ wink: venv
|
||||||
fido2-test: venv
|
fido2-test: venv
|
||||||
venv/bin/python tools/ctap_test.py
|
venv/bin/python tools/ctap_test.py
|
||||||
|
|
||||||
DOCKER_IMAGE := "solokeys/solo-firmware:latest"
|
DOCKER_IMAGE := "solokeys/solo-firmware:local"
|
||||||
|
SOLO_VERSION := "master"
|
||||||
docker-build:
|
docker-build:
|
||||||
docker build -t $(DOCKER_IMAGE) .
|
docker build -t $(DOCKER_IMAGE) .
|
||||||
# docker build --no-cache -t $(DOCKER_IMAGE) .
|
docker run --rm -v$(PWD)/builds:/builds -v$(PWD)/docker-build.sh:/build.sh $(DOCKER_IMAGE) /build.sh $(SOLO_VERSION)
|
||||||
docker run -rm -v$(PWD):/out $(DOCKER_IMAGE)
|
|
||||||
|
|
||||||
CPPCHECK_FLAGS=--quiet --error-exitcode=2
|
CPPCHECK_FLAGS=--quiet --error-exitcode=2
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash -xe
|
||||||
|
|
||||||
|
version=${1:-master}
|
||||||
|
|
||||||
|
export PREFIX=/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/
|
||||||
|
|
||||||
|
cd /solo/targets/stm32l432
|
||||||
|
git checkout ${version}
|
||||||
|
version=$(git describe)
|
||||||
|
make cbor
|
||||||
|
make all-hacker
|
||||||
|
|
||||||
|
cd /
|
||||||
|
|
||||||
|
out_dir="builds"
|
||||||
|
out_hex="solo-${version}.hex"
|
||||||
|
out_sha2="solo-${version}.sha2"
|
||||||
|
cp /solo/targets/stm32l432/solo.hex ${out_dir}/${out_hex}
|
||||||
|
cd ${out_dir}
|
||||||
|
sha256sum ${out_hex} > ${out_sha2}
|
||||||
|
|
Ładowanie…
Reference in New Issue