summaryrefslogtreecommitdiff
path: root/Meta/Azure
AgeCommit message (Collapse)Author
2022-01-22CI: Fail Lagom linters step as soon as any linter failsIdan Horowitz
This prevents linters from covering the failure of previous linters by overwriting the error code that Azure reads at the end of the step.
2022-01-14CI: Disallow test failures on macOS Lagom :^)Timothy Flynn
2022-01-10Toolchain+CI: Link LLVM with LLD if availableDaniel Bertalan
According to most benchmarks, LLD is faster than GNU ld and the macOS linker, so let's use it if possible in order to speed up the toolchain build.
2022-01-10CI: Hash only relevant files for the key of the compiler cacheDaniel Bertalan
In the last few commits, a second patch was added to the LLVM toolchain, and it no longer uses our binutils patch. This commit changes the CI cache keys accordingly, in order to prevent unnecessary rebuilds of both toolchains when only one is changed. The Clang toolchain's cache now only takes into account patches that begin with `llvm`, and the GNU toolchain excludes those from the hash calculation. We now also hash the two CMake cache files that we use for building LLVM and its runtime libraries.
2022-01-08CI: Add a cache for the IANA time zone database filesTimothy Flynn
2022-01-07CI: Extract toolchain ccache in the Serenity build stageTimothy Flynn
The toolchain is built in a previous stage, but once the Serenity stage has begun, we have to re-pull the toolchain from the Azure cache. There is a timing window where a cache-busting change can be commited between these steps; to alleviate the affect this has, pull the toolchain ccache so that the build only takes a few minutes instead of a couple hours.
2022-01-07Meta+CI+Documentation: Bump host gcc requirement up to gcc 11Andrew Kaster
Bump macOS CI version to macOS 11 while we're here.
2021-11-05Meta: Run IPC magic number linter during CI and pre-commitBen Wiederhake
2021-10-25Kernel+SystemServer: Change bootmode to system_modeBen Wiederhake
'bootmode' now only controls which set of services are started by SystemServer, so it is more appropriate to rename it to system_mode, and no longer validate it in the Kernel.
2021-10-25Kernel: Separate panic behavior from bootmodeBen Wiederhake
Bootmode used to control panic behavior and SystemServer. This patch factors panic behavior control into a separate flag.
2021-10-25Kernel: Separate framebuffers from bootmodeBen Wiederhake
Bootmode used to control framebuffers, panic behavior, and SystemServer. This patch factors framebuffer control into a separate flag. Note that the combination 'bootmode=self-test fbdev=on' leads to unexpected behavior, which can only be fixed in a later commit.
2021-10-18CI: Build the Clang toolchain a single time for both onboard pipelinesTimothy Flynn
As of the Clang 13 upgrade, we only need to build the toolchain once and can use that toolchain for both x86_64 and i686. To do this, this breaks the main Azure configuration into 3 "stages" (Lagom, Toolchain, and Serenity), where the Serenity stage depends on the Toolchain stage. This has the added benefit of uploading a new prebuilt toolchain cache sooner than before, which should help alleviate pressure from PRs.
2021-10-10Meta: Run check-markdown as part of 'Azure Linux NoFuzz'Ben Wiederhake
2021-09-21CI: Create a secondary ccache for the Clang toolchain buildTimothy Flynn
We bust the prebuilt cache when any header in e.g. LibC changes. Doing a full toolchain rebuild probably isn't necessary, so this adds a separate ccache to speed up toolchain builds.
2021-09-21CI: Set ccache path based on template parameterTimothy Flynn
Currently, the templated steps in Caches.yml rely on the environment variable CCACHE_DIR being set to configure the ccache location. To prepare for multiple ccache paths, do not rely on this environment variable because only one ccache can use it at a time. Instead, pass the path into the template as a parameter.
2021-09-15Meta: Switch to a SuperBuild that splits host and target buildsAndrew Kaster
Replace the old logic where we would start with a host build, and swap all the CMake compiler and target variables underneath it to trick CMake into building for Serenity after we configured and built the Lagom code generators. The SuperBuild creates two ExternalProjects, one for Lagom and one for Serenity. The Serenity project depends on the install stage for the Lagom build. The SuperBuild also generates a CMakeToolchain file for the Serenity build to use that replaces the old toolchain file that was only used for Ports. To ensure that code generators are rebuilt when core libraries such as AK and LibCore are modified, developers will need to direct their manual `ninja` invocations to the SuperBuild's binary directory instead of the Serenity binary directory. This commit includes warning coalescing and option style cleanup for the affected CMakeLists in the Kernel, top level, and runtime support libraries. A large part of the cleanup is replacing USE_CLANG_TOOLCHAIN with the proper CMAKE_CXX_COMPILER_ID variable, which will no longer be confused by a host clang compiler.
2021-08-28Meta+LibUnicode: Move unicode_data helper to Meta/CMakeAndrew Kaster
Moving this helper CMake file to the centralized Meta/CMake folder helps to get a better grasp on what extra files are required for the build, and what files are generated. While we're at it, don't use add_compile_definitions for ENABLE_UNICODE_DATA, which only needs to be seen by LibUnicode sources.
2021-08-26CI: Ensure unzip is installed on the buildersTimothy Flynn
The CLDR database comes in a .zip file.
2021-08-26CI: Skip Unicode caches for Fuzzer buildTimothy Flynn
There is a bit of a race here between the Fuzzer and non-Fuzzer Lagom builds. If the Unicode caches are empty, and the Fuzzer build completes first, then the UCD and CLDR directories will be empty or won't exist. Skip handling the Unicode caches for this build.
2021-08-26CI: Cache downloaded Unicode CLDR databaseTimothy Flynn
2021-08-20CI: Set on-target test timeout to 60 minutesTimothy Flynn
The on-target pipelines have a timeout of 6 hours to allow time for a clean toolchain + Serenity build. Tests should time out much sooner than that though.
2021-08-20CI: Include a timestamp in the Azure ccache keyTimothy Flynn
Caches on Azure are immutable - so if a cache changes, but its key does not, then the cache is not updated. Include a timestamp in the ccache key so that we always push an updated cache from the master branch. Then use a subkey without the timestamp to pull the cache. We use a similar trick on GitHub Actions.
2021-08-18CI: Ensure relevant patch files are part of Toolchain cache hashAndrew Kaster
We were over-hashing for the GNU build on GitHub Actions by including the LLVM patch as well. The GNU Toolchain doesn't care about our LLVM patches. For Azure, fix the inversion of the condition for which jobs check which Build*.sh script, and add the Toolchain patch files to the cache hash calculation.
2021-08-18CI: Print on-target debug logs when the tests failTimothy Flynn
2021-08-17CI: Build Lagom with fuzzing on AzureTimothy Flynn
2021-08-17CI: Build and test SerenityOS with the Clang toolchain on AzureTimothy Flynn
2021-08-17CI: Use Azure caching for Lagom buildTimothy Flynn
Adds a compiler cache and a cache for the UCD files.
2021-08-16CI: Build and test Lagom (non-fuzzer) on AzureTimothy Flynn