فهرست منبع

scripts/test.lua: ignore version sort (#8811)

choyy 4 روز پیش
والد
کامیت
e1fa9c84a0
2فایلهای تغییر یافته به همراه47 افزوده شده و 25 حذف شده
  1. 8 8
      packages/o/openexr/xmake.lua
  2. 39 17
      scripts/test.lua

+ 8 - 8
packages/o/openexr/xmake.lua

@@ -15,15 +15,15 @@ package("openexr")
     add_versions("v3.3.0", "58b00f50d2012f3107573c4b7371f70516d2972c2b301a50925e1b4a60a7be6f")
     add_versions("v3.2.4", "81e6518f2c4656fdeaf18a018f135e96a96e7f66dbe1c1f05860dd94772176cc")
     add_versions("v3.2.3", "f3f6c4165694d5c09e478a791eae69847cadb1333a2948ca222aa09f145eba63")
-    add_versions("v2.5.3", "6a6525e6e3907715c6a55887716d7e42d09b54d2457323fcee35a0376960bebf")
-    add_versions("v2.5.5", "59e98361cb31456a9634378d0f653a2b9554b8900f233450f2396ff495ea76b3")
-    add_versions("v2.5.7", "36ecb2290cba6fc92b2ec9357f8dc0e364b4f9a90d727bf9a57c84760695272d")
-    add_versions("v3.1.0", "8c2ff765368a28e8210af741ddf91506cef40f1ed0f1a08b6b73bb3a7faf8d93")
-    add_versions("v3.1.1", "045254e201c0f87d1d1a4b2b5815c4ae54845af2e6ec0ab88e979b5fdb30a86e")
-    add_versions("v3.1.3", "6f70a624d1321319d8269a911c4032f24950cde52e76f46e9ecbebfcb762f28c")
-    add_versions("v3.1.4", "cb019c3c69ada47fe340f7fa6c8b863ca0515804dc60bdb25c942c1da886930b")
-    add_versions("v3.1.5", "93925805c1fc4f8162b35f0ae109c4a75344e6decae5a240afdfce25f8a433ec")
     add_versions("v3.2.1", "61e175aa2203399fb3c8c2288752fbea3c2637680d50b6e306ea5f8ffdd46a9b")
+    add_versions("v3.1.5", "93925805c1fc4f8162b35f0ae109c4a75344e6decae5a240afdfce25f8a433ec")
+    add_versions("v3.1.4", "cb019c3c69ada47fe340f7fa6c8b863ca0515804dc60bdb25c942c1da886930b")
+    add_versions("v3.1.3", "6f70a624d1321319d8269a911c4032f24950cde52e76f46e9ecbebfcb762f28c")
+    add_versions("v3.1.1", "045254e201c0f87d1d1a4b2b5815c4ae54845af2e6ec0ab88e979b5fdb30a86e")
+    add_versions("v3.1.0", "8c2ff765368a28e8210af741ddf91506cef40f1ed0f1a08b6b73bb3a7faf8d93")
+    add_versions("v2.5.7", "36ecb2290cba6fc92b2ec9357f8dc0e364b4f9a90d727bf9a57c84760695272d")
+    add_versions("v2.5.5", "59e98361cb31456a9634378d0f653a2b9554b8900f233450f2396ff495ea76b3")
+    add_versions("v2.5.3", "6a6525e6e3907715c6a55887716d7e42d09b54d2457323fcee35a0376960bebf")
 
     add_patches("3.4.0", "patches/3.4.0/openjph-include.patch", "d8eb99fd9f064821134ee61c4bfb0e5dff4be557a21698365361250f13e82e53")
     add_patches("3.3.3", "patches/3.3.3/mingw32.patch", "17cbe9d0cbc0c670a846454893c1a427590789cf6bf052a4d800d1263e0faa9a")

+ 39 - 17
scripts/test.lua

@@ -261,8 +261,23 @@ function _package_is_supported(argv, packagename)
     end
 end
 
+function append_package_version(packages, line)
+    local version = line:match("add_versions%(\"(.-)\"") or line:match("package:add%(\"versions\",%s*\"(.-)\"")
+    if version then
+        if version:find(":", 1, true) then
+            version = version:split(":")[2]
+        end
+        if #packages > 0 and version then
+            local lastpackage = packages[#packages]
+            local splitinfo = lastpackage:split("%s+")
+            table.insert(packages, splitinfo[1] .. " " .. version)
+        end
+    end
+end
+
 function get_modified_packages()
-    local packages = {}
+    local new_packages = {}
+    local old_packages = {}
     local diff = os.iorun("git --no-pager diff HEAD^")
     for _, line in ipairs(diff:split("\n")) do
         if line:startswith("+++ b/") then
@@ -270,27 +285,34 @@ function get_modified_packages()
             if file:startswith("packages") then
                 assert(file == file:lower(), "%s must be lower case!", file)
                 local package = file:match("packages/%w/(%S-)/")
-                table.insert(packages, package)
+                table.insert(new_packages, package)
+                table.insert(old_packages, package)
             end
         elseif line:startswith("+") and (line:find("add_versions", 1, true) or line:find("package:add(\"versions\"", 1, true)) then
-            local version = line:match("add_versions%(\"(.-)\"") or line:match("package:add%(\"versions\",%s*\"(.-)\"")
-            if version then
-                if version:find(":", 1, true) then
-                    version = version:split(":")[2]
-                end
-                if #packages > 0 and version then
-                    local lastpackage = packages[#packages]
-                    local splitinfo = lastpackage:split("%s+")
-                    if #splitinfo > 1 then
-                        table.insert(packages, splitinfo[1] .. " " .. version)
-                    else
-                        packages[#packages] = splitinfo[1] .. " " .. version
-                    end
-                end
+            append_package_version(new_packages, line)
+        elseif line:startswith("-") and (line:find("add_versions", 1, true) or line:find("package:add(\"versions\"", 1, true)) then
+            append_package_version(old_packages, line)
+        end
+    end
+    if #old_packages > 0 then
+        table.remove_if(old_packages, function (_, package)
+            local splitinfo = package:split("%s+")
+            return #splitinfo == 1
+        end)
+        table.remove_if(new_packages, function (_, package)
+            return table.contains(old_packages, package)
+        end)
+        -- {
+        --     "pkgname", <-- remove this
+        --     "pkgname pkgver"
+        -- }
+        for i = #new_packages - 1, 1, -1 do
+            if new_packages[i + 1]:startswith(new_packages[i] .. " ") then
+                table.remove(new_packages, i)
             end
         end
     end
-    return table.unique(packages)
+    return table.unique(new_packages)
 end
 
 -- @see https://github.com/xmake-io/xmake-repo/issues/6940