|
| 1 | +export |
| 2 | + |
| 3 | +BUILDDIR = $(shell pwd) |
| 4 | +BUILD_STAGE_DIR = $(BUILDDIR)/riak |
| 5 | + |
| 6 | +# Where we install things (based on vars.config) |
| 7 | +# /usr/local based dirs |
| 8 | +PMAN_DIR = $(BUILD_STAGE_DIR)/usr/local/man |
| 9 | +PBIN_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak/bin |
| 10 | +PETC_DIR = $(BUILD_STAGE_DIR)/usr/local/etc/riak |
| 11 | +PLIB_DIR = $(BUILD_STAGE_DIR)/usr/local/lib/riak |
| 12 | +PUSRBIN_DIR = $(BUILD_STAGE_DIR)/usr/local/bin |
| 13 | +# /var based dirs |
| 14 | +PDATA_DIR = $(BUILD_STAGE_DIR)/usr/local/var/lib/riak |
| 15 | +PLOG_DIR = $(BUILD_STAGE_DIR)/var/log/riak |
| 16 | + |
| 17 | +PKGNAME = riak-$(PKG_VERSION)-$(OSNAME)-$(ARCH).tbz |
| 18 | + |
| 19 | + |
| 20 | +# Recursive assignment of ERTS version |
| 21 | +# We will know this after building the rel |
| 22 | +ERTS_PATH = $(shell ls $(BUILDDIR)/rel/riak | egrep -o "erts-.*") |
| 23 | + |
| 24 | +build: packing_list_files |
| 25 | + @echo "Building package $(PKGNAME)" |
| 26 | + |
| 27 | + cd $(BUILD_STAGE_DIR) && \ |
| 28 | + mkdir ../../../out/packages && \ |
| 29 | + pkg create -m . -r . -o ../../../out/packages |
| 30 | + |
| 31 | + cd ../../out/packages && \ |
| 32 | + for f in *.pkg; do \ |
| 33 | + shasum -a 256 $${f} > $${f}.sha \ |
| 34 | + ; done |
| 35 | + |
| 36 | +packing_list_files: $(BUILD_STAGE_DIR) |
| 37 | + @mv ${BUILDDIR}/rel/pkg/fbsdng/+MANIFEST ${BUILD_STAGE_DIR} |
| 38 | + sed -e "s/%ERTS_PATH%/${ERTS_PATH}/" < \ |
| 39 | + ${BUILDDIR}/rel/pkg/fbsdng/rc.d > \ |
| 40 | + ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak |
| 41 | + chmod -w ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak |
| 42 | + chmod +x ${BUILD_STAGE_DIR}/usr/local/etc/rc.d/riak |
| 43 | + @cd $(BUILD_STAGE_DIR) && \ |
| 44 | + echo "version: \"${PKG_VERSION}\"" >> +MANIFEST && \ |
| 45 | + echo "files: {" >> +MANIFEST |
| 46 | + |
| 47 | + @echo "Copying Man pages to staging directory" |
| 48 | + @cd $(BUILDDIR) && \ |
| 49 | + if [ -d doc/man/man1 ]; then \ |
| 50 | + mkdir -p $(PMAN_DIR) && \ |
| 51 | + cp -R doc/man/man1 $(PMAN_DIR); fi |
| 52 | + |
| 53 | + @echo "Packaging /usr/local files" |
| 54 | + @cd $(BUILD_STAGE_DIR) && \ |
| 55 | + find usr -type f | while read file ; do \ |
| 56 | + mode=$$(stat -f%p "$$file" | cut -c 3-) && \ |
| 57 | + sum=$$(sha256 -q $$file) && \ |
| 58 | + echo " \"/$$file\": { sum: \"$$sum\", perm: \"$$mode\", uname: \"root\", gname: \"wheel\" }," >> +MANIFEST; done && \ |
| 59 | + sed -i .bak '$$s/,$$//' +MANIFEST && \ |
| 60 | + rm -- +MANIFEST.bak && \ |
| 61 | + echo " }" >> +MANIFEST |
| 62 | + |
| 63 | + @cd $(BUILD_STAGE_DIR) && \ |
| 64 | + echo "directories: {" >> +MANIFEST && \ |
| 65 | + echo " /usr/local/lib/riak: \"y\"," >> +MANIFEST && \ |
| 66 | + echo " /usr/local/var/lib/riak: {uname: \"riak\", gname: \"riak\", perm: \"0700\" }," >> +MANIFEST && \ |
| 67 | + echo " /usr/local/etc/riak: \"y\"" >> +MANIFEST && \ |
| 68 | + echo " }" >> +MANIFEST |
| 69 | + |
| 70 | +# Copy the app rel directory to the staging directory to build our |
| 71 | +# package structure and move the directories into the right place |
| 72 | +# for the package, see the vars.config file for destination |
| 73 | +# directories |
| 74 | +$(BUILD_STAGE_DIR): buildrel |
| 75 | + @echo "Copying rel directory to staging directory" |
| 76 | + mkdir -p $@ |
| 77 | + mkdir -p $(PBIN_DIR) $(PUSRBIN_DIR) |
| 78 | + for f in riak-admin riak-debug riak-repl riak-chkconfig; do \ |
| 79 | + cp -R rel/riak/bin/$$f $(PUSRBIN_DIR); \ |
| 80 | + done |
| 81 | + cp -R rel/riak/usr/bin/riak $(PUSRBIN_DIR) |
| 82 | + cp -R rel/riak/bin $(PLIB_DIR); |
| 83 | + mkdir -p $(PETC_DIR) |
| 84 | + cp -R rel/riak/etc/* $(PETC_DIR) |
| 85 | + mkdir -p $(PLIB_DIR) |
| 86 | + cp -R rel/riak/lib $(PLIB_DIR) |
| 87 | + cp -R rel/riak/share $(PLIB_DIR) |
| 88 | + cp -R rel/riak/erts-* $(PLIB_DIR) |
| 89 | + (cd $(PLIB_DIR) && ln -s erts-* erts) |
| 90 | + cp -R rel/riak/releases $(PLIB_DIR) |
| 91 | + mkdir -p $(PDATA_DIR) |
| 92 | + cp -R rel/riak/data/* $(PDATA_DIR) |
| 93 | + mkdir -p ${BUILD_STAGE_DIR}/usr/local/etc/rc.d |
| 94 | + |
| 95 | +# Build the release we need to package |
| 96 | +# * Ensure all binaries are executable |
| 97 | +# * copy the vars.config over for build config |
| 98 | +buildrel: |
| 99 | + tar -xf $(BASE_DIR)/rel/pkg/out/$(PKG_ID).tar.gz -C $(BASE_DIR)/rel/pkg/out/riak-$(PKG_ID) |
| 100 | + $(MAKE) -C $(BASE_DIR)/rel/pkg/out/riak-$(PKG_ID) rel-fbsdng |
| 101 | + chmod 0755 rel/riak/bin/* rel/riak/erts-*/bin/* |
| 102 | + |
| 103 | +$(BUILDDIR): |
| 104 | + mkdir -p $@ |
| 105 | + |
| 106 | +$(PKGERDIR)/pkgclean: |
| 107 | + rm -rf $(BUILD_STAGE_DIR) $(BUILDDIR) |
0 commit comments