| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package("libsolv")
- set_homepage("https://github.com/openSUSE/libsolv")
- set_description("Library for solving packages and reading repositories.")
- set_license("BSD-3-Clause")
- add_urls("https://github.com/openSUSE/libsolv/archive/refs/tags/$(version).tar.gz",
- "https://github.com/openSUSE/libsolv.git")
- add_versions("0.7.35", "e6ef552846f908beb3bbf6ca718b6dd431bd8a281086d82af9a6d2a3ba919be5")
- add_versions("0.7.34", "fd9c8a75d3ca09d9ff7b0d160902fac789b3ce6f9fb5b46a7647895f9d3eaf05")
- add_patches("<=0.7.34", "patches/fix-msvc-c2036.patch", "a924517033d4f8ba18e922e892953834d3ca1a4fa5a69ae04fd308df40d1b2e8")
- add_patches("<=0.7.34", "patches/fix-compile-on-mingw-w64.patch", "e6ba565110c918363a4499a4fc949f29777e0a189f192c231c81a47da821d21d")
- -- when using mingw, cmake cannot force export of all symbols.
- if is_plat("mingw", "msys", "cygwin") then
- add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
- end
- add_configs("tools", {description = "Build tools.", default = false, type = "boolean"})
- -- needs rpm, rpmdb, rpmio, rpmmisc, db
- add_configs("rpmdb", {description = "Build with rpm database support.", default = false, type = "boolean"})
- add_configs("rpmdb_librpm", {description = "Use librpm to access the rpm database.", default = false, type = "boolean"})
- add_configs("rpmdb_bdb", {description = "Use BerkeleyDB to access the rpm database.", default = false, type = "boolean"})
- add_configs("rpmdb_byrpmheader", {description = "Build with rpmdb Header support.", default = false, type = "boolean"})
- add_configs("rpmpkg", {description = "Build with rpm package support.", default = false, type = "boolean"})
- add_configs("rpmpkg_librpm", {description = "Use librpm to access rpm header information.", default = false, type = "boolean"})
- add_configs("pubkey", {description = "Build with pubkey support.", default = false, type = "boolean"})
- add_configs("rpmmd", {description = "Build with rpmmd repository support.", default = false, type = "boolean"})
- add_configs("rpm5", {description = "Enabling RPM 5 support.", default = false, type = "boolean"})
- add_configs("suserepo", {description = "Build with suse repository support.", default = false, type = "boolean"})
- add_configs("comps", {description = "Build with fedora comps support.", default = false, type = "boolean"})
- add_configs("helixrepo", {description = "Build with helix repository support.", default = false, type = "boolean"})
- add_configs("debian", {description = "Build with debian package/repository support.", default = false, type = "boolean"})
- add_configs("mdkrepo", {description = "Build with mandriva/mageia repository support.", default = false, type = "boolean"})
- add_configs("archrepo", {description = "Build with archlinux repository support.", default = false, type = "boolean"})
- add_configs("apk", {description = "Build with apk package/repository support.", default = false, type = "boolean"})
- add_configs("cudfrepo", {description = "Build with cudf repository support.", default = false, type = "boolean"})
- add_configs("haiku", {description = "Build with Haiku package support.", default = false, type = "boolean"})
- add_configs("conda", {description = "Build with conda dependency support.", default = false, type = "boolean"})
- add_configs("appdata", {description = "Build with AppStream appdata support.", default = false, type = "boolean"})
- add_configs("multi_semantics", {description = "Build with support for multiple distribution types.", default = false, type = "boolean"})
- add_configs("lzma_compression", {description = "Build with lzma/xz compression support.", default = false, type = "boolean"})
- add_configs("bzip2_compression", {description = "Build with bzip2 compression support.", default = false, type = "boolean"})
- add_configs("zstd_compression", {description = "Build with zstd compression support.", default = false, type = "boolean"})
- add_configs("zchunk_compression", {description = "Build with zchunk compression support.", default = false, type = "boolean"})
- add_configs("libxml2", {description = "Build with libxml2 instead of libexpat.", default = false, type = "boolean"})
- if not is_plat("windows", "mingw", "msys", "cygwin") then
- add_configs("cookieopen", {description = "Enable the use of stdio cookie opens.", default = true, type = "boolean"})
- else
- add_configs("cookieopen", {description = "Enable the use of stdio cookie opens.", default = false, type = "boolean", readonly = true})
- end
- add_configs("FEDORA", {description = "Building for Fedora.", default = false, type = "boolean"})
- add_configs("DEBIAN", {description = "Building for Debian.", default = false, type = "boolean"})
- add_configs("SUSE", {description = "Building for SUSE.", default = false, type = "boolean"})
- add_configs("ARCHLINUX", {description = "Building for Archlinux.", default = false, type = "boolean"})
- add_configs("MANDRIVA", {description = "Building for Mandriva.", default = false, type = "boolean"})
- add_configs("MAGEIA", {description = "Building for Mageia.", default = false, type = "boolean"})
- add_configs("HAIKU", {description = "Building for Haiku.", default = false, type = "boolean"}) -- needs haiku be, network, package.
- add_deps("cmake")
- if not is_subhost("windows") then
- add_deps("pkg-config")
- else
- add_deps("pkgconf")
- end
- on_load(function (package)
- local libxml2_or_expat_enabled = false
- if package:config("ARCHLINUX") then
- package:config_set("archrepo", true)
- end
- if package:config("MANDRIVA") then
- package:config_set("mdkrepo", true)
- end
- if package:config("MAGEIA") then
- package:config_set("mdkrepo", true)
- package:config_set("lzma_compression", true)
- end
- if package:config("DEBIAN") then
- package:config_set("debian", true)
- end
- if package:config("SUSE") then
- package:config_set("suserepo", true)
- package:config_set("helixrepo", true)
- end
- if package:config("rpm5") then
- package:config_set("rpmmd", true)
- end
- if package:config("archrepo") or package:config("debian") then
- package:config_set("lzma_compression", true)
- end
- if package:config("apk") then
- package:config_set("zstd_compression", true)
- end
- if package:config("rpmmd") or package:config("suserepo") or package:config("appdata") or package:config("comps") or package:config("helixrepo") or mdkrepo_enabled then
- libxml2_or_expat_enabled = true
- end
- package:add("deps", "zlib")
- if package:config("lzma_compression") then
- package:add("deps", "xz")
- end
- if package:config("bzip2_compression") then
- package:add("deps", "bzip2")
- end
- if package:config("zstd_compression") then
- package:add("deps", "zstd")
- end
- if package:config("zchunk_compression") then
- package:add("deps", "zchunk")
- end
- if libxml2_or_expat_enabled then
- if package:config("libxml2") then
- package:add("deps", "libxml2")
- else
- package:add("deps", "expat")
- end
- end
- end)
- on_install(function (package)
- local configs = {}
- table.insert(configs, "-DENABLE_STATIC=" .. (package:config("shared") and "OFF" or "ON"))
- table.insert(configs, "-DDISABLE_SHARED=" .. (package:config("shared") and "OFF" or "ON"))
- local options = {
- "rpmdb", "rpmdb_librpm", "rpmdb_bdb", "rpmdb_byrpmheader", "rpmpkg", "rpmpkg_librpm", "pubkey", "rpmmd", "rpm5",
- "suserepo", "comps", "helixrepo", "debian", "mdkrepo", "archrepo", "apk", "cudfrepo",
- "haiku", "conda", "appdata", "multi_semantics",
- "lzma_compression", "bzip2_compression", "zstd_compression", "zchunk_compression"
- }
- local no_prefix_options = {
- "multi_semantics", "rpm5"
- }
- for _, option in ipairs(options) do
- if package:config(option) then
- if not table.contains(no_prefix_options, option) then
- table.insert(configs, ("-DENABLE_%s=ON"):format(option:upper()))
- else
- table.insert(configs, ("-D%s=ON"):format(option:upper()))
- end
- end
- end
- table.insert(configs, "-DWITHOUT_COOKIEOPEN=" .. (package:config("cookieopen") and "OFF" or "ON"))
- table.insert(configs, "-DWITH_LIBXML2=" .. (package:config("libxml2") and "ON" or "OFF"))
- if package:config("zchunk_compression") then
- table.insert(configs, "-DWITH_SYSTEM_ZCHUNK=ON")
- end
- if not package:config("tools") then
- io.replace("CMakeLists.txt", "ADD_SUBDIRECTORY (tools)", "", {plain = true})
- end
- io.replace("CMakeLists.txt", "ADD_SUBDIRECTORY (examples)", "", {plain = true})
- io.replace("CMakeLists.txt", "ADD_SUBDIRECTORY (doc)", "", {plain = true})
- io.replace("ext/CMakeLists.txt", "repo_testcase.c", "", {plain = true})
- io.replace("ext/CMakeLists.txt", "testcase.c", "", {plain = true})
- io.replace("ext/CMakeLists.txt", "testcase.h", "", {plain = true})
- if package:config("cookieopen") then
- -- @see https://developer.android.com/ndk/guides/common-problems
- -- funopen() is sometimes not available when API < 24.
- if package:is_plat("android") and package:is_arch("armeabi-v7a") then
- local ndk_sdkver = package:toolchain("ndk"):config("ndk_sdkver")
- if ndk_sdkver and tonumber(ndk_sdkver) < 24 then
- io.replace("CMakeLists.txt", "ADD_DEFINITIONS (-D_FILE_OFFSET_BITS=64)", "", {plain = true})
- end
- end
- end
- import("package.tools.cmake").install(package, configs)
- end)
- on_test(function (package)
- assert(package:check_csnippets({test = [[
- void test() {
- Pool *pool = pool_create();
- }
- ]]}, {configs = {languages = "c99"}, includes = "solv/pool.h"}))
- end)
|