|
1 | 1 | SHELL := /bin/bash |
| 2 | +.ONESHELL: |
2 | 3 |
|
3 | | -BUILD_DIR ?= build |
| 4 | +MAKEFILE_PATH := $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) |
| 5 | +BUILD_DIR ?= ${MAKEFILE_PATH}/build |
4 | 6 | BUILD_TYPE ?= Release |
5 | 7 | CMAKE_GENERATOR ?= |
6 | 8 | INSTALL_PREFIX ?= |
7 | | -CPACK_GENERATORS ?= productbuild DragNDrop |
8 | 9 | INSTALL_TARGET ?= / |
9 | | -MAKEFILE_PATH := $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) |
10 | 10 |
|
11 | 11 | CMAKE_GENERATOR_FLAG := |
12 | 12 | ifneq ($(strip $(CMAKE_GENERATOR)),) |
@@ -35,99 +35,123 @@ endif |
35 | 35 | fi |
36 | 36 |
|
37 | 37 | ifeq ($(OS_TYPE),macos) |
| 38 | +CPACK_GENERATORS ?= productbuild DragNDrop |
| 39 | + |
38 | 40 | .prepare-for-test: .prepare-docker-macos |
39 | 41 | else ifeq ($(OS_TYPE),windows) |
| 42 | +CPACK_GENERATORS ?= WIX |
| 43 | + |
40 | 44 | .prepare-for-test: |
41 | 45 | else |
| 46 | +CPACK_GENERATORS ?= DEB RPM |
| 47 | + |
42 | 48 | .prepare-for-test: |
43 | 49 | endif |
44 | 50 |
|
45 | | -.PHONY: package |
46 | | -package: |
| 51 | +define INSTALL_PACKAGE_SCRIPT |
| 52 | + set -euo pipefail |
| 53 | + if [ "$${#packages[@]}" -eq 0 ]; then |
| 54 | + echo "No ${package_name} package found" |
| 55 | + exit 1 |
| 56 | + fi |
| 57 | + if [ "$${#packages[@]}" -eq 0 ]; then |
| 58 | + echo "Found more than two files for ${package_name}: $${packages[@]}" |
| 59 | + exit 1 |
| 60 | + fi |
| 61 | + package=$${packages[0]} |
| 62 | + if [[ "$$package" == *"$.deb" ]]; then |
| 63 | + sudo dpkg -i "$$package"; |
| 64 | + elif [[ "$$package" == *"$.pkg" ]]; then |
| 65 | + sudo installer -pkg "$$pkg" -target $(INSTALL_TARGET) |
| 66 | + elif [[ "$$package" == *"$.rpm" ]]; then |
| 67 | + if command -v dnf >/dev/null 2>&1; then |
| 68 | + sudo dnf -y install "$$package" |
| 69 | + elif command -v yum >/dev/null 2>&1; then |
| 70 | + sudo yum -y install "$$package" |
| 71 | + elif command -v zypper >/dev/null 2>&1; then |
| 72 | + sudo zypper --non-interactive install "$$package" |
| 73 | + else |
| 74 | + sudo rpm -Uvh "$$package" |
| 75 | + fi |
| 76 | + else |
| 77 | + echo "$$package has unknown package type" |
| 78 | + fi |
| 79 | +endef |
| 80 | + |
| 81 | +build-package: |
47 | 82 | cmake -S . -B $(BUILD_DIR) $(CMAKE_GENERATOR_FLAG) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) $(CMAKE_INSTALL_PREFIX_FLAG) |
48 | 83 | cmake --build $(BUILD_DIR) --config $(BUILD_TYPE) |
49 | 84 | for generator in $(CPACK_GENERATORS); do \ |
50 | | - (cd $(BUILD_DIR) && cpack -G $$generator -C $(BUILD_TYPE)); \ |
| 85 | + (cd $(BUILD_DIR) && cpack -G $$generator -C $(BUILD_TYPE));\ |
51 | 86 | done |
52 | 87 |
|
53 | | -.PHONY: install-pkg |
54 | | -install-pkg: |
55 | | - set -euo pipefail; \ |
56 | | - shopt -s nullglob; \ |
57 | | - packages=($(BUILD_DIR)/scylla-cpp-driver-smoke-app-*-macos*.pkg);\ |
58 | | - if [ "$${#packages[@]}" -eq 0 ]; then \ |
59 | | - echo "No smoke-test productbuild packages produced"; \ |
60 | | - exit 1; \ |
61 | | - fi; \ |
62 | | - for pkg in "$${packages[@]}"; do \ |
63 | | - sudo installer -pkg "$$pkg" -target $(INSTALL_TARGET); \ |
64 | | - done |
| 88 | +install-app-pkg: |
| 89 | + @shopt -s nullglob |
| 90 | + packages=($(BUILD_DIR)/scylla-cpp-driver-smoke-app-*.pkg) |
| 91 | + package_nane="some-test-app PKG" |
| 92 | + ${INSTALL_PACKAGE_SCRIPT} |
| 93 | + |
| 94 | +install-app-deb: |
| 95 | + @shopt -s nullglob |
| 96 | + packages=($(BUILD_DIR)/scylla-cpp-driver-smoke-app*.deb) |
| 97 | + package_nane="some-test-app DEB" |
| 98 | + ${INSTALL_PACKAGE_SCRIPT} |
| 99 | + |
| 100 | +install-app-rpm: |
| 101 | + @shopt -s nullglob |
| 102 | + packages=($(BUILD_DIR)/scylla-cpp-driver-smoke-app*.rpm) |
| 103 | + package_nane="some-test-app RPM" |
| 104 | + ${INSTALL_PACKAGE_SCRIPT} |
65 | 105 |
|
66 | 106 | install-driver-dev-deb: |
67 | | - @shopt -s nullglob;\ |
68 | | - DRIVER_PACKAGES=(${MAKEFILE_PATH}/../../build/*-dev*.deb);\ |
69 | | - if [ "$${#DRIVER_PACKAGES[@]}" -eq 0 ]; then \ |
70 | | - echo "No driver dev DEB packages found";\ |
71 | | - exit 1;\ |
72 | | - elif [ "$${#DRIVER_PACKAGES[@]}" -ne 1 ]; then \ |
73 | | - echo "Move than one dev DEB packages were found: ${DRIVER_PACKAGES[@]}";\ |
74 | | - exit 1;\ |
75 | | - fi;\ |
76 | | - echo "Installing DEB package $${DRIVER_PACKAGES[0]}";\ |
77 | | - sudo dpkg -i "$${DRIVER_PACKAGES[0]}" |
| 107 | + @shopt -s nullglob |
| 108 | + packages=(${MAKEFILE_PATH}/../../build/*-dev*.deb) |
| 109 | + package_nane="scylla-rs-driver dev DEB" |
| 110 | + ${INSTALL_PACKAGE_SCRIPT} |
78 | 111 |
|
79 | 112 | install-driver-deb: |
80 | | - @shopt -s extglob;\ |
81 | | - @DRIVER_PACKAGES=!(${MAKEFILE_PATH}/../../build/*-dev*.deb);\ |
82 | | - if [ "$${#DRIVER_PACKAGES[@]}" -eq 0 ]; then \ |
83 | | - echo "No driver dev DEB packages found";\ |
84 | | - exit 1;\ |
85 | | - elif [ "$${#DRIVER_PACKAGES[@]}" -ne 1 ]; then \ |
86 | | - echo "Move than one dev DEB packages were found: ${DRIVER_PACKAGES[@]}";\ |
87 | | - exit 1;\ |
88 | | - fi;\ |
89 | | - echo "Installing DEB package $${DRIVER_PACKAGES[0]}";\ |
90 | | - sudo dpkg -i "$${DRIVER_PACKAGES[0]}" |
91 | | - |
92 | | -.PHONY: install-deb |
93 | | -install-deb: |
94 | | - set -euo pipefail; \ |
95 | | - shopt -s nullglob; \ |
96 | | - packages=($(BUILD_DIR)/*.deb); \ |
97 | | - if [ "$${#packages[@]}" -eq 0 ]; then \ |
98 | | - echo "No smoke-test DEB packages produced"; \ |
99 | | - exit 1; \ |
100 | | - fi; \ |
101 | | - sudo dpkg -i "$${packages[@]}"; \ |
102 | | - sudo apt-get install -f -y |
103 | | - |
104 | | -.install-package-macos-pkg: |
105 | | - packages=(build/*.pkg) |
106 | | - if [ "${#packages[@]}" -eq 0 ]; then |
107 | | - echo "No driver pkg packages produced" |
108 | | - exit 1 |
109 | | - fi |
110 | | - for pkg in "${packages[@]}"; do |
111 | | - sudo installer -pkg "$pkg" -target / |
| 113 | + @shopt -s nullglob; |
| 114 | + packages=(); |
| 115 | + for pkg in ${MAKEFILE_PATH}/../../build/*.deb; do |
| 116 | + if [[ "$$pkg" == *-dev*.deb ]]; then |
| 117 | + continue |
| 118 | + fi |
| 119 | + packages+=("$$pkg") |
112 | 120 | done |
| 121 | + package_nane="scylla-rs-driver DEB" |
| 122 | + ${INSTALL_PACKAGE_SCRIPT} |
113 | 123 |
|
114 | | -.install-package-linux-deb: |
115 | | - packages=(build/*.pkg) |
116 | | - if [ "${#packages[@]}" -eq 0 ]; then |
117 | | - echo "No driver pkg packages produced" |
118 | | - exit 1 |
119 | | - fi |
120 | | - for pkg in "${packages[@]}"; do |
121 | | - sudo installer -pkg "$pkg" -target / |
122 | | - done |
| 124 | +install-driver-dev-rpm: |
| 125 | + @shopt -s nullglob |
| 126 | + packages=(${MAKEFILE_PATH}/../../build/*-cpp_driver-dev.rpm) |
| 127 | + package_nane="scylla-rs-driver dev RPM" |
| 128 | + ${INSTALL_PACKAGE_SCRIPT} |
123 | 129 |
|
124 | | -ifeq ($(OS_TYPE),macos) |
125 | | -.install-package: .install-package-macos-pkg |
126 | | -else ifeq ($(OS_TYPE),windows) |
127 | | -.install-package: |
128 | | -else |
129 | | -.install-package: |
130 | | -endif |
| 130 | +install-driver-rpm: |
| 131 | + @shopt -s nullglob |
| 132 | + packages=(${MAKEFILE_PATH}/../../build/*-cpp_driver.rpm) |
| 133 | + package_nane="scylla-rs-driver RPM" |
| 134 | + ${INSTALL_PACKAGE_SCRIPT} |
| 135 | + |
| 136 | +install-driver-dev-pkg: |
| 137 | + @shopt -s nullglob |
| 138 | + packages=(${MAKEFILE_PATH}/../../build/*-scylla_cpp_driver-dev.pkg) |
| 139 | + package_nane="scylla-rs-driver dev PKG" |
| 140 | + ${INSTALL_PACKAGE_SCRIPT} |
| 141 | + |
| 142 | +install-driver-pkg: |
| 143 | + @shopt -s nullglob |
| 144 | + packages=(${MAKEFILE_PATH}/../../build/*-scylla_cpp_driver.pkg) |
| 145 | + package_nane="scylla-rs-driver PKG" |
| 146 | + ${INSTALL_PACKAGE_SCRIPT} |
| 147 | + |
| 148 | +#ifeq ($(OS_TYPE),macos) |
| 149 | +#.install-package: .install-package-macos-pkg |
| 150 | +#else ifeq ($(OS_TYPE),windows) |
| 151 | +#.install-package: |
| 152 | +#else |
| 153 | +#.install-package: |
| 154 | +#endif |
131 | 155 |
|
132 | 156 | test-package: .prepare-for-test |
133 | 157 | @cleanup() {\ |
|
0 commit comments