github.com/cvmfs/docker-graphdriver@v0.0.0-20181206110523-155ec6df0521/ci/container/Makefile (about) 1 # Builds the CernVM-FS graphdriver plugin container for Docker 2 # Requires a Debian based distribution with 3 # make, git, curl, gcc, xz-utils, libfuse 4 5 IMAGE_NAME = cvmfs-graphdriver-plugin 6 IMAGE_ARCH = amd64 7 IMAGE_VERSION = 0.15 8 IMAGE_TARBALL = $(IMAGE_NAME)-$(IMAGE_VERSION).tar.bz2 9 BB_VERSION = 1.23.2 10 CVMFS_VERSION = 2.4.3 11 CVMFS_RELEASE = 1+debian9.1 12 CVMFS_CONFIG_VERSION = 1.2 13 CVMFS_CONFIG_RELEASE = 1 14 GRAPHDRIVER_AUFS_VERSION = 0.7 15 GRAPHDRIVER_OVERLAY2_VERSION = 0.8 16 17 BB_BASE_URL = http://ecsft.cern.ch/dist/cernvm 18 CVMFS_BASE_URL = https://ecsft.cern.ch/dist/cvmfs/cvmfs-$(CVMFS_VERSION) 19 CVMFS_CONFIG_BASE_URL = https://ecsft.cern.ch/dist/cvmfs/cvmfs-config 20 GRAPHDRIVER_AUFS_BASE_URL = https://ecsft.cern.ch/dist/cvmfs/docker-graphdriver/aufs_cvmfs 21 GRAPHDRIVER_OVERLAY2_BASE_URL = https://ecsft.cern.ch/dist/cvmfs/docker-graphdriver/overlay2_cvmfs 22 23 GIT_SRC = ../src 24 BB_SRC = $(BB_BASE_URL)/busybox-$(BB_VERSION).tar.gz 25 CVMFS_SRC = $(CVMFS_BASE_URL)/cvmfs_$(CVMFS_VERSION)~$(CVMFS_RELEASE)_$(IMAGE_ARCH).deb 26 CVMFS_CONFIG_SRC = $(CVMFS_CONFIG_BASE_URL)/cvmfs-config-graphdriver_$(CVMFS_CONFIG_VERSION)-$(CVMFS_CONFIG_RELEASE)_all.deb 27 GRAPHDRIVER_AUFS_SRC = $(GRAPHDRIVER_AUFS_BASE_URL)/$(GRAPHDRIVER_AUFS_VERSION)/aufs_cvmfs 28 GRAPHDRIVER_OVERLAY2_SRC = $(GRAPHDRIVER_OVERLAY2_BASE_URL)/$(GRAPHDRIVER_OVERLAY2_VERSION)/overlay2_cvmfs 29 30 ROOTFS = $(IMAGE_NAME)-$(IMAGE_VERSION)/rootfs 31 MANIFEST = $(IMAGE_NAME)-$(IMAGE_VERSION)/config.json 32 33 all: $(IMAGE_TARBALL) 34 35 clean: 36 rm -f $(IMAGE_TARBALL) 37 rm -rf $(IMAGE_NAME)-$(IMAGE_VERSION) 38 39 $(IMAGE_TARBALL): $(ROOTFS)/CONTENTS $(MANIFEST) 40 tar cfJ $@ $(IMAGE_NAME)-$(IMAGE_VERSION) 41 rm -rf $(IMAGE_NAME)-$(IMAGE_VERSION) 42 43 $(ROOTFS)/CONTENTS: $(ROOTFS)/usr/bin/cvmfs2 \ 44 $(ROOTFS)/usr/bin/aufs_cvmfs \ 45 $(ROOTFS)/usr/bin/overlay2_cvmfs \ 46 $(ROOTFS)/usr/bin/entrypoint.sh 47 cat /dev/null > $(ROOTFS)/.cvmfs.deb 48 cat /dev/null > $(ROOTFS)/.cvmfs-config.deb 49 cat /dev/null > $(ROOTFS)/.busybox-$(BB_VERSION).tar.gz 50 rm -rf $(ROOTFS)/.busybox-$(BB_VERSION)/* 51 echo "Image version: $(IMAGE_VERSION)" >> $@ 52 echo "Git revision: $(shell cd $(GIT_SRC) && git rev-parse HEAD)" >> $@ 53 echo "Busybox version: $(BB_VERSION)" >> $@ 54 echo "CernVM-FS client: $(CVMFS_CONFIG_SRC)" >> $@ 55 echo "CernVM-FS version: $(CVMFS_SRC)" >> $@ 56 echo "AUFS graph driver: $(GRAPHDRIVER_AUFS_SRC)" >> $@ 57 echo "Overlay2 graph driver: $(GRAPHDRIVER_OVERLAY2_SRC)" >> $@ 58 59 $(ROOTFS): 60 mkdir -p $@ 61 62 $(ROOTFS)/.busybox-$(BB_VERSION).tar.gz: | $(ROOTFS) 63 curl -o $@ $(BB_SRC) 64 65 $(ROOTFS)/.busybox-$(BB_VERSION): $(ROOTFS)/.busybox-$(BB_VERSION).tar.gz 66 cd $(ROOTFS) && tar xvf .busybox-$(BB_VERSION).tar.gz 67 mv $(ROOTFS)/busybox-$(BB_VERSION) $(ROOTFS)/.busybox-$(BB_VERSION) 68 69 $(ROOTFS)/busybox: | $(ROOTFS)/.busybox-$(BB_VERSION) 70 cp $(GIT_SRC)/data/busybox-config $(ROOTFS)/.busybox-$(BB_VERSION)/.config 71 $(MAKE) -j $(shell nproc) -C $(ROOTFS)/.busybox-$(BB_VERSION) 72 mv $(ROOTFS)/.busybox-$(BB_VERSION)/busybox $@ 73 74 $(ROOTFS)/.done_minbase: $(ROOTFS)/busybox 75 mkdir -p $(ROOTFS)/bin 76 mkdir -p $(ROOTFS)/cvmfs_ext_config 77 mkdir -p $(ROOTFS)/minio_ext_config 78 mkdir -p $(ROOTFS)/dev 79 mkdir -p $(ROOTFS)/lib/modules 80 mkdir -p $(ROOTFS)/mnt 81 mkdir -p $(ROOTFS)/proc 82 mkdir -p $(ROOTFS)/tmp 83 mkdir -p $(ROOTFS)/usr/bin 84 mkdir -p $(ROOTFS)/var/lib/cvmfs 85 mkdir -p $(ROOTFS)/var/log 86 mkdir -p $(ROOTFS)/var/run/cvmfs 87 ln -fs lib $(ROOTFS)/lib64 88 for CMD in $(shell $(ROOTFS)/busybox --list | sort -u); do \ 89 ln -fvs /busybox $(ROOTFS)/bin/$$CMD; \ 90 done 91 touch $(ROOTFS)/.done_minbase 92 93 $(MANIFEST): $(ROOTFS)/.done_minbase 94 cp $(GIT_SRC)/data/plugin-config.json $@ 95 96 $(ROOTFS)/usr/bin/entrypoint.sh: $(ROOTFS)/.done_minbase 97 cp $(GIT_SRC)/plugins/entrypoint.sh $@ 98 99 $(ROOTFS)/.cvmfs-config.deb: | $(ROOTFS) 100 curl -o $@ $(CVMFS_CONFIG_SRC) 101 102 $(ROOTFS)/.cvmfs.deb: | $(ROOTFS) 103 curl -o $@ $(CVMFS_SRC) 104 105 $(ROOTFS)/usr/bin/cvmfs2: $(ROOTFS)/.done_minbase | $(ROOTFS)/.cvmfs-config.deb $(ROOTFS)/.cvmfs.deb 106 cd $(ROOTFS) && ar p .cvmfs-config.deb data.tar.gz | tar zx 107 cd $(ROOTFS) && ar p .cvmfs.deb data.tar.xz | tar Jx 108 rm -rf $(ROOTFS)/etc/bash_completion.d 109 rm -rf $(ROOTFS)/usr/share 110 rm -f $(ROOTFS)/usr/bin/cvmfs_talk \ 111 $(ROOTFS)/usr/bin/cvmfs_config \ 112 $(ROOTFS)/sbin/mount.cvmfs \ 113 $(ROOTFS)/etc/auto.cvmfs \ 114 $(ROOTFS)/usr/libexec/auto.cvmfs 115 $(GIT_SRC)/ci/container/libs.sh $(ROOTFS) 116 ldconfig -r $(ROOTFS) 117 118 $(ROOTFS)/usr/bin/aufs_cvmfs: $(ROOTFS)/.done_minbase 119 curl -o $@ $(GRAPHDRIVER_AUFS_SRC) 120 chmod +x $@ 121 122 $(ROOTFS)/usr/bin/overlay2_cvmfs: $(ROOTFS)/.done_minbase 123 curl -o $@ $(GRAPHDRIVER_OVERLAY2_SRC) 124 chmod +x $@ 125