Last active
June 14, 2020 01:25
-
-
Save tdamsma/b49359448924d7aa816d50be2170a610 to your computer and use it in GitHub Desktop.
Dockerfile for building pfalcon's branch of micropython
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:bionic | |
ARG DEBIAN_FRONTEND=noninteractive | |
RUN apt-get update -qq \ | |
&& apt-get install -qqy \ | |
autoconf \ | |
automake \ | |
bash \ | |
bison \ | |
build-essential \ | |
bzip2 \ | |
flex \ | |
g++ \ | |
gawk \ | |
gcc \ | |
git \ | |
gperf \ | |
help2man \ | |
libexpat-dev \ | |
libffi-dev \ | |
libtool \ | |
libtool-bin \ | |
make \ | |
ncurses-dev \ | |
pkg-config \ | |
python \ | |
python-dev \ | |
python-serial \ | |
python3 \ | |
python3-pip \ | |
sed \ | |
texinfo \ | |
unrar-free \ | |
unzip \ | |
wget \ | |
&& apt-get clean \ | |
&& rm -rf /var/lib/apt/lists/* | |
RUN pip3 install pyparsing | |
RUN useradd --no-create-home micropython | |
RUN mkdir /esp | |
RUN chown -R micropython:micropython esp | |
USER micropython | |
WORKDIR /esp | |
# Download crosstool-NG and build it: | |
RUN git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git | |
RUN cd crosstool-NG && ./bootstrap && ./configure --enable-local && make install | |
# Build the toolchain: | |
RUN cd crosstool-NG && ./ct-ng xtensa-esp32-elf | |
RUN cd crosstool-NG && ./ct-ng build | |
RUN cd crosstool-NG && chmod -R u+w builds/xtensa-esp32-elf | |
ARG BRANCH=master | |
# Find correct version of esp-idf, depends on selected branch | |
ADD --chown=micropython:micropython https://raw.githubusercontent.com/pfalcon/micropython/$BRANCH/ports/esp32/Makefile /tmp/ESP32-Makefile | |
RUN git clone https://github.com/espressif/esp-idf.git | |
RUN cd esp-idf && cat /tmp/ESP32-Makefile | grep "^ESPIDF_SUPHASH_V4" | awk '{print $NF}' | xargs git checkout | |
RUN cd esp-idf && git submodule update --init --recursive | |
ENV PATH="${PATH}:/esp/crosstool-NG/builds/xtensa-esp32-elf/bin" | |
ENV ESPIDF="/esp/esp-idf" | |
# Cache buster for git clone #https://stackoverflow.com/questions/36996046/how-to-prevent-dockerfile-caching-git-clone | |
ADD https://api.github.com/repos/pfalcon/micropython/git/refs/heads/$BRANCH version.json | |
RUN git clone --recursive https://github.com/pfalcon/micropython.git \ | |
&& cd micropython && git checkout $BRANCH && git submodule update --init | |
RUN make --directory /esp/micropython -C mpy-cross | |
RUN make --directory /esp/micropython/ports/unix | |
# add modules to be frozen in the built firmware, customize as required | |
RUN cd /esp/micropython/ports/unix && ./pycopy -m upip install -p ../esp32/modules \ | |
micropython-uasyncio \ | |
micropython-uaiohttpclient \ | |
micropython-logging | |
# add drivers to be frozen in the built firmware, customize as required | |
RUN ln /esp/micropython/drivers/display/ssd1306.py /esp/micropython/ports/esp8266/modules/ssd1306.py | |
RUN ln /esp/micropython/drivers/sdcard/sdcard.py /esp/micropython/ports/esp8266/modules/sdcard.py | |
# or download from github | |
RUN wget -O /esp/micropython/ports/esp8266/modules/bmp280.py https://raw.githubusercontent.com/dafvid/micropython-bmp280/master/bmp280.py | |
# install required pyparsing version | |
USER root | |
RUN pip3 install "pyparsing==2.3.1" | |
# Finally build the firmware | |
RUN make --directory /esp/micropython/ports/esp32 |
Good to know, I'll update it if needed
Indeed this fixes it, I have updated the gist and build instructions, they work for me now
Just worked for me, too. Thanks!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Well, not sure it worked yet... Got through an hour of builds, and it looks like there may have been a change in the pycopy repo that builds the executable as
pycopy
rather thanmicropython
:From the end of my run:
So... I'll let you know if I can convince this to work. It may just be a matter of changing the executable in command 26