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