internal/rosa/package: migrate cmake
All checks were successful
Test / Create distribution (push) Successful in 1m5s
Test / Sandbox (push) Successful in 2m47s
Test / ShareFS (push) Successful in 3m42s
Test / Hakurei (push) Successful in 3m53s
Test / Sandbox (race detector) (push) Successful in 5m34s
Test / Hakurei (race detector) (push) Successful in 6m30s
Test / Flake checks (push) Successful in 1m22s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-05-19 18:42:54 +09:00
parent a770d62b9b
commit 6e8bfa6c4c
7 changed files with 159 additions and 143 deletions

View File

@@ -4,116 +4,10 @@ import (
"path/filepath" "path/filepath"
"slices" "slices"
"strings" "strings"
"hakurei.app/internal/pkg"
) )
func (t Toolchain) newCMake() (pkg.Artifact, string) { // CMake is the package used by [CMakeHelper].
const ( var CMake = H("cmake")
version = "4.3.2"
checksum = "6QylwRVKletndTSkZTV2YBRwgd_9rUVgav_QW23HpjUgV21AVYZOUOal8tdBDmO7"
)
return t.NewPackage("cmake", version, newFromGitHubRelease(
"Kitware/CMake",
"v"+version,
"cmake-"+version+".tar.gz",
checksum,
pkg.TarGzip,
), &PackageAttr{
// test suite expects writable source tree
Writable: true,
// expected to be writable in the copy made during bootstrap
Chmod: true,
Patches: []KV{
{"bootstrap-test-no-openssl", `diff --git a/Tests/BootstrapTest.cmake b/Tests/BootstrapTest.cmake
index 137de78bc1..b4da52e664 100644
--- a/Tests/BootstrapTest.cmake
+++ b/Tests/BootstrapTest.cmake
@@ -9,7 +9,7 @@ if(NOT nproc EQUAL 0)
endif()
message(STATUS "running bootstrap: ${bootstrap} ${ninja_arg} ${parallel_arg}")
execute_process(
- COMMAND ${bootstrap} ${ninja_arg} ${parallel_arg}
+ COMMAND ${bootstrap} ${ninja_arg} ${parallel_arg} -- -DCMAKE_USE_OPENSSL=OFF
WORKING_DIRECTORY "${bin_dir}"
RESULT_VARIABLE result
)
`},
{"disable-broken-tests-musl", `diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 2ead810437..f85cbb8b1c 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -384,7 +384,6 @@ if(BUILD_TESTING)
add_subdirectory(CMakeLib)
endif()
add_subdirectory(CMakeOnly)
- add_subdirectory(RunCMake)
add_subdirectory(FindPackageModeMakefileTest)
@@ -528,9 +527,6 @@ if(BUILD_TESTING)
-DCMake_TEST_CUDA:BOOL=${CMake_TEST_CUDA}
-DCMake_INSTALL_NAME_TOOL_BUG:BOOL=${CMake_INSTALL_NAME_TOOL_BUG}
)
- ADD_TEST_MACRO(ExportImport ExportImport)
- set_property(TEST ExportImport APPEND
- PROPERTY LABELS "CUDA")
ADD_TEST_MACRO(Unset Unset)
ADD_TEST_MACRO(PolicyScope PolicyScope)
ADD_TEST_MACRO(EmptyLibrary EmptyLibrary)
@@ -624,7 +620,6 @@ if(BUILD_TESTING)
# run test for BundleUtilities on supported platforms/compilers
if((MSVC OR
MINGW OR
- CMAKE_SYSTEM_NAME MATCHES "Linux" OR
CMAKE_SYSTEM_NAME MATCHES "Darwin")
AND NOT CMAKE_GENERATOR STREQUAL "Watcom WMake")
@@ -3095,10 +3090,6 @@ if(BUILD_TESTING)
"${CMake_SOURCE_DIR}/Tests/CTestTestFdSetSize/test.cmake.in"
"${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake"
@ONLY ESCAPE_QUOTES)
- add_test(CTestTestFdSetSize ${CMAKE_CTEST_COMMAND}
- -S "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake" -j20 -V --timeout 120
- --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/testOutput.log"
- )
if(CMAKE_TESTS_CDASH_SERVER)
set(regex "^([^:]+)://([^/]+)(.*)$")
`},
},
}, &MakeHelper{
OmitDefaults: true,
ConfigureName: "/usr/src/cmake/bootstrap",
Configure: []KV{
{"prefix", "/system"},
{"parallel", jobsE},
{"--"},
{"-DCMAKE_USE_OPENSSL", "OFF"},
{"-DCMake_TEST_NO_NETWORK", "ON"},
},
Check: []string{
"CTEST_OUTPUT_ON_FAILURE=1",
"CTEST_PARALLEL_LEVEL=128",
"test",
},
},
KernelHeaders,
), version
}
func init() {
native.mustRegister(Toolchain.newCMake, &Metadata{
Name: "cmake",
Description: "cross-platform, open-source build system",
Website: "https://cmake.org/",
ID: 306,
})
}
// CMakeHelper is the [CMake] build system helper. // CMakeHelper is the [CMake] build system helper.
type CMakeHelper struct { type CMakeHelper struct {

View File

@@ -2,17 +2,29 @@ package rosa
import "hakurei.app/internal/pkg" import "hakurei.app/internal/pkg"
func (t Toolchain) newNinja() (pkg.Artifact, string) { // Ninja is the build system used by [CMakeHelper] and [MesonHelper].
var Ninja = H("ninja")
func init() {
const ( const (
version = "1.13.2" version = "1.13.2"
checksum = "ygKWMa0YV2lWKiFro5hnL-vcKbc_-RACZuPu0Io8qDvgQlZ0dxv7hPNSFkt4214v" checksum = "ygKWMa0YV2lWKiFro5hnL-vcKbc_-RACZuPu0Io8qDvgQlZ0dxv7hPNSFkt4214v"
) )
_, python := t.Load(Python) meta := Metadata{
_, bash := t.Load(Bash) Name: "ninja",
return t.New("ninja-"+version, 0, []pkg.Artifact{ Description: "a small build system with a focus on speed",
python, Website: "https://ninja-build.org",
bash, Version: version,
}, nil, nil, `
ID: 2089,
}
native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
_, python := t.Load(Python)
_, bash := t.Load(Bash)
return &meta, t.New(meta.Name+"-"+version, 0, []pkg.Artifact{
python,
bash,
}, nil, nil, `
cd "$(mktemp -d)" cd "$(mktemp -d)"
python3 /usr/src/ninja/configure.py \ python3 /usr/src/ninja/configure.py \
--verbose \ --verbose \
@@ -24,26 +36,18 @@ python3 /usr/src/ninja/configure.py \
mkdir -p /work/system/bin/ mkdir -p /work/system/bin/
cp ninja /work/system/bin/ cp ninja /work/system/bin/
`, pkg.Path(AbsUsrSrc.Append("googletest"), false, `, pkg.Path(AbsUsrSrc.Append("googletest"), false,
newFromGitHubRelease( newFromGitHubRelease(
"google/googletest", "google/googletest",
"v1.16.0", "v1.16.0",
"googletest-1.16.0.tar.gz", "googletest-1.16.0.tar.gz",
"NjLGvSbgPy_B-y-o1hdanlzEzaYeStFcvFGxpYV3KYlhrWWFRcugYhM3ZMzOA9B_", "NjLGvSbgPy_B-y-o1hdanlzEzaYeStFcvFGxpYV3KYlhrWWFRcugYhM3ZMzOA9B_",
pkg.TarGzip, pkg.TarGzip,
)), pkg.Path(AbsUsrSrc.Append("ninja"), true, t.NewPatchedSource( )), pkg.Path(AbsUsrSrc.Append("ninja"), true, t.NewPatchedSource(
"ninja", version, newFromGitHub( meta.Name, version, newFromGitHub(
"ninja-build/ninja", "ninja-build/ninja",
"v"+version, "v"+version,
checksum, checksum,
), false, ), false,
))), version )))
}
func init() {
native.mustRegister(Toolchain.newNinja, &Metadata{
Name: "ninja",
Description: "a small build system with a focus on speed",
Website: "https://ninja-build.org/",
ID: 2089,
}) })
} }

