@@ -42,8 +42,29 @@ find_os_props() {
42
42
esac
43
43
}
44
44
45
+ # Run apt-get if needed.
46
+ apt_get_update_if_needed () {
47
+ if [ ! -d " /var/lib/apt/lists" ] || [ " $( ls /var/lib/apt/lists/ | wc -l) " = " 0" ]; then
48
+ echo " Running apt-get update..."
49
+ apt-get update
50
+ else
51
+ echo " Skipping apt-get update."
52
+ fi
53
+ }
54
+
55
+ # Check if packages are installed and installs them if not.
56
+ check_packages () {
57
+ if ! dpkg -s " $@ " > /dev/null 2>&1 ; then
58
+ apt_get_update_if_needed
59
+ apt-get -y install --no-install-recommends " $@ "
60
+ fi
61
+ }
62
+
45
63
TMP_DIR=$( mktemp -d -t maria-XXXXXXXXXX)
46
64
MARIADB_CONNECTOR=" "
65
+ SOURCE_INCLUDE_DIR=" "
66
+ SOURCE_LIB_DIR=" "
67
+ SOURCE_PLUGIN_DIR=" "
47
68
48
69
cleanup () {
49
70
EXIT_CODE=$?
@@ -57,25 +78,45 @@ cleanup() {
57
78
trap cleanup EXIT
58
79
59
80
# Set up external repository and install C Connector
60
- apt install -y libmariadb3 libmariadb-dev
81
+ check_packages libmariadb3 libmariadb-dev
61
82
62
83
# Depending on the OS, install different C++ connectors
63
84
find_os_props
64
- # Instructions are copied and modified from: https://mariadb.com/docs/clients/mariadb-connectors/connector-cpp/install/
65
- MARIADB_CONNECTOR=mariadb-connector-cpp-1.0.1-$OSURL
85
+
66
86
cd ${TMP_DIR}
67
- curl -Ls https://dlm.mariadb.com/$OSTAG /connectors/cpp/connector-cpp-1.0.1/${MARIADB_CONNECTOR} .tar.gz -o ${MARIADB_CONNECTOR} .tar.gz
68
- tar -xvzf ${MARIADB_CONNECTOR} .tar.gz && cd ${MARIADB_CONNECTOR}
69
- install -d /usr/include/mariadb/conncpp
70
87
71
- # Header Files being copied into the necessary directories
72
- cp -R ./include/mariadb/* /usr/include/mariadb/
73
- cp -R ./include/mariadb/conncpp/* /usr/include/mariadb/conncpp
74
- cp -R ./include/mariadb/conncpp/compat/* /usr/include/mariadb/conncpp/compat
88
+ if [ " $( dpkg --print-architecture) " = " arm64" ] ; then
89
+ # Instructions are copied and modified from: https://github.com/mariadb-corporation/mariadb-connector-cpp/blob/master/BUILD.md
90
+ # and from: https://mariadb.com/docs/clients/mariadb-connectors/connector-cpp/install/
91
+ check_packages git cmake make gcc libssl-dev
92
+ git clone https://github.com/MariaDB-Corporation/mariadb-connector-cpp.git
93
+ mkdir build && cd build
94
+ cmake ../mariadb-connector-cpp/ -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCONC_WITH_UNIT_TESTS=Off -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_SSL=OPENSSL
95
+ cmake --build . --config RelWithDebInfo
96
+ make install
97
+
98
+ SOURCE_INCLUDE_DIR=" ../mariadb-connector-cpp/include"
99
+ SOURCE_LIB_DIR=" ."
100
+ SOURCE_PLUGIN_DIR=" ./libmariadb"
101
+ else
102
+ # Instructions are copied and modified from: https://mariadb.com/docs/clients/mariadb-connectors/connector-cpp/install/
103
+ MARIADB_CONNECTOR=mariadb-connector-cpp-1.0.1-$OSURL
104
+ curl -Ls https://dlm.mariadb.com/$OSTAG /connectors/cpp/connector-cpp-1.0.1/${MARIADB_CONNECTOR} .tar.gz -o ${MARIADB_CONNECTOR} .tar.gz
105
+ tar -xvzf ${MARIADB_CONNECTOR} .tar.gz && cd ${MARIADB_CONNECTOR}
75
106
76
- install -d /usr/lib/mariadb
107
+ SOURCE_INCLUDE_DIR=" ./include/mariadb"
108
+ SOURCE_LIB_DIR=" lib/mariadb"
109
+ SOURCE_PLUGIN_DIR=" lib/mariadb/plugin"
110
+ fi
111
+
112
+ install -d /usr/include/mariadb/conncpp/compat
77
113
install -d /usr/lib/mariadb/plugin
78
114
115
+ # Header Files being copied into the necessary directories
116
+ cp -R ${SOURCE_INCLUDE_DIR} /* /usr/include/mariadb/
117
+ cp -R ${SOURCE_INCLUDE_DIR} /conncpp/* /usr/include/mariadb/conncpp
118
+ cp -R ${SOURCE_INCLUDE_DIR} /conncpp/compat/* /usr/include/mariadb/conncpp/compat
119
+
79
120
# Shared libraries copied into usr/lib
80
- cp lib/mariadb /libmariadbcpp.so /usr/lib
81
- cp -R lib/mariadb/plugin/ * /usr/lib/mariadb/plugin
121
+ cp ${SOURCE_LIB_DIR} /libmariadbcpp.so /usr/lib
122
+ cp ${SOURCE_PLUGIN_DIR} / * .so /usr/lib/mariadb/plugin
0 commit comments