duckdb-ffi 1.4.1.3 → 1.4.1.4
raw patch · 3 files changed
+11/−119 lines, 3 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- Setup.hs +1/−108
- duckdb-ffi.cabal +6/−11
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog +## 1.4.1.4+- Simplify Setup.hs to use defaultMain, fixing builds in Nix and other+ environments where the custom library search logic failed.+ ## 0.1.4.2 - Move deprecated FFI functions to the Deprecated module.
Setup.hs view
@@ -1,109 +1,2 @@--- Setup.hs--import Control.Exception (bracket)-import Control.Monad (filterM, forM_)-import Data.List (nub)-import Data.Maybe (catMaybes, isJust, listToMaybe)-import Distribution.PackageDescription (- GenericPackageDescription (..),- PackageDescription (..),- extraLibDirs,- libBuildInfo,- library,- package,- ) import Distribution.Simple-import Distribution.Simple.Compiler (compilerInfo)-import Distribution.Simple.InstallDirs (absoluteInstallDirs, dynlibdir, libdir)-import Distribution.Simple.LocalBuildInfo (LocalBuildInfo (..), localUnitId)-import Distribution.Simple.Setup (configExtraLibDirs, configVerbosity, copyDest, defaultCopyFlags, fromFlag)-import Distribution.Simple.Utils (copyFileVerbose, createDirectoryIfMissingVerbose, createTempDirectory, info)-import Distribution.Verbosity (Verbosity)-import System.Directory (- doesDirectoryExist,- doesFileExist,- findFile,- getCurrentDirectory,- getTemporaryDirectory,- removeDirectoryRecursive,- )-import System.Environment (lookupEnv)-import System.FilePath ((</>), splitSearchPath)-import System.Process (callProcess)--main :: IO ()-main =- defaultMainWithHooks- simpleUserHooks- { preConf = \args flags -> do- ensureDuckDBAvailable (fromFlag (configVerbosity flags))- preConf simpleUserHooks args flags- }--systemLibraryCandidates :: [FilePath]-systemLibraryCandidates =- [ "libduckdb.so"- , "libduckdb.so.1"- , "libduckdb.so.1.4"- , "libduckdb.so.1.4.0"- , "libduckdb.so.1.4.1"- ]---ensureDuckDBAvailable :: Verbosity -> IO ()-ensureDuckDBAvailable verb = do- available <- systemDuckDBAvailable- if available- then info verb "libduckdb found"- else error "libduckdb not found, please install libduckdb (available at https://duckdb.org/install/)"---systemDuckDBAvailable :: IO Bool-systemDuckDBAvailable = do- header <- findDuckDBHeader- lib <- findDuckDBLibrary- pure (isJust header && isJust lib)--findDuckDBHeader :: IO (Maybe FilePath)-findDuckDBHeader = do- paths <- headerSearchPaths- findFile paths "duckdb.h"--findDuckDBLibrary :: IO (Maybe FilePath)-findDuckDBLibrary = do- paths <- librarySearchPaths- listToMaybe . catMaybes <$> mapM (findFile paths) systemLibraryCandidates--headerSearchPaths :: IO [FilePath]-headerSearchPaths = do- envPaths <- gatherEnvPaths ["C_INCLUDE_PATH", "CPATH", "INCLUDE"]- let defaults =- [ "/usr/include"- , "/usr/local/include"- , "/usr/include/x86_64-linux-gnu"- , "/usr/include/aarch64-linux-gnu"- , "/opt/homebrew/include"- , "/opt/local/include"- ]- pure (nub (envPaths ++ defaults))--librarySearchPaths :: IO [FilePath]-librarySearchPaths = do- envPaths <- gatherEnvPaths ["LIBRARY_PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "LIB"]- let defaults =- [ "/usr/lib"- , "/usr/local/lib"- , "/usr/lib64"- , "/usr/local/lib64"- , "/usr/lib/x86_64-linux-gnu"- , "/usr/lib/aarch64-linux-gnu"- , "/opt/homebrew/lib"- , "/opt/local/lib"- ]- pure (nub (envPaths ++ defaults))--gatherEnvPaths :: [String] -> IO [FilePath]-gatherEnvPaths names = do- vals <- mapM lookupEnv names- let paths = concatMap splitSearchPath (catMaybes vals)- pure (filter (not . null) paths)+main = defaultMain
duckdb-ffi.cabal view
@@ -1,10 +1,10 @@ cabal-version: 3.4 name: duckdb-ffi-version: 1.4.1.3+version: 1.4.1.4 author: Matthias Pall Gissurarson maintainer: mpg@mpg.is category: Database-build-type: Custom+build-type: Simple license: MPL-2.0 license-file: LICENSE synopsis: Haskell FFI bindings for DuckDB@@ -12,9 +12,11 @@ bug-reports: https://github.com/Tritlo/duckdb-haskell/issues description: This library provides low-level FFI bindings to DuckDB.- Tested with DuckDB version 1.4.0, and 1.4.0.+ Tested with DuckDB version 1.4.0 and 1.4.1. Exposes the full DuckDB C API.- Note: requires libduckdb and duckdb.h to be installed on the system.+ .+ Requires libduckdb to be installed on the system.+ See <https://duckdb.org/docs/installation> for installation instructions. extra-doc-files: CHANGELOG.md source-repository head@@ -22,13 +24,6 @@ location: https://github.com/Tritlo/duckdb-haskell.git subdir: duckdb-ffi --custom-setup- setup-depends: base >=4.18 && <4.21,- Cabal >=3.4 && <3.16,- directory >= 1.3 && <1.4,- filepath >= 1.4 && <1.5,- process >= 1.6 && <1.7, library default-language: