aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2019-02-10 23:58:32 +0000
committerRob Austein <sra@hactrn.net>2019-02-10 23:58:32 +0000
commit71861b6ea54738950ac5c8e83e78bbd1215a11ed (patch)
treeb18d6c8087b1e3cdd936a00565b3ddce124435aa
parentb0daf8cf8c9cd39dd5e76aacfa5a5c7c4d500b8b (diff)
Separate into multiple stages, at least during development.
Docker is pretty clever about not rebuilding stuff, but simply having the 6GB XiLinx tarball in the build context is painful, so let's avoid that as much as we can.
-rw-r--r--.dockerignore3
-rw-r--r--Dockerfile11
-rw-r--r--Makefile4
-rw-r--r--stage1/Dockerfile17
-rw-r--r--stage2/Dockerfile18
-rw-r--r--stage3/Dockerfile.later (renamed from Dockerfile.later)0
6 files changed, 38 insertions, 15 deletions
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 1c5d569..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1,3 +0,0 @@
-Dockerfile.later
-Makefile
-README.md
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 169fb28..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-FROM debian:jessie
-
-# OK, let's start with the horrible XiLinx stuff because that's least
-# likely to change except when we're updating the base Docker image.
-
-# In theory, using ADD in this form will cause docker to unpack the
-# tarball directly into the filesystem, thus saving us an otherwise
-# useless 6GB copy operation, which seems worthwhile.
-
-RUN mkdir /xilinx-unpack
-ADD Xilinx_ISE_DS_Lin_14.7_1015_1.tar /xilinx-unpack/
diff --git a/Makefile b/Makefile
index 47f508b..69fcb57 100644
--- a/Makefile
+++ b/Makefile
@@ -1,2 +1,4 @@
all:
- docker build -t alpha-releng .
+ cd stage1; docker build -t xilinx:loadonly .
+ cd stage2; docker build -t xilinx:intalled .
+ cd stage3; docker build -t cryptech-alpha .
diff --git a/stage1/Dockerfile b/stage1/Dockerfile
new file mode 100644
index 0000000..2881772
--- /dev/null
+++ b/stage1/Dockerfile
@@ -0,0 +1,17 @@
+FROM debian:jessie
+
+# Our goal here is just to load the XiLinx tarball into a Debian Jessie image.
+# Overriding reason for making this a separate image: we don't want to have
+# to send 6GB of build context every time we touch a later stage.
+
+ADD Xilinx_ISE_DS_Lin_14.7_1015_1.tar /xilinx-unpack/
+
+# Given our general paranoia level we probably should be building our
+# own debian:jessie image from debootstrap, but leave that for another
+# day. Process is reasonably well documented: instead of starting
+# from a base image, start by running debootstrap in --foreign mode,
+# import that into an initial Docker image, then run `debootstrap
+# --second-stage` in the next Dockerfile. Something like:
+#
+# sudo debootstrap --foreign jessie jessie_chroot
+# sudo tar -C jessie_chroot -c . | docker import - my-debian:jessie
diff --git a/stage2/Dockerfile b/stage2/Dockerfile
new file mode 100644
index 0000000..da030c8
--- /dev/null
+++ b/stage2/Dockerfile
@@ -0,0 +1,18 @@
+FROM xilinx:loadonly
+
+# Whack /bin/sh (known issue with XiLinx tools not working with /bin/dash)
+
+RUN ln -sf /bin/bash /bin/sh
+
+# Here's where it gets really fun: let's see if we can drive the
+# frelling XiLinx installation under Xvfb. Need some tools first,
+# then some manual debugging to get the details right. Don't expect
+# to need all of the following once we've debugged this.
+
+RUN apt-get update && apt-get install -y \
+ python-xvfbwrapper \
+ ratpoison \
+ x11-apps \
+ x11-utils \
+ x11-xserver-utils \
+ xautomation
diff --git a/Dockerfile.later b/stage3/Dockerfile.later
index 7f9b257..7f9b257 100644
--- a/Dockerfile.later
+++ b/stage3/Dockerfile.later