bpftool.lua 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. function load(package)
  2. package:add("deps", "libcap", "elfutils", "zlib", {host = true})
  3. package:add("deps", "python 3.x", {kind = "binary"})
  4. package:addenv("PATH", "sbin")
  5. end
  6. function install(package)
  7. local cflags = {}
  8. local ldflags = {}
  9. for _, dep in ipairs(package:librarydeps()) do
  10. local fetchinfo = dep:fetch()
  11. if fetchinfo then
  12. for _, includedir in ipairs(fetchinfo.includedirs or fetchinfo.sysincludedirs) do
  13. table.insert(cflags, "-isystem " .. includedir)
  14. end
  15. for _, linkdir in ipairs(fetchinfo.linkdirs) do
  16. table.insert(ldflags, "-L" .. linkdir)
  17. end
  18. for _, link in ipairs(fetchinfo.links) do
  19. table.insert(ldflags, "-l" .. link)
  20. end
  21. end
  22. end
  23. local configs = {}
  24. table.insert(configs, "EXTRA_CFLAGS=" .. table.concat(cflags, " "))
  25. table.insert(configs, "LDFLAGS=" .. table.concat(ldflags, " "))
  26. os.cd("tools/bpf/bpftool")
  27. io.replace("Makefile", "prefix ?= /usr/local", "prefix ?= " .. package:installdir(), {plain = true})
  28. io.replace("Makefile", "bash_compdir ?= /usr/share", "bash_compdir ?= " .. package:installdir("share"), {plain = true})
  29. io.replace("Makefile", "-lelf -lz", "-lelf -lzstd -lz", {plain = true})
  30. io.replace("Makefile", "$(Q)$(LLVM_STRIP) -g $@", "echo skip", {plain = true})
  31. import("package.tools.make").build(package, configs)
  32. os.vrunv("make", table.join("install", configs))
  33. end
  34. function test(package)
  35. os.vrun("bpftool --version")
  36. end