Browse Source

libpam: add package. (#8166)

RedbeanW 2 months ago
parent
commit
6eeab5d45c
1 changed files with 50 additions and 0 deletions
  1. 50 0
      packages/l/libpam/xmake.lua

+ 50 - 0
packages/l/libpam/xmake.lua

@@ -0,0 +1,50 @@
+package("libpam")
+    set_homepage("https://github.com/linux-pam/linux-pam")
+    set_description("Pluggable Authentication Modules for Linux")
+
+    add_urls("https://github.com/linux-pam/linux-pam/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/linux-pam/linux-pam.git")
+
+    add_versions("v1.7.1", "82aadd97eb697965b577069c12046a4dd1be68361a9978c708698d2a1ee9b6d1")
+
+    add_configs("i18n",  {description = "Enable i18n support.", default = true, type = "boolean"})
+    add_configs("audit", {description = "Enable audit support.", default = true, type = "boolean"})
+    add_configs("econf", {description = "Enable libeconf support.", default = false, type = "boolean"})
+
+    add_deps("meson", "ninja")
+    on_load(function(package)
+        if package:config("audit") then
+            package:add("deps", "audit")
+        end
+        if package:config("econf") then
+            package:add("deps", "libeconf")
+        end
+    end)
+
+    on_install("linux", function (package)
+        local configs = {
+            '-Ddocs=disabled',
+            '-Dxtests=false',
+            '-Dexamples=false'
+        }
+
+        table.insert(configs, "-Di18n=" .. (package:config("i18n") and "enabled" or "disabled"))
+        table.insert(configs, "-Daudit=" .. (package:config("audit") and "enabled" or "disabled"))
+        table.insert(configs, "-Deconf=" .. (package:config("econf") and "enabled" or "disabled"))
+
+        io.replace("meson.build", "subdir('po')", "", {plain = true})
+        io.replace("meson.build", "subdir('tests')", "", {plain = true})
+        io.replace("meson.build", "subdir('modules')", "", {plain = true})
+        io.replace("meson.build", "subdir('conf' / 'pam_conv1')", "", {plain = true})
+
+        local packagedeps = {}
+        if package:config("audit") then
+            table.insert(packagedeps, "libcap-ng")
+        end
+
+        import("package.tools.meson").install(package, configs, {packagedeps = packagedeps})
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("pamc_start", {includes = "security/pam_client.h"}))
+    end)