packages.mk 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/make -f
  2. # -*- makefile -*-
  3. PROFILES := emqx emqx-edge
  4. PKG_PROFILES := emqx-pkg emqx-edge-pkg
  5. ifeq ($(shell uname -s),Darwin)
  6. SYSTEM := macos
  7. else ifeq ($(shell uname -s),Linux)
  8. ifneq ($(shell cat /etc/*-release |grep -o -i centos),)
  9. ID := centos
  10. VERSION_ID := $(shell rpm --eval '%{centos_ver}')
  11. else
  12. ID := $(shell sed -n '/^ID=/p' /etc/os-release | sed -r 's/ID=(.*)/\1/g' | sed 's/"//g' )
  13. VERSION_ID := $(shell sed -n '/^VERSION_ID=/p' /etc/os-release | sed -r 's/VERSION_ID=(.*)/\1/g' | sed 's/"//g')
  14. endif
  15. SYSTEM := $(shell echo $(ID)$(VERSION_ID) | sed -r "s/([a-zA-Z]*)-.*/\1/g")
  16. ##
  17. ## Support RPM and Debian based linux systems
  18. ##
  19. ifeq ($(ID),ubuntu)
  20. PKGERDIR := deb
  21. else ifeq ($(ID),debian)
  22. PKGERDIR := deb
  23. else ifeq ($(ID),raspbian)
  24. PKGERDIR := deb
  25. else
  26. PKGERDIR := rpm
  27. endif
  28. endif
  29. .PHONY: $(PROFILES:%=relup-%)
  30. $(PROFILES:%=relup-%): $(REBAR)
  31. ifneq ($(OS),Windows_NT)
  32. @ln -snf _build/$(@:relup-%=%)/lib
  33. @if [ ! -z $$(ls | grep -E "$(@:relup-%=%)-$(SYSTEM)-(.*)-$$(uname -m).zip" | head -1 ) ]; then \
  34. mkdir -p tmp/relup_packages/$(@:relup-%=%); \
  35. cp $(@:relup-%=%)-$(SYSTEM)-*-$$(uname -m).zip tmp/relup_packages/$(@:relup-%=%); \
  36. fi
  37. $(REBAR) as $(@:relup-%=%) relup
  38. endif
  39. .PHONY: $(PROFILES:%=%-tar) $(PKG_PROFILES:%=%-tar)
  40. $(PROFILES:%=%-tar) $(PKG_PROFILES:%=%-tar): $(REBAR)
  41. ifneq ($(OS),Windows_NT)
  42. @ln -snf _build/$(subst -tar,,$(@))/lib
  43. endif
  44. ifneq ($(shell echo $(@) |grep edge),)
  45. export EMQX_DESC="EMQ X Edge"
  46. else
  47. export EMQX_DESC="EMQ X Broker"
  48. endif
  49. $(REBAR) as $(subst -tar,,$(@)) tar
  50. .PHONY: $(PROFILES:%=%-zip)
  51. $(PROFILES:%=%-zip): $(REBAR)
  52. ifneq ($(shell echo $(PKG_VSN) | grep -oE "^[0-9]+\.[0-9]+\.[1-9]+?"),)
  53. make relup-$(subst -zip,,$(@))
  54. endif
  55. make $(subst -zip,,$(@))-tar
  56. @tard="/tmp/emqx_untar_$(PKG_VSN)" \
  57. && rm -rf "$${tard}" && mkdir -p "$${tard}/emqx" \
  58. && prof="$(subst -zip,,$(@))" \
  59. && relpath="$$(pwd)/_build/$${prof}/rel/emqx" \
  60. && pkgpath="$$(pwd)/_packages/$${prof}" \
  61. && mkdir -p $${pkgpath} \
  62. && tarball="$${relpath}/emqx-$(PKG_VSN).tar.gz" \
  63. && zipball="$${pkgpath}/$${prof}-$(SYSTEM)-$(PKG_VSN)-$$(uname -m).zip" \
  64. && tar zxf "$${tarball}" -C "$${tard}/emqx" \
  65. && cd "$${tard}" && zip -q -r "$${zipball}" ./emqx && cd -
  66. .PHONY: $(PKG_PROFILES)
  67. $(PKG_PROFILES:%=%): $(REBAR)
  68. ifneq ($(PKGERDIR),)
  69. make $(subst -pkg,,$(@))-zip
  70. make $(@)-tar
  71. make -C deploy/packages/$(PKGERDIR) clean
  72. EMQX_REL=$$(pwd) EMQX_BUILD=$(@) PKG_VSN=$(PKG_VSN) SYSTEM=$(SYSTEM) make -C deploy/packages/$(PKGERDIR)
  73. else
  74. make $(subst -pkg,,$(@))-zip
  75. endif