View File

@@ -0,0 +1,13 @@
diff --git a/Tests/BootstrapTest.cmake b/Tests/BootstrapTest.cmake
index 137de78bc1..b4da52e664 100644
--- a/Tests/BootstrapTest.cmake
+++ b/Tests/BootstrapTest.cmake
@@ -9,7 +9,7 @@ if(NOT nproc EQUAL 0)
endif()
message(STATUS "running bootstrap: ${bootstrap} ${ninja_arg} ${parallel_arg}")
execute_process(
- COMMAND ${bootstrap} ${ninja_arg} ${parallel_arg}
+ COMMAND ${bootstrap} ${ninja_arg} ${parallel_arg} -- -DCMAKE_USE_OPENSSL=OFF
WORKING_DIRECTORY "${bin_dir}"
RESULT_VARIABLE result
)

View File

@@ -0,0 +1,41 @@
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 2ead810437..f85cbb8b1c 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -384,7 +384,6 @@ if(BUILD_TESTING)
add_subdirectory(CMakeLib)
endif()
add_subdirectory(CMakeOnly)
- add_subdirectory(RunCMake)
add_subdirectory(FindPackageModeMakefileTest)
@@ -528,9 +527,6 @@ if(BUILD_TESTING)
-DCMake_TEST_CUDA:BOOL=${CMake_TEST_CUDA}
-DCMake_INSTALL_NAME_TOOL_BUG:BOOL=${CMake_INSTALL_NAME_TOOL_BUG}
)
- ADD_TEST_MACRO(ExportImport ExportImport)
- set_property(TEST ExportImport APPEND
- PROPERTY LABELS "CUDA")
ADD_TEST_MACRO(Unset Unset)
ADD_TEST_MACRO(PolicyScope PolicyScope)
ADD_TEST_MACRO(EmptyLibrary EmptyLibrary)
@@ -624,7 +620,6 @@ if(BUILD_TESTING)
# run test for BundleUtilities on supported platforms/compilers
if((MSVC OR
MINGW OR
- CMAKE_SYSTEM_NAME MATCHES "Linux" OR
CMAKE_SYSTEM_NAME MATCHES "Darwin")
AND NOT CMAKE_GENERATOR STREQUAL "Watcom WMake")
@@ -3095,10 +3090,6 @@ if(BUILD_TESTING)
"${CMake_SOURCE_DIR}/Tests/CTestTestFdSetSize/test.cmake.in"
"${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake"
@ONLY ESCAPE_QUOTES)
- add_test(CTestTestFdSetSize ${CMAKE_CTEST_COMMAND}
- -S "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/test.cmake" -j20 -V --timeout 120
- --output-log "${CMake_BINARY_DIR}/Tests/CTestTestFdSetSize/testOutput.log"
- )
if(CMAKE_TESTS_CDASH_SERVER)
set(regex "^([^:]+)://([^/]+)(.*)$")

