You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Generally private build machines are not be trusted, releases must come from a CI.
In our case, since GNU has no such a CI infrastructure to be usable, we do it via github actions.
github uses ubuntu-latest as default, which is currenty jammy (22.04). Such an amateur OS is not the best,
rhel or suse would be much better, but that's what everyone else uses. OpenSUSE's OBS would be interesting to switch to, to create binary packages for all.
So we can simulate that not just via act, but also via some local Dockerfile.
Esp. python is extremely unstable, and jammy is only at 3.10, not 3.12. Also 3.12 does not work with latest swig.
build-aux/Dockerfile.jammy:
# -*- Dockerfile -*-
# As on github as ubuntu-latest
# build-aux/docker-test.sh
FROM ubuntu:22.04 as ubuntu-jammy
RUN apt-get update && \
apt-get install -y --no-install-recommends autoconf libtool swig texinfo \
ca-certificates build-essential automake git gcc \
libxml2-dev python3-dev python3-libxml2 libpcre2-dev libpcre2-32-0 curl && \
update-ca-certificates
RUN apt-get install -y texlive help2man libconvert-binary-c-perl shellcheck jq \
parallel rpmlint shfmt doxygen jing valgrind cppcheck gperf
#RUN apt-get install -y nodejs && npm install -g @mapbox/geojsonhint
WORKDIR /work
COPY .git .git
RUN chown -R 1000 .
USER 1000
RUN git reset --hard && git submodule update --init --recursive
#RUN git clone $BRANCH --recurse-submodules https://github.com/LibreDWG/libredwg && \
# cd libredwg && \
# sh autogen.sh && \
# ./configure --enable-release && \
# make -j `nproc` V=1 && \
# make distcheck
#
CMD [ "sh" ]
build-aux/docker-test.sh:
#!/bin/sh
docker build -t libredwg -f build-aux/Dockerfile.jammy .# run extra to keep the term lines for longer scrollback buffer
docker run -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM -it libredwg \
sh -c "sh autogen.sh && ./configure && make && make distcheck"|| \
docker run -e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM -it libredwg bash --login -i
We use a script to copy just the .git, which is much faster than all the file (sans not checked in files).
And we need to use an extra docker run, since docker still has wrong terminal LINES settings.
So you can scroll back back more than 24 lines in your term.
Missing are all checks, like shfmt, rpmlint, cppcheck, check-valgrind, and esp. nodejs to run geojsonhint and jing for svg validation.
So the next goal would be to move the whole make release process to such a docker build recipe, and be binary compatible ensuring reproducible builds. Same sha256sum for all dist tarballs. On github, locally and elsewhere.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Generally private build machines are not be trusted, releases must come from a CI.
In our case, since GNU has no such a CI infrastructure to be usable, we do it via github actions.
github uses ubuntu-latest as default, which is currenty jammy (22.04). Such an amateur OS is not the best,
rhel or suse would be much better, but that's what everyone else uses. OpenSUSE's OBS would be interesting to switch to, to create binary packages for all.
So we can simulate that not just via act, but also via some local Dockerfile.
Esp. python is extremely unstable, and jammy is only at 3.10, not 3.12. Also 3.12 does not work with latest swig.
build-aux/Dockerfile.jammy:
build-aux/docker-test.sh:
We use a script to copy just the .git, which is much faster than all the file (sans not checked in files).
And we need to use an extra docker run, since docker still has wrong terminal LINES settings.
So you can scroll back back more than 24 lines in your term.
Missing are all checks, like shfmt, rpmlint, cppcheck, check-valgrind, and esp. nodejs to run geojsonhint and jing for svg validation.
So the next goal would be to move the whole make release process to such a docker build recipe, and be binary compatible ensuring reproducible builds. Same sha256sum for all dist tarballs. On github, locally and elsewhere.
Beta Was this translation helpful? Give feedback.
All reactions