2
0
Эх сурвалжийг харах

Test libjq (#6624)

* Test libjq

* Limit plats

* retry limit plats

* Test

* Fixup

* Limit msys back

* fixup typo

* Set license according to website footer https://jqlang.org/ >jq is licensed under the MIT license (code) and the CC-BY-3.0 license (docs). <

* check for ```os.vrun("jq --version")```

* Try cure exe

* fmt
Saikari 4 сар өмнө
parent
commit
bdcc4c07d4

+ 78 - 0
packages/l/libjq/xmake.lua

@@ -0,0 +1,78 @@
+package("libjq")
+    set_homepage("https://jqlang.org")
+    set_description("Command-line JSON processor")
+    set_license("MIT")
+
+    add_urls("https://github.com/jqlang/jq/archive/refs/tags/jq-$(version).tar.gz",
+             "https://github.com/jqlang/jq.git")
+
+    add_versions("1.7.1" , "fc75b1824aba7a954ef0886371d951c3bf4b6e0a921d1aefc553f309702d6ed1")
+
+    add_deps("autoconf", "automake", "libtool")
+
+    add_configs("oniguruma",    {description = "Build with oniguruma", default = true, type = "boolean"})
+    add_configs("all_static",   {description = "Link jq with static libraries only", default = false, type = "boolean"})
+
+    if not is_host("windows") then
+        add_extsources("pkgconfig::libjq")
+    end
+
+    if is_plat("mingw") and is_subhost("msys") then
+        add_extsources("pacman::jq")
+    elseif is_plat("linux") then
+        add_extsources("apt::libjq-dev")
+    elseif is_plat("macosx") then
+        add_extsources("brew::jq")
+    end
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("m", "pthread")
+    elseif is_plat("windows", "mingw") then
+        add_syslinks("shlwapi")
+    end
+
+    on_check(function (package)
+        assert(not (package:is_plat("android") and is_subhost("windows")), "package(libjq): does not support windows@android.")
+        assert(not (package:is_plat("mingw") and is_subhost("msys")), "package(libjq): does not support mingw@msys.")
+    end)
+
+    on_load(function (package)
+        if package:config("oniguruma") then
+            package:add("deps", "oniguruma")
+        end
+    end)
+
+    on_install("!windows and !wasm", function (package)
+        if not package:is_cross() then
+            package:addenv("PATH", "bin")
+        end
+        local configs = {"--enable-docs=no"}
+        if package:config("shared") then
+            table.insert(configs, "--enable-shared")
+            table.insert(configs, "--disable-static")
+        else
+            table.insert(configs, "--enable-static")
+            table.insert(configs, "--disable-shared")
+        end
+        if package:debug() then
+            table.insert(configs, "--enable-debug")
+        else
+            table.insert(configs, "--disable-debug")
+        end
+        if package:config("all_static") then
+            table.insert(configs, "--enable-all-static")
+        end
+        local opt = {}
+        if package:config("oniguruma") then
+            opt.packagedeps = "oniguruma"
+        end
+        table.insert(configs, "--with-oniguruma=" .. (package:config("oniguruma") and "yes" or "no"))
+        import("package.tools.autoconf").install(package, configs, opt)
+    end)
+
+    on_test(function (package)
+        if not package:is_cross() then
+            os.vrun("jq --version")
+        end
+        assert(package:has_cfuncs("jq_init" , {includes = "jq.h"}))
+    end)