|
@@ -0,0 +1,69 @@
|
|
|
+package("postgresql")
|
|
|
+
|
|
|
+ set_homepage("https://www.postgresql.org/")
|
|
|
+ set_description("PostgreSQL Database Management System")
|
|
|
+
|
|
|
+ on_fetch(function (package, opt)
|
|
|
+ if opt.system then
|
|
|
+ import("lib.detect.find_path")
|
|
|
+ import("lib.detect.find_program")
|
|
|
+ import("lib.detect.find_library")
|
|
|
+
|
|
|
+ -- init search paths
|
|
|
+ local paths = {}
|
|
|
+ if package:is_plat("windows") then
|
|
|
+ local regs = winos.registry_keys("HKEY_LOCAL_MACHINE\\SOFTWARE\\PostgreSQL\\Installations\\postgresql-x64-*")
|
|
|
+ for _, reg in ipairs(regs) do
|
|
|
+ table.insert(paths, winos.registry_query(reg .. ";Base Directory"))
|
|
|
+ end
|
|
|
+ elseif package:is_plat("macosx") then
|
|
|
+ for _, path in ipairs(os.dirs("/Library/PostgreSQL/*")) do
|
|
|
+ table.insert(paths, path)
|
|
|
+ end
|
|
|
+ elseif package:is_plat("linux") then
|
|
|
+ for _, path in ipairs(os.dirs("/usr/lib/postgresql/*")) do
|
|
|
+ table.insert(paths, path)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ -- find programs
|
|
|
+ local binfile = find_program("postgres", {pathes = {"$(env PATH)"}})
|
|
|
+ if binfile then
|
|
|
+ local packagedir = path.directory(path.directory(binfile))
|
|
|
+ table.insert(paths, packagedir)
|
|
|
+ package:addenv("PATH", path.join(packagedir, "bin"))
|
|
|
+ end
|
|
|
+
|
|
|
+ local result = {links = {}, linkdirs = {}, includedirs = {}, libfiles = {}}
|
|
|
+
|
|
|
+ -- find library
|
|
|
+ local libname = (package:is_plat("windows") and "libpq" or "pq")
|
|
|
+ local linkinfo = find_library(libname, paths, {suffixes = "lib"})
|
|
|
+ print(linkinfo)
|
|
|
+ if linkinfo then
|
|
|
+ table.insert(result.linkdirs, linkinfo.linkdir)
|
|
|
+ table.insert(result.links, libname)
|
|
|
+ if package:is_plat("windows") then
|
|
|
+ table.insert(result.libfiles, path.join(linkinfo.linkdir, "libpq.lib"))
|
|
|
+ table.insert(result.libfiles, path.join(linkinfo.linkdir, "libpq.dll"))
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ -- find headers
|
|
|
+ local path = find_path("libpq-fe.h", paths, {suffixes = "include"})
|
|
|
+ if path then
|
|
|
+ table.insert(result.includedirs, path)
|
|
|
+ end
|
|
|
+ path = find_path("postgres.h", paths, {suffixes = "include/server"})
|
|
|
+ if path then
|
|
|
+ table.insert(result.includedirs, path)
|
|
|
+ end
|
|
|
+
|
|
|
+ print(result)
|
|
|
+
|
|
|
+ -- ok?
|
|
|
+ if #result.includedirs > 0 and #result.linkdirs > 0 then
|
|
|
+ return result
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end)
|