aboutsummaryrefslogtreecommitdiffstats
path: root/osmo-gerrit-libosmo
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-09-06 17:15:41 +0200
committerHarald Welte <laforge@gnumonks.org>2017-09-06 17:17:40 +0200
commit95ff0a41616e6f2fc99ebf4fad5b102e7d958f20 (patch)
tree4a6fde2328b261883df5d58f5af4402554bf8754 /osmo-gerrit-libosmo
parentbaa18dd4ed598c3d945c75b5a9b02b8540810fff (diff)
osmo-gerrit-libosmo: Example Dockerfile for gerrit container
Diffstat (limited to 'osmo-gerrit-libosmo')
-rw-r--r--osmo-gerrit-libosmo/Dockerfile141
-rw-r--r--osmo-gerrit-libosmo/Makefile3
2 files changed, 144 insertions, 0 deletions
diff --git a/osmo-gerrit-libosmo/Dockerfile b/osmo-gerrit-libosmo/Dockerfile
new file mode 100644
index 0000000..ac89bbe
--- /dev/null
+++ b/osmo-gerrit-libosmo/Dockerfile
@@ -0,0 +1,141 @@
+# Proposed new Dockerfile for gerrit.osmocom.org build testing
+# The idea is to have one image with all library dependencies of all
+# projects, and then simply 'git pull' + build the given project
+# that we want to compile-test at 'docker run' time (in tmpfs)
+
+FROM laforge/debian-jessie-buildslave
+
+MAINTAINER Harald Welte <laforge@gnumonks.org>
+
+USER build
+WORKDIR /build
+
+# initial clone of all library repositories, i.e. repositories that we
+# want to pull, compile and install during 'docker build' time of this
+# image. We crate a base checkout here that creates an intermediate
+# cache layer. Later we use the "ADD http://git..." trick to ensure
+# we re-fetch/re-build once master changes
+RUN git clone git://git.osmocom.org/libasn1c.git && \
+ git clone git://git.osmocom.org/libsmpp34.git && \
+ git clone git://git.osmocom.org/libosmocore.git && \
+ git clone git://git.osmocom.org/libosmo-abis.git && \
+ git clone git://git.osmocom.org/libosmo-netif.git && \
+ git clone git://git.osmocom.org/libosmo-sccp.git && \
+ git clone git://git.osmocom.org/osmo-iuh.git && \
+ git clone git://git.osmocom.org/osmo-mgw.git
+
+# initial checkout of all applications-under-test to avoid full
+# re-clone at every build. We intentionally don't have "ADD"
+# statements to cgit URLs, so the cache will not detect and rebuild
+# if the upstream repo changes. This is no problem, as at 'run' time
+# we'll be doing a git fetch anyway.
+RUN git clone --reference osmo-mgw git://git.osmocom.org/openbsc.git && \
+ git clone --reference openbsc git://git.osmocom.org/osmo-bsc.git && \
+ git clone --reference openbsc git://git.osmocom.org/osmo-msc.git && \
+ git clone --reference openbsc git://git.osmocom.org/osmo-sgsn.git && \
+ git clone git://git.osmocom.org/openggsn.git && \
+ git clone --reference openggsn git://git.osmocom.org/osmo-ggsn.git && \
+ git clone git://git.osmocom.org/osmo-bts.git && \
+ git clone git://git.osmocom.org/osmo-hlr.git && \
+ git clone git://git.osmocom.org/osmo-pcu.git && \
+ git clone git://git.osmocom.org/osmo-sip-connector.git && \
+ git clone git://git.osmocom.org/osmo-trx.git
+
+# build libasn1c first, no libosmo* dependency and infrequent changes
+ADD http://git.osmocom.org/libasn1c/patch /tmp/commit-libasn1c
+RUN cd libasn1c && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+# build libsmpp34 first, no libosmo* dependency and infrequent changes
+ADD http://git.osmocom.org/libsmpp34/patch /tmp/commit-libsmpp34
+RUN cd libsmpp34 && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j1 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+# build libosmocore before any of its downatream dependences
+ADD http://git.osmocom.org/libosmocore/patch /tmp/commit-libosmocore
+RUN cd libosmocore && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+# now build all of the downstream dependencies of libosmocore
+
+ADD http://git.osmocom.org/libosmo-abis/patch /tmp/commit-libosmo-abis
+RUN cd libosmo-abis && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+ADD http://git.osmocom.org/libosmo-netif/patch /tmp/commit-libosmo-netif
+RUN cd libosmo-netif && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+ADD http://git.osmocom.org/libosmo-sccp/patch /tmp/commit-libosmo-sccp
+RUN cd libosmo-sccp && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+ADD http://git.osmocom.org/osmo-mgw/patch /tmp/commit-osmo-mgw
+RUN cd osmo-mgw && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+ADD http://git.osmocom.org/osmo-iuh/patch /tmp/commit-osmo-iuh
+RUN cd osmo-iuh && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+ADD http://git.osmocom.org/osmo-ggsn/patch /tmp/commit-osmo-ggsn
+RUN cd osmo-ggsn && \
+ git fetch && git checkout -f -B master origin/master && \
+ autoreconf -fi && \
+ ./configure && \
+ make -j8 && \
+ sudo make install && \
+ make clean && \
+ sudo ldconfig
+
+
+# example command which builds a single osmo-* application at 'docker run' time in tmpfs
+CMD /bin/sh -c 'cd /tmpfs && git clone --reference /build/openbsc git://git.osmocom.org/openbsc.git && cd openbsc && git checkout -f -B master origin/master && cd openbsc && autoreconf -fi && ./configure --enable-nat --enable-osmo-bsc --enable-smpp --enable-vty-tests --enable-external-tests && make -j8 check'
diff --git a/osmo-gerrit-libosmo/Makefile b/osmo-gerrit-libosmo/Makefile
new file mode 100644
index 0000000..b08f5c0
--- /dev/null
+++ b/osmo-gerrit-libosmo/Makefile
@@ -0,0 +1,3 @@
+RUN_ARGS?=--tmpfs /tmpfs:exec
+
+include ../make/Makefile