Skip to content

Commit 81c2641

Browse files
committed
1
1 parent 3513e6f commit 81c2641

File tree

3 files changed

+120
-14
lines changed

3 files changed

+120
-14
lines changed

.github/workflows/build-cpack-packages.yml

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
- name: Build packages
4848
run: make build-package
4949

50-
- name: Install driver package (DEB)
50+
- name: Install driver packages (DEB)
5151
run: |
5252
set -euo pipefail
5353
shopt -s nullglob
@@ -56,9 +56,29 @@ jobs:
5656
echo "No driver DEB packages produced"
5757
exit 1
5858
fi
59+
echo "Installing ${#DRIVER_PACKAGES[@]} DEB package(s):"
60+
for pkg in "${DRIVER_PACKAGES[@]}"; do
61+
echo " - $(basename "$pkg")"
62+
done
63+
# Install both runtime and dev packages
5964
sudo dpkg -i "${DRIVER_PACKAGES[@]}"
6065
sudo apt-get install -f -y
6166
67+
- name: Verify dev package installation
68+
run: |
69+
set -euo pipefail
70+
# Verify headers are installed
71+
if [ ! -f /usr/include/cassandra.h ]; then
72+
echo "ERROR: cassandra.h header not found - dev package may not be installed"
73+
exit 1
74+
fi
75+
# Verify pkg-config file is installed
76+
if ! pkg-config --exists scylla-cpp-driver; then
77+
echo "ERROR: scylla-cpp-driver.pc not found - dev package may not be installed"
78+
exit 1
79+
fi
80+
echo "Dev package verification successful"
81+
6282
- name: Build smoke-test application package
6383
run: |
6484
set -euo pipefail
@@ -113,7 +133,7 @@ jobs:
113133
- name: Build smoke-test application package
114134
run: make -C packaging/smoke-test-app package BUILD_TYPE=${{ inputs.build-type }}
115135

116-
- name: Install driver package (pkg)
136+
- name: Install driver packages (pkg)
117137
run: |
118138
set -euo pipefail
119139
shopt -s nullglob
@@ -122,10 +142,30 @@ jobs:
122142
echo "No driver pkg packages produced"
123143
exit 1
124144
fi
145+
echo "Installing ${#packages[@]} pkg package(s):"
146+
for pkg in "${packages[@]}"; do
147+
echo " - $(basename "$pkg")"
148+
done
149+
# Install all packages (macOS productbuild creates a single package with components)
125150
for pkg in "${packages[@]}"; do
126151
sudo installer -pkg "$pkg" -target /
127152
done
128153
154+
- name: Verify dev package installation
155+
run: |
156+
set -euo pipefail
157+
# Verify headers are installed
158+
if [ ! -f /usr/local/include/cassandra.h ]; then
159+
echo "ERROR: cassandra.h header not found - dev package may not be installed"
160+
exit 1
161+
fi
162+
# Verify pkg-config file is installed
163+
if ! PKG_CONFIG_PATH=/usr/local/lib/pkgconfig pkg-config --exists scylla-cpp-driver; then
164+
echo "ERROR: scylla-cpp-driver.pc not found - dev package may not be installed"
165+
exit 1
166+
fi
167+
echo "Dev package verification successful"
168+
129169
- name: Install smoke-test application package (pkg)
130170
run: make -C packaging/smoke-test-app install-pkg
131171

@@ -181,21 +221,43 @@ jobs:
181221
- name: Build packages
182222
run: make build-package
183223

