Bladeren bron

openjdk: improve on_fetch for ubuntu (#6991)

* openjdk: improve on_fetch for ubuntu

* improve arch
star9029 4 maanden geleden
bovenliggende
commit
c8e8ffc793
2 gewijzigde bestanden met toevoegingen van 34 en 5 verwijderingen
  1. 30 3
      packages/o/openjdk/fetch.lua
  2. 4 2
      packages/o/openjdk/xmake.lua

+ 30 - 3
packages/o/openjdk/fetch.lua

@@ -1,9 +1,24 @@
+import("lib.detect.find_tool")
+
 function main(package, opt)
 function main(package, opt)
     if not opt.system then
     if not opt.system then
         return
         return
     end
     end
 
 
-    local java = package:find_tool("java", opt)
+    local paths = {}
+    if is_host("linux") then
+        for _, ver in ipairs({"8", "11", "17", "21"}) do
+            local dir = format("/usr/lib/jvm/java-%s-openjdk-amd64", ver)
+            if os.isdir(dir) then
+                table.insert(paths, dir)
+            end
+        end
+    end
+
+    opt.version = true
+    opt.paths = table.join2(table.wrap(opt.paths), paths)
+
+    local java = find_tool("java", opt)
     if not java then
     if not java then
         return
         return
     end
     end
@@ -25,8 +40,20 @@ function main(package, opt)
         result.linkdirs = path.join(sdkdir, "lib")
         result.linkdirs = path.join(sdkdir, "lib")
         result.links = {"jvm", "jawt"}
         result.links = {"jvm", "jawt"}
         result.bindirs = {path.join(sdkdir, "bin"), path.join(sdkdir, "bin/server")}
         result.bindirs = {path.join(sdkdir, "bin"), path.join(sdkdir, "bin/server")}
+        package:addenv("PATH", result.bindirs)
+        return result
+    elseif is_host("linux") then
+        local sdkdir = paths[1]
+        if not sdkdir then
+            return
+        end
+
+        result.includedirs = {path.join(sdkdir, "include"), path.join(sdkdir, "include/linux")}
+        result.linkdirs = {path.join(sdkdir, "lib"), path.join(sdkdir, "lib/server")}
+        result.links = {"java", "jli", "jvm"}
+        result.bindirs = path.join(sdkdir, "bin")
+        package:addenv("LD_LIBRARY_PATH", result.linkdirs)
         return result
         return result
+    elseif is_host("macosx") then
     end
     end
-    -- TODO: linux, mac
-    -- ubuntu: /usr/lib/jvm/java-11-openjdk-amd64
 end
 end

+ 4 - 2
packages/o/openjdk/xmake.lua

@@ -6,7 +6,7 @@ package("openjdk")
 
 
     -- https://learn.microsoft.com/en-us/java/openjdk/download
     -- https://learn.microsoft.com/en-us/java/openjdk/download
     if is_host("windows") then
     if is_host("windows") then
-        if os.arch() == "x64" then
+        if is_arch("x64", "x86_64") or os.arch() == "x64" then
             add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-windows-x64.zip")
             add_urls("https://aka.ms/download-jdk/microsoft-jdk-$(version)-windows-x64.zip")
 
 
             add_versions("21.0.5", "12e42c2c572a111f38e2a9e044afc50dbdac850349a4d4bb26808ed33119a9cd")
             add_versions("21.0.5", "12e42c2c572a111f38e2a9e044afc50dbdac850349a4d4bb26808ed33119a9cd")
@@ -38,8 +38,10 @@ package("openjdk")
     end
     end
 
 
     add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
     add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
-    add_configs("runtimes", {description = "Set compiler runtimes.", default = "MD", readonly = true})
     add_configs("debug", {description = "Enable debug symbols.", default = false, type = "boolean", readonly = true})
     add_configs("debug", {description = "Enable debug symbols.", default = false, type = "boolean", readonly = true})
+    if is_plat("windows") then
+        add_configs("runtimes", {description = "Set compiler runtimes.", default = "MD", readonly = true})
+    end
 
 
     if is_plat("linux") then
     if is_plat("linux") then
         add_extsources("pacman::jdk-openjdk", "apt::default-jdk")
         add_extsources("pacman::jdk-openjdk", "apt::default-jdk")