WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions .github/workflows/Java-alpine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: DuckDB-JDBC Alpine Compilation

on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:

jobs:
java-alpine-amd64:
name: Java Linux (Alpine x86_64)
runs-on: ubuntu-latest
container:
image: alpine:latest
env:
GEN: ninja
DUCKDB_PLATFORM: linux_amd64

steps:
- name: Prepare Alpine Container
shell: sh

run: |
# Update package lists and install essential build tools
apk update
apk add --no-cache build-base gcc g++ libstdc++ cmake make ninja git pkgconfig boost-dev openjdk17 openjdk17-jdk

rm -rf /var/cache/apk/*

# Set Java environment variables
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> $GITHUB_ENV
echo "/usr/lib/jvm/java-17-openjdk/bin:${PATH}" >> $GITHUB_PATH

- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set Compiler Flags (Optional)
run: |
echo "CXXFLAGS=-Wno-stringop-overflow -Wno-return-local-addr -DICU_DISABLE_WARNINGS" >> $GITHUB_ENV
echo "CFLAGS=-Wno-stringop-overflow" >> $GITHUB_ENV

- name: Build DuckDB JDBC
run: |
# Add any specific build commands for DuckDB-JDBC
# This might need adjustment based on your specific build process
echo $CFLAGS
echo $CXXFLAGS
make release

- name: Package JDBC Artifact
run: |
# Copy or rename the JDBC jar as needed
cp build/release/duckdb_jdbc.jar duckdb_jdbc-linux-alpine-x86_64.jar

- uses: actions/upload-artifact@v4
with:
name: java-alpine-amd64
path: build/release/duckdb_jdbc.jar
42 changes: 40 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ else()
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
endif()


set(OS_NAME "unknown")
set(OS_ARCH "amd64")

Expand All @@ -65,12 +64,46 @@ if(OVERRIDE_JDBC_OS_ARCH)
set(OS_ARCH ${OVERRIDE_JDBC_OS_ARCH})
endif()


# Function to check if the current system is Alpine Linux
function(is_alpine_linux RESULT)
if(UNIX AND NOT APPLE)
# Read the contents of /etc/os-release if it exists
if(EXISTS "/etc/os-release")
file(READ "/etc/os-release" OS_RELEASE_CONTENTS)

# Check if the contents contain "Alpine Linux"
string(FIND "${OS_RELEASE_CONTENTS}" "Alpine Linux" ALPINE_FOUND)

if(ALPINE_FOUND GREATER -1)
set(${RESULT} TRUE PARENT_SCOPE)
else()
set(${RESULT} FALSE PARENT_SCOPE)
endif()
else()
set(${RESULT} FALSE PARENT_SCOPE)
endif()
else()
set(${RESULT} FALSE PARENT_SCOPE)
endif()
endfunction()

# Option to force static libcpp
option(STATIC_LIBCPP "Statically link C++ standard library" OFF)

# Automatically detect and set STATIC_LIBCPP for Alpine
is_alpine_linux(IS_ALPINE)
if(IS_ALPINE)
set(STATIC_LIBCPP ON CACHE BOOL "Automatically enabled static linking for Alpine" FORCE)
message(STATUS "Detected Alpine Linux - Enabling static C++ library linking")
endif()


add_jar(duckdb_jdbc ${JAVA_SRC_FILES} META-INF/services/java.sql.Driver
GENERATE_NATIVE_HEADERS duckdb-native)
add_jar(duckdb_jdbc_tests ${JAVA_TEST_FILES} INCLUDE_JARS duckdb_jdbc)



set(DUCKDB_SYSTEM_LIBS ${CMAKE_DL_LIBS})

if(MSVC)
Expand All @@ -82,6 +115,11 @@ target_compile_options(duckdb_java PRIVATE -fexceptions)
target_link_libraries(duckdb_java duckdb-native )
target_link_libraries(duckdb_java ${DUCKDB_SYSTEM_LIBS})

if(STATIC_LIBCPP)
message("Statically linking C++ standard library")
target_link_libraries(duckdb_java -static-libstdc++ -static-libgcc)
endif()

string(JOIN "_" LIB_SUFFIX ".so" ${OS_NAME} ${OS_ARCH})
set_target_properties(duckdb_java PROPERTIES SUFFIX ${LIB_SUFFIX})
set_target_properties(duckdb_java PROPERTIES PREFIX "lib")
Expand Down
Loading