1{ lib, stdenv
2, fetchFromGitHub
3, cmake
4, expat
5, fmt
6, proj
7, bzip2
8, zlib
9, boost
10, postgresql
11, withLuaJIT ? false
12, lua
13, luajit
14, libosmium
15, protozero
16, rapidjson
17, testers
18}:
19
20stdenv.mkDerivation (finalAttrs: {
21 pname = "osm2pgsql";
22 version = "1.7.2";
23
24 src = fetchFromGitHub {
25 owner = "openstreetmap";
26 repo = "osm2pgsql";
27 rev = finalAttrs.version;
28 hash = "sha256-KJkqzvsm0IMaqeKnIbLGeOSJrsLvW+z7lCg6NbuU13g=";
29 };
30
31 postPatch = ''
32 # Remove bundled libraries
33 rm -r contrib
34 '';
35
36 nativeBuildInputs = [ cmake ];
37
38 buildInputs = [ expat fmt proj bzip2 zlib boost postgresql libosmium protozero rapidjson ]
39 ++ lib.optional withLuaJIT luajit
40 ++ lib.optional (!withLuaJIT) lua;
41
42 cmakeFlags = [
43 "-DEXTERNAL_LIBOSMIUM=ON"
44 "-DEXTERNAL_PROTOZERO=ON"
45 "-DEXTERNAL_RAPIDJSON=ON"
46 "-DEXTERNAL_FMT=ON"
47 ] ++ lib.optional withLuaJIT "-DWITH_LUAJIT:BOOL=ON";
48
49 passthru.tests.version = testers.testVersion {
50 package = finalAttrs.finalPackage;
51 };
52
53 meta = with lib; {
54 description = "OpenStreetMap data to PostgreSQL converter";
55 homepage = "https://osm2pgsql.org";
56 license = licenses.gpl2Plus;
57 platforms = platforms.unix;
58 maintainers = with maintainers; [ jglukasik das-g ];
59 };
60})