View File

@@ -0,0 +1,45 @@
package cmake {
description = "cross-platform, open-source build system";
website = "https://cmake.org";
anitya = 306;
version* = "4.3.2";
source = remoteGitHubRelease {
suffix = "Kitware/CMake";
tag = "v"+version;
name = "cmake-"+version+".tar.gz";
checksum = "6QylwRVKletndTSkZTV2YBRwgd_9rUVgav_QW23HpjUgV21AVYZOUOal8tdBDmO7";
compress = gzip;
};
patches = [
"bootstrap-test-no-openssl.patch",
"disable-broken-tests-musl.patch",
];
// test suite expects writable source tree
writable = true;
// expected to be writable in the copy made during bootstrap
chmod = true;
exec = make {
omitDefaults = true;
configureName = "/usr/src/cmake/bootstrap";
configure = {
"prefix": "/system";
"parallel": jobsE;
"--";
"-DCMAKE_USE_OPENSSL": "OFF";
"-DCMake_TEST_NO_NETWORK": "ON";
};
check = [
"CTEST_OUTPUT_ON_FAILURE=1",
"CTEST_PARALLEL_LEVEL=128",
"test",
];
};
inputs = [ kernel-headers ];
}

View File

@@ -423,6 +423,12 @@ func (s *S) getFrame() azalea.Frame {
identArch = k(s.arch) identArch = k(s.arch)
) )
enumCompress := map[unique.Handle[azalea.Ident]]any{
k("uncompressed"): uint32(pkg.TarUncompressed),
k("gzip"): uint32(pkg.TarGzip),
k("bzip2"): uint32(pkg.TarBzip2),
}
s.frame.Val = map[unique.Handle[azalea.Ident]]any{ s.frame.Val = map[unique.Handle[azalea.Ident]]any{
k("linuxArch"): s.linuxArch(), k("linuxArch"): s.linuxArch(),
@@ -492,11 +498,7 @@ func (s *S) getFrame() azalea.Frame {
v = pkg.NewHTTPGetTar(nil, url, mustDecode(checksum), compress) v = pkg.NewHTTPGetTar(nil, url, mustDecode(checksum), compress)
set = true set = true
return return
}, V: map[unique.Handle[azalea.Ident]]any{ }, V: enumCompress},
k("uncompressed"): uint32(pkg.TarUncompressed),
k("gzip"): uint32(pkg.TarGzip),
k("bzip2"): uint32(pkg.TarBzip2),
}},
k("remoteFile"): {F: func( k("remoteFile"): {F: func(
args azalea.FArgs, args azalea.FArgs,
@@ -601,6 +603,25 @@ func (s *S) getFrame() azalea.Frame {
return return
}}, }},
k("remoteGitHubRelease"): {F: func(
args azalea.FArgs,
) (v any, set bool, err error) {
var suffix, tag, name, checksum string
var compress uint32
if err = args.Apply(map[unique.Handle[azalea.Ident]]any{
k("suffix"): &suffix,
k("tag"): &tag,
k("name"): &name,
k("checksum"): &checksum,
k("compress"): &compress,
}); err != nil {
return
}
v = newFromGitHubRelease(suffix, tag, name, checksum, compress)
set = true
return
}, V: enumCompress},
// high-level helpers // high-level helpers
k("make"): {F: func( k("make"): {F: func(

View File

@@ -19,7 +19,6 @@ var (
Binutils = H("binutils") Binutils = H("binutils")
Bison = H("bison") Bison = H("bison")
Bzip2 = H("bzip2") Bzip2 = H("bzip2")
CMake = H("cmake")
Connman = H("connman") Connman = H("connman")
Coreutils = H("coreutils") Coreutils = H("coreutils")
Curl = H("curl") Curl = H("curl")
@@ -111,7 +110,6 @@ var (
NSSCACert = H("nss-cacert") NSSCACert = H("nss-cacert")
Ncurses = H("ncurses") Ncurses = H("ncurses")
Nettle = H("nettle") Nettle = H("nettle")
Ninja = H("ninja")
OpenSSL = H("openssl") OpenSSL = H("openssl")
P11Kit = H("p11-kit") P11Kit = H("p11-kit")
PCRE2 = H("pcre2") PCRE2 = H("pcre2")