Skip to content

Commit 219ca58

Browse files
authored
Merge pull request #128 from syuu1228/homebrew_packaging
Support homebrew
2 parents 879c6ab + b7af7e3 commit 219ca58

File tree

2 files changed

+73
-12
lines changed

2 files changed

+73
-12
lines changed

dist/homebrew/cpp-rust-driver.rb

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
require "formula"
2+
3+
class CppRustDriver < Formula
4+
homepage "https://github.com/scylladb/cpp-rust-driver"
5+
head "https://github.com/scylladb/cpp-rust-driver.git", branch: "master"
6+
7+
depends_on "openssl"
8+
depends_on "rust"
9+
10+
def install
11+
cass_header = File.open('include/cassandra.h').read()
12+
version_major = cass_header.match(/^#define CASS_VERSION_MAJOR (.+)$/)[1]
13+
version_minor = cass_header.match(/^#define CASS_VERSION_MINOR (.+)$/)[1]
14+
version_patch = cass_header.match(/^#define CASS_VERSION_PATCH (.+)$/)[1]
15+
version = "#{version_major}.#{version_minor}.#{version_patch}"
16+
puts version
17+
18+
ENV["RUSTFLAGS"] = "-Clink-arg=-Wl,-install_name,#{lib}/libscylla-cpp-driver.#{version_major}.dylib -Clink-arg=-Wl,-current_version,#{version} -Clink-arg=-Wl,-compatibility_version,#{version_major}"
19+
chdir "scylla-rust-wrapper" do
20+
system "cargo", "build", "--profile", "packaging", "--verbose"
21+
system "./versioning.sh", "--profile", "packaging"
22+
lib.install Dir["target/packaging/*.dylib","target/packaging/*.a"]
23+
end
24+
25+
cp "dist/common/pkgconfig/scylla-cpp-driver.pc.in", "scylla-cpp-driver.pc"
26+
inreplace "scylla-cpp-driver.pc" do |s|
27+
s.gsub! "@prefix@", "#{prefix}"
28+
s.gsub! "@exec_prefix@", "#{bin}"
29+
s.gsub! "@libdir@", "#{lib}"
30+
s.gsub! "@includedir@", "#{include}"
31+
s.gsub! "@version@", "#{version}"
32+
end
33+
34+
cp "dist/common/pkgconfig/scylla-cpp-driver_static.pc.in", "scylla-cpp-driver_static.pc"
35+
inreplace "scylla-cpp-driver_static.pc" do |s|
36+
s.gsub! "@prefix@", "#{prefix}"
37+
s.gsub! "@exec_prefix@", "#{bin}"
38+
s.gsub! "@libdir@", "#{lib}"
39+
s.gsub! "@includedir@", "#{include}"
40+
s.gsub! "@version@", "#{version}"
41+
end
42+
43+
(lib/"pkgconfig").install Dir["*.pc"]
44+
include.install "include/cassandra.h"
45+
end
46+
end

scylla-rust-wrapper/versioning.sh

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#!/bin/bash -e
22

3-
. /etc/os-release
4-
53
print_usage() {
64
echo "$0 --profile release"
75
echo " --profile specify profile"
@@ -20,8 +18,8 @@ while [[ $# -gt 0 ]]; do
2018
esac
2119
done
2220

23-
TARGET="$PROFILE"
24-
case "$PROFILE" in
21+
TARGET="${PROFILE}"
22+
case "${PROFILE}" in
2523
"dev")
2624
TARGET="debug"
2725
;;
@@ -37,12 +35,29 @@ VERSION_MINOR=$(sed -n -e 's/^#define CASS_VERSION_MINOR \(.*\)/\1/p' ../include
3735
VERSION_PATCH=$(sed -n -e 's/^#define CASS_VERSION_PATCH \(.*\)/\1/p' ../include/cassandra.h)
3836
VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
3937

40-
# library name should be "libscylla-cpp-driver", but since Cargo doesn't allow this library name we have to rename it here
41-
cp --remove-destination -v target/"${TARGET}"/libscylla_cpp_driver.so target/"${TARGET}"/libscylla-cpp-driver.so
42-
cp --remove-destination -v target/"${TARGET}"/libscylla_cpp_driver.a target/"${TARGET}"/libscylla-cpp-driver_static.a
43-
rm -fv target/"${TARGET}"/libscylla_cpp_driver.{so,a}
38+
UNAME="$(uname)"
39+
# On macOS
40+
if [[ "${UNAME}" = "Darwin" ]]; then
41+
# library name should be "libscylla-cpp-driver", but since Cargo doesn't allow this library name we have to rename it here
42+
rm -f target/"${TARGET}"/{libscylla-cpp-driver.dylib,libscylla-cpp-driver_static.a}
43+
cp -v target/"${TARGET}"/libscylla_cpp_driver.dylib target/"${TARGET}"/libscylla-cpp-driver.dylib
44+
cp -v target/"${TARGET}"/libscylla_cpp_driver.a target/"${TARGET}"/libscylla-cpp-driver_static.a
45+
rm -fv target/"${TARGET}"/libscylla_cpp_driver.{dylib,a}
46+
47+
# make .so "versioned" style using symlinks
48+
rm -f target/"${TARGET}"/libscylla-cpp-driver."${VERSION}".dylib
49+
cp -v target/"${TARGET}"/libscylla-cpp-driver.dylib target/"${TARGET}"/libscylla-cpp-driver."${VERSION}".dylib
50+
ln -vsf libscylla-cpp-driver."${VERSION}".dylib target/"${TARGET}"/libscylla-cpp-driver."${VERSION_MAJOR}".dylib
51+
ln -vsf libscylla-cpp-driver."${VERSION}".dylib target/"${TARGET}"/libscylla-cpp-driver.dylib
52+
# Linux and other
53+
else
54+
# library name should be "libscylla-cpp-driver", but since Cargo doesn't allow this library name we have to rename it here
55+
cp --remove-destination -v target/"${TARGET}"/libscylla_cpp_driver.so target/"${TARGET}"/libscylla-cpp-driver.so
56+
cp --remove-destination -v target/"${TARGET}"/libscylla_cpp_driver.a target/"${TARGET}"/libscylla-cpp-driver_static.a
57+
rm -fv target/"${TARGET}"/libscylla_cpp_driver.{so,a}
4458

45-
# make .so "versioned" style using symlinks
46-
cp --remove-destination -v target/"${TARGET}"/libscylla-cpp-driver.so target/"${TARGET}"/libscylla-cpp-driver.so."${VERSION}"
47-
ln -vsf libscylla-cpp-driver.so."${VERSION}" target/"${TARGET}"/libscylla-cpp-driver.so."${VERSION_MAJOR}"
48-
ln -vsf libscylla-cpp-driver.so."${VERSION}" target/"${TARGET}"/libscylla-cpp-driver.so
59+
# make .so "versioned" style using symlinks
60+
cp --remove-destination -v target/"${TARGET}"/libscylla-cpp-driver.so target/"${TARGET}"/libscylla-cpp-driver.so."${VERSION}"
61+
ln -vsf libscylla-cpp-driver.so."${VERSION}" target/"${TARGET}"/libscylla-cpp-driver.so."${VERSION_MAJOR}"
62+
ln -vsf libscylla-cpp-driver.so."${VERSION}" target/"${TARGET}"/libscylla-cpp-driver.so
63+
fi

0 commit comments

Comments
 (0)