Parcourir la source

add linux tools (#316)

ruki il y a 4 ans
Parent
commit
5eb522fd50
3 fichiers modifiés avec 104 ajouts et 0 suppressions
  1. 15 0
      packages/l/libcap/xmake.lua
  2. 2 0
      packages/l/libelf/xmake.lua
  3. 87 0
      packages/l/linux-tools/xmake.lua

+ 15 - 0
packages/l/libcap/xmake.lua

@@ -0,0 +1,15 @@
+package("libcap")
+
+    set_homepage("https://sites.google.com/site/fullycapable/")
+    set_description("User-space interfaces to POSIX 1003.1e capabilities")
+
+    set_urls("https://mirrors.edge.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-$(version).tar.xz")
+    add_versions("2.27", "dac1792d0118bee6aae6ba7fb93ff1602c6a9bda812fd63916eee1435b9c486a")
+
+    on_install("linux", function (package)
+        os.vrunv("make", {"install", "prefix=" .. package:installdir(), "lib=lib", "RAISE_SETFCAP=no"})
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("cap_init", {includes = "sys/capability.h"}))
+    end)

+ 2 - 0
packages/l/libelf/xmake.lua

@@ -6,6 +6,8 @@ package("libelf")
     set_urls("https://dl.bintray.com/homebrew/mirror/libelf-$(version).tar.gz")
     add_versions("0.8.13", "591a9b4ec81c1f2042a97aa60564e0cb79d041c52faa7416acb38bc95bd2c76d")
 
+    add_includedirs("include", "include/libelf")
+
     on_install("linux", function (package)
         local configs = {"--disable-debug",
                          "--disable-dependency-tracking",

+ 87 - 0
packages/l/linux-tools/xmake.lua

@@ -0,0 +1,87 @@
+package("linux-tools")
+
+    set_homepage("https://kernel.org/")
+    set_description("Tools and libraries of the Linux kernel")
+    set_license("GPL-2.0-only")
+
+    add_urls("https://cdn.kernel.org/pub/linux/kernel/$(version).tar.xz",
+             "https://mirrors.edge.kernel.org/pub/linux/kernel/$(version).tar.xz",
+             {version = function (version)
+                 return "v" .. version:major() .. ".x/linux-" .. version
+             end})
+    add_versions("4.20.9", "b5de28fd594a01edacd06e53491ad0890293e5fbf98329346426cf6030ef1ea6")
+    add_versions("5.0.8",  "11908044e8cce1e093141f8da594708d45d05d0381676ae9aa3d8aeaf7c85435")
+    add_versions("5.9.16", "b0d7abae88e5f91893627c645e680a95c818defd1b4fcaf3e2afb4b2b6b4ab86")
+
+    add_configs("bpf",     { description = "Enable bpf tools and libraries.", default = true, type = "boolean"})
+
+    on_load(function (package)
+        if package:config("bpf") then
+            package:add("deps", "libcap", "libelf", "zlib")
+            package:addenv("PATH", "sbin")
+            if package:is_plat("linux") and package:is_arch("x86_64") then
+                package:add("links", "bpf")
+                package:add("linkdirs", "lib64")
+            end
+        end
+    end)
+
+    on_install("linux", function (package)
+        import("package.tools.make")
+
+        local cflags = {}
+        local ldflags = {}
+        for _, dep in ipairs(package:orderdeps()) do
+            local fetchinfo = dep:fetch()
+            if fetchinfo then
+                for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
+                    table.insert(cflags, "-isystem " .. includedir)
+                end
+                for _, linkdir in ipairs(fetchinfo.linkdirs) do
+                    table.insert(ldflags, "-L" .. linkdir)
+                end
+                for _, link in ipairs(fetchinfo.links) do
+                    table.insert(ldflags, "-l" .. link)
+                end
+            end
+        end
+
+        local configs = {}
+        table.insert(configs, "EXTRA_CFLAGS=" .. table.concat(cflags, " "))
+        table.insert(configs, "LDFLAGS=" .. table.concat(ldflags, " "))
+
+        --[[
+        if package:config("libbpf") then
+            local oldir = os.cd("tools/lib/bpf")
+            io.replace("Makefile", "prefix ?= /usr/local", "prefix ?= " .. package:installdir(), {plain = true})
+            make.build(package, configs)
+            os.vrunv("make", table.join("install", configs))
+            if package:is_plat("linux") and package:is_arch("x86_64") then
+                local lib64 = path.join(package:installdir(), "lib64")
+                if os.isdir(lib64) then
+                    package:add("links", "bpf")
+                    package:add("linkdirs", "lib64")
+                end
+            end
+            os.cd(oldir)
+        end]]
+
+        if package:config("bpf") then
+            local oldir = os.cd("tools/bpf/bpftool")
+            io.replace("Makefile", "prefix ?= /usr/local", "prefix ?= " .. package:installdir(), {plain = true})
+            io.replace("Makefile", "bash_compdir ?= /usr/share", "bash_compdir ?= " .. package:installdir("share"), {plain = true})
+            make.build(package, configs)
+            os.vrunv("make", table.join("install", configs))
+            os.cd("../../lib/bpf")
+            io.replace("Makefile", "prefix ?= /usr/local", "prefix ?= " .. package:installdir(), {plain = true})
+            os.vrunv("make", table.join("install", configs))
+            os.cd(oldir)
+        end
+    end)
+
+    on_test(function (package)
+        if package:config("bpf") then
+            assert(package:has_cfuncs("bpf_object__open", {includes = "bpf/libbpf.h"}))
+            os.vrun("bpftool --version")
+        end
+    end)