184-
- name: Install driver package (MSI)
224+
- name: Install driver packages (MSI)
185225
shell: pwsh
186226
run: |
187227
$ErrorActionPreference = 'Stop'
188228
$packages = Get-ChildItem build -Filter *.msi
189229
if (-not $packages) {
190230
throw "No driver MSI packages produced"
191231
}
232+
Write-Host "Installing $($packages.Count) MSI package(s):"
233+
foreach ($pkg in $packages) {
234+
Write-Host " - $($pkg.Name)"
235+
}
236+
# Install all packages (Windows WIX creates a single MSI with components)
192237
foreach ($pkg in $packages) {
193238
$process = Start-Process msiexec.exe -ArgumentList "/i `"$($pkg.FullName)`" /qn /norestart" -Wait -PassThru
194239
if ($process.ExitCode -ne 0) {
195240
throw "Failed to install driver package $($pkg.Name): exit code $($process.ExitCode)"
196241
}
197242
}
198243
244+
- name: Verify dev package installation
245+
shell: pwsh
246+
run: |
247+
$ErrorActionPreference = 'Stop'
248+
$installPath = "C:\Program Files\ScyllaDB\Scylla CPP Driver"
249+
# Verify headers are installed
250+
$headerPath = Join-Path $installPath "include\cassandra.h"
251+
if (-not (Test-Path $headerPath)) {
252+
throw "ERROR: cassandra.h header not found at $headerPath - dev package may not be installed"
253+
}
254+
# Verify pkg-config file is installed
255+
$pkgConfigPath = Join-Path $installPath "lib\pkgconfig\scylla-cpp-driver.pc"
256+
if (-not (Test-Path $pkgConfigPath)) {
257+
throw "ERROR: scylla-cpp-driver.pc not found at $pkgConfigPath - dev package may not be installed"
258+
}
259+
Write-Host "Dev package verification successful"
260+
199261
- name: Build smoke-test application package
200262
shell: pwsh
201263
run: |

CMakeLists.txt

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,26 @@ set(CPACK_MONOLITHIC_INSTALL ON)
275275
set(CPACK_VERBATIM_VARIABLES ON)
276276

277277
set(CPACK_MONOLITHIC_INSTALL OFF)
278-
set(CPACK_COMPONENTS_ALL ${SCYLLA_DRIVER_COMPONENT_NAME})
278+
279+
# Define component names for runtime and dev packages
280+
set(SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME "${SCYLLA_DRIVER_COMPONENT_NAME}")
281+
set(SCYLLA_DRIVER_DEV_COMPONENT_NAME "${SCYLLA_DRIVER_COMPONENT_NAME}-dev")
282+
set(CPACK_COMPONENTS_ALL ${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME} ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
283+
279284
include(CPackComponent)
280-
cpack_add_component(${SCYLLA_DRIVER_COMPONENT_NAME}
281-
DISPLAY_NAME "Scylla C++ Driver"
282-
DESCRIPTION "Shared/static libraries, headers, and pkg-config metadata"
285+
286+
# Runtime component: shared libraries only
287+
cpack_add_component(${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}
288+
DISPLAY_NAME "Scylla C++ Driver Runtime"
289+
DESCRIPTION "Shared libraries for the Scylla C++ Driver"
283290
REQUIRED)
284291

292+
# Dev component: headers, static libraries, pkg-config files, and development symlinks
293+
cpack_add_component(${SCYLLA_DRIVER_DEV_COMPONENT_NAME}
294+
DISPLAY_NAME "Scylla C++ Driver Development"
295+
DESCRIPTION "Headers, static libraries, and development files for the Scylla C++ Driver"
296+
DEPENDS ${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME})
297+
285298
if(WIN32)
286299
set(CPACK_GENERATOR "WIX")
287300
set(CPACK_PACKAGE_INSTALL_DIRECTORY "ScyllaDB\\Scylla CPP Driver")
@@ -305,15 +318,39 @@ else()
305318
set(CPACK_GENERATOR "DEB;RPM")
306319
set(CPACK_PACKAGE_FILE_NAME
307320
"${_CPACK_PACKAGE_NAME}-${PROJECT_VERSION_STRING}-${CMAKE_SYSTEM_NAME}")
321+
322+
# DEB package configuration
323+
set(CPACK_DEB_COMPONENT_INSTALL ON)
308324
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
309325
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ScyllaDB")
310326
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
311327
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL})
312328
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
329+
330+
# DEB runtime package
331+
set(CPACK_DEBIAN_${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}_PACKAGE_NAME "${_CPACK_PACKAGE_NAME}")
332+
set(CPACK_DEBIAN_${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}_PACKAGE_SECTION "libs")
333+
334+
# DEB dev package
335+
set(CPACK_DEBIAN_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_NAME "${_CPACK_PACKAGE_NAME}-dev")
336+
set(CPACK_DEBIAN_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_SECTION "libdevel")
337+
set(CPACK_DEBIAN_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_DEPENDS "${_CPACK_PACKAGE_NAME} (= \${CPACK_DEBIAN_PACKAGE_VERSION})")
338+
339+
# RPM package configuration
340+
set(CPACK_RPM_COMPONENT_INSTALL ON)
313341
set(CPACK_RPM_PACKAGE_LICENSE "Apache-2.0")
314342
set(CPACK_RPM_PACKAGE_URL ${CPACK_PACKAGE_HOMEPAGE_URL})
315343
set(CPACK_RPM_PACKAGE_RELEASE 1)
316344
set(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
345+
346+
# RPM runtime package
347+
set(CPACK_RPM_${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}_PACKAGE_NAME "${_CPACK_PACKAGE_NAME}")
348+
set(CPACK_RPM_${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}_PACKAGE_GROUP "System Environment/Libraries")
349+
350+
# RPM dev package (devel suffix is standard for RPM)
351+
set(CPACK_RPM_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_NAME "${_CPACK_PACKAGE_NAME}-devel")
352+
set(CPACK_RPM_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_GROUP "Development/Libraries")
353+
set(CPACK_RPM_${SCYLLA_DRIVER_DEV_COMPONENT_NAME}_PACKAGE_REQUIRES "${_CPACK_PACKAGE_NAME} = \${CPACK_RPM_PACKAGE_VERSION}-\${CPACK_RPM_PACKAGE_RELEASE}")
317354
endif()
318355

319356
include(CPack)

scylla-rust-wrapper/CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,43 +118,50 @@ endif()
118118
# Determine if the header should be installed
119119
if(CASS_INSTALL_HEADER)
120120
file(GLOB CASS_API_HEADER_FILES ${CASS_INCLUDE_DIR}/*.h)
121+
# Headers go to dev package
121122
install(FILES ${CASS_API_HEADER_FILES}
122123
DESTINATION ${INSTALL_HEADER_DIR}
123-
${SCYLLA_DRIVER_COMPONENT_ARGS})
124+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
124125
endif()
125126

126127
# Install the dynamic/shared library
127128
if(CASS_BUILD_SHARED)
129+
# Versioned shared library goes to runtime package
128130
install(FILES $<TARGET_FILE:scylla-cpp-driver>
129131
DESTINATION ${CMAKE_INSTALL_LIBDIR}
130-
${SCYLLA_DRIVER_COMPONENT_ARGS}
132+
COMPONENT ${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME}
131133
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
134+
# Major version symlink goes to runtime package
132135
install(FILES ${CMAKE_BINARY_DIR}/${INSTALL_NAME_SHARED_SYMLINK_VERSION}
133136
DESTINATION ${CMAKE_INSTALL_LIBDIR}
134-
${SCYLLA_DRIVER_COMPONENT_ARGS})
137+
COMPONENT ${SCYLLA_DRIVER_RUNTIME_COMPONENT_NAME})
138+
# Unversioned development symlink goes to dev package
135139
install(FILES ${CMAKE_BINARY_DIR}/${INSTALL_NAME_SHARED_SYMLINK_NO_VERSION}
136140
DESTINATION ${CMAKE_INSTALL_LIBDIR}
137-
${SCYLLA_DRIVER_COMPONENT_ARGS})
141+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
142+
# pkg-config file goes to dev package
138143
if(CASS_INSTALL_PKG_CONFIG)
139144
if(PKG_CONFIG_FOUND)
140145
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scylla-cpp-driver.pc.in" "scylla-cpp-driver.pc" @ONLY)
141146
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/scylla-cpp-driver.pc"
142147
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
143-
${SCYLLA_DRIVER_COMPONENT_ARGS})
148+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
144149
endif()
145150
endif()
146151
endif()
147152

153+
# Static library goes to dev package
148154
if(CASS_BUILD_STATIC)
149155
install(FILES $<TARGET_FILE:scylla-cpp-driver_static>
150156
DESTINATION ${CMAKE_INSTALL_LIBDIR}
151-
${SCYLLA_DRIVER_COMPONENT_ARGS})
157+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
158+
# Static library pkg-config file goes to dev package
152159
if(CASS_INSTALL_PKG_CONFIG)
153160
if(PKG_CONFIG_FOUND)
154161
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scylla-cpp-driver_static.pc.in" "scylla-cpp-driver_static.pc" @ONLY)
155162
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/scylla-cpp-driver_static.pc"
156163
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
157-
${SCYLLA_DRIVER_COMPONENT_ARGS})
164+
COMPONENT ${SCYLLA_DRIVER_DEV_COMPONENT_NAME})
158165
endif()
159166
endif()
160167
endif()

0 commit comments

Comments
 (0)