diff --git a/Meta/Azure/Caches.yml b/Meta/Azure/Caches.yml deleted file mode 100644 index ad9d1d6e504..00000000000 --- a/Meta/Azure/Caches.yml +++ /dev/null @@ -1,99 +0,0 @@ -parameters: - os: 'Linux' - arch: 'x86_64' - toolchain: 'gcc' - coverage: 'OFF' - download_cache_path: '' - ccache_version: 1 # Increment this number if CI has trouble with ccache. - serenity_ccache_path: '' - toolchain_ccache_path: '' - with_remote_data_caches: true - -steps: - - script: | - echo "##vso[task.setvariable variable=timestamp]$(date -u +"%Y%m%d%H%M_%S")" - displayName: 'Stamps' - - - ${{ if ne(parameters.arch, 'Lagom') }}: - - ${{ if eq(parameters.toolchain, 'clang') }}: - - task: Cache@2 - inputs: - key: '"toolchain" | "x86_64" | Toolchain/BuildClang.sh | Toolchain/Patches/llvm/*.patch | Toolchain/CMake/*.cmake | Userland/Libraries/LibC/**/*.h' - path: $(Build.SourcesDirectory)/Toolchain/Cache - displayName: 'Toolchain Prebuilt Cache' - - - script: | - source $(Build.SourcesDirectory)/Ports/llvm/package.sh - echo "##vso[task.setvariable variable=toolchain_version]$(echo ${version} | cut -d'.' -f1)" - displayName: 'Toolchain Version' - - - ${{ if eq(parameters.toolchain, 'gcc') }}: - - task: Cache@2 - inputs: - key: '"toolchain" | "${{ parameters.arch }}" | Toolchain/BuildGNU.sh | Toolchain/Patches/binutils/*.patch | Toolchain/Patches/gcc/*.patch | Userland/Libraries/LibC/**/*.h' - path: $(Build.SourcesDirectory)/Toolchain/Cache - displayName: 'Toolchain Prebuilt Cache' - - - script: | - source $(Build.SourcesDirectory)/Ports/gcc/package.sh - echo "##vso[task.setvariable variable=toolchain_version]$(echo ${version} | cut -d'.' -f1)" - displayName: 'Toolchain Version' - - - ${{ if ne(parameters.toolchain_ccache_path, '') }}: - - task: Cache@2 - inputs: - key: '"toolchain ccache" | "x86_64" | "${{ parameters.toolchain }}" | "$(toolchain_version)" | "${{ parameters.ccache_version }}" | "$(timestamp)"' - restoreKeys: | - "toolchain ccache" | "x86_64" | "${{ parameters.toolchain }}" | "$(toolchain_version)" | "${{ parameters.ccache_version }}" - path: ${{ parameters.toolchain_ccache_path }} - displayName: 'Toolchain Compiler Cache' - - - script: | - CCACHE_DIR=${{ parameters.toolchain_ccache_path }} ccache -M 0 - CCACHE_DIR=${{ parameters.toolchain_ccache_path }} ccache -s - CCACHE_DIR=${{ parameters.toolchain_ccache_path }} ccache -z - displayName: 'Configure Toolchain ccache' - - - ${{ if ne(parameters.serenity_ccache_path, '') }}: - - task: Cache@2 - inputs: - key: '"ccache" | "${{ parameters.os }}" | "${{ parameters.arch }}" | "${{ parameters.toolchain }}" | "${{ parameters.coverage }}" | "${{ parameters.ccache_version }}" | "$(timestamp)"' - restoreKeys: | - "ccache" | "${{ parameters.os }}" | "${{ parameters.arch }}" | "${{ parameters.toolchain }}" | "${{ parameters.coverage }}" | "${{ parameters.ccache_version }}" - path: ${{ parameters.serenity_ccache_path }} - displayName: 'Serenity Compiler Cache' - - - script: | - CCACHE_DIR=${{ parameters.serenity_ccache_path }} ccache -M 0 - - # Reset all ccache modification dates to a known epoch. This provides a baseline that we can prune against. - find ${{ parameters.serenity_ccache_path }} | tac | xargs touch -a -m -d "2018-10-10T09:53:07Z" - - CCACHE_DIR=${{ parameters.serenity_ccache_path }} ccache -s - CCACHE_DIR=${{ parameters.serenity_ccache_path }} ccache -z - displayName: 'Configure Serenity ccache' - - - ${{ if eq(parameters.with_remote_data_caches, true) }}: - - task: Cache@2 - inputs: - key: '"time_zone_data" | Meta/CMake/time_zone_data.cmake | "$(timestamp)"' - restoreKeys: | - "time_zone_data" | Meta/CMake/time_zone_data.cmake - path: $(Build.SourcesDirectory)/${{ parameters.download_cache_path }}/TZDB - displayName: 'TimeZoneData Cache' - - - task: Cache@2 - inputs: - key: '"unicode_data" | Meta/CMake/unicode_data.cmake | "$(timestamp)"' - restoreKeys: | - "unicode_data" | Meta/CMake/unicode_data.cmake - path: $(Build.SourcesDirectory)/${{ parameters.download_cache_path }}/UCD - displayName: 'UnicodeData Cache' - - - task: Cache@2 - inputs: - key: '"unicode_locale" | Meta/CMake/locale_data.cmake | "$(timestamp)"' - restoreKeys: | - "unicode_locale" | Meta/CMake/locale_data.cmake - path: $(Build.SourcesDirectory)/${{ parameters.download_cache_path }}/CLDR - displayName: 'UnicodeLocale Cache' diff --git a/Meta/Azure/Lagom.yml b/Meta/Azure/Lagom.yml deleted file mode 100644 index 8eddd7c0c31..00000000000 --- a/Meta/Azure/Lagom.yml +++ /dev/null @@ -1,218 +0,0 @@ -parameters: - os: 'Linux' - fuzzer: 'NoFuzz' - lagom_lints: false - host_cc: 'cc' - host_cxx: 'cxx' - -jobs: - - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}' - timeoutInMinutes: 0 # Setting to 0 means the maximum allowed timeout is used. - - variables: - - name: SERENITY_CCACHE_DIR - value: $(Build.SourcesDirectory)/.ccache - - - name: job_pool - ${{ if eq(parameters.os, 'Linux') }}: - value: ubuntu-22.04 - ${{ if or(eq(parameters.os, 'macOS'), eq(parameters.os, 'Android')) }}: - value: macos-13 - - - name: toolchain - ${{ if eq(parameters.fuzzer, 'Fuzz') }}: - value: '${{ parameters.host_cc }}_Fuzz' - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: - value: '${{ parameters.host_cc }}' - - - name: host-cc - value: '${{ parameters.host_cc }}' - - - name: host-cxx - value: '${{ parameters.host_cxx }}' - - - name: ndk_version # only relevant for Android - value: '26.1.10909125' - - pool: - vmImage: $(job_pool) - - steps: - - template: Setup.yml - parameters: - os: '${{ parameters.os }}' - - - template: Caches.yml - parameters: - os: '${{ parameters.os }}' - arch: 'Lagom' - toolchain: '$(toolchain)' - download_cache_path: 'Meta/Lagom/caches' - serenity_ccache_path: '$(SERENITY_CCACHE_DIR)' - with_remote_data_caches: true - ${{ if eq(parameters.os, 'macOS') }}: - ccache_version: 2 - - - ${{ if eq(parameters.os, 'Android') }}: - - script: | - yes | $ANDROID_SDK_ROOT/tools/bin/sdkmanager "ndk;$(ndk_version)" - displayName: "Install NDK $(ndk_version)" - - - script: | - # Install AVD files - echo "y" | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install 'system-images;android-30;google_apis;x86_64' - - # Create emulator - echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -n xamarin_android_emulator -k 'system-images;android-30;google_apis;x86_64' --force - - $ANDROID_HOME/emulator/emulator -list-avds - - echo "Starting emulator" - - # Start emulator in background - nohup $ANDROID_HOME/emulator/emulator -avd xamarin_android_emulator -no-snapshot > /dev/null 2>&1 & - $ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82' - $ANDROID_HOME/platform-tools/adb devices - echo "Emulator started" - displayName: "Start Android Emulator" - - - task: Gradle@2 - inputs: - workingDirectory: 'Ladybird/Android' - gradleWrapperFile: 'gradlew' - gradleOptions: '-Xmx3072m' - jdkVersionOption: '17' - jdkArchitectureOption: 'x64' - publishJUnitResults: true - testResultsFiles: '**/TEST-*.xml' - tasks: 'connectedAndroidTest' - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - SERENITY_CACHE_DIR: "$(Build.SourcesDirectory)/Meta/Lagom/caches" - displayName: "Build and Test in Android Emulator" - - - ${{ elseif eq(parameters.fuzzer, 'Fuzz') }}: - - script: | - set -e - cmake -GNinja -B tools-build \ - -DBUILD_LAGOM=OFF \ - -DENABLE_LAGOM_CCACHE=ON \ - -DCMAKE_INSTALL_PREFIX=tool-install \ - -DCMAKE_C_COMPILER=$(host-cc) \ - -DCMAKE_CXX_COMPILER=$(host-cxx) \ - -Dpackage=LagomTools - ninja -C tools-build install - cmake -GNinja -B Build \ - -DBUILD_LAGOM=ON \ - -DENABLE_LAGOM_CCACHE=ON \ - -DENABLE_FUZZERS_LIBFUZZER=ON \ - -DENABLE_ADDRESS_SANITIZER=ON \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_PREFIX_PATH=tool-install - displayName: 'Create Build Environment' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - ${{ elseif eq(parameters.fuzzer, 'NoFuzz') }}: - - script: | - set -e - cmake -GNinja -B Build \ - -DBUILD_LAGOM=ON \ - -DENABLE_LAGOM_CCACHE=ON \ - -DENABLE_LAGOM_LADYBIRD=ON \ - -DINCLUDE_WASM_SPEC_TESTS=ON \ - -DWASM_SPEC_TEST_SKIP_FORMATTING=ON \ - -DENABLE_UNDEFINED_SANITIZER=ON \ - -DENABLE_ADDRESS_SANITIZER=ON \ - -DCMAKE_C_COMPILER=$(host-cc) \ - -DCMAKE_CXX_COMPILER=$(host-cxx) - displayName: 'Create Build Environment' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom - env: - PATH: '$(PATH):$(Build.SourcesDirectory)/wabt-1.0.23/bin' - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - ${{ if not(eq(parameters.os, 'Android')) }}: - - script: | - set -e - cmake --build . - cmake --install . --strip --prefix $(Build.SourcesDirectory)/Meta/Lagom/Install - displayName: 'Build' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - ${{ if and(eq(parameters.fuzzer, 'NoFuzz'), not(eq(parameters.os, 'Android')) ) }}: - - script: | - set -e - ninja test - displayName: 'Test' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build - timeoutInMinutes: 60 - env: - SERENITY_SOURCE_DIR: '$(Build.SourcesDirectory)' - CTEST_OUTPUT_ON_FAILURE: 1 - ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1:detect_stack_use_after_return=1:allocator_may_return_null=1' - UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1' - TESTS_ONLY: 1 - - # Detect if any test dumps exist, which enables the next step to publish them as an artifact. - - bash: | - if [[ -d $(Build.SourcesDirectory)/Meta/Lagom/Build/Ladybird/test-dumps ]]; then - echo "##vso[task.setvariable variable=TestDumpsExist]true" - fi - condition: always() - - - publish: $(Build.SourcesDirectory)/Meta/Lagom/Build/Ladybird/test-dumps - artifact: 'test-dumps-${{ parameters.os }}-${{ parameters.fuzzer }}' - condition: eq(variables.TestDumpsExist, 'true') - - - ${{ if and(eq(parameters.fuzzer, 'NoFuzz'), eq(parameters.os, 'Linux') ) }}: - - script: | - ./run.sh --remove-wpt-repository - displayName: 'WPT' - workingDirectory: $(Build.SourcesDirectory)/Tests/LibWeb/WPT/ - env: - SERENITY_SOURCE_DIR: '$(Build.SourcesDirectory)' - QT_QPA_PLATFORM: 'offscreen' - - - ${{ if and(eq(parameters.fuzzer, 'NoFuzz'), eq(parameters.os, 'macOS') ) }}: - - script: | - set -e - cmake -B Build -DENABLE_QT=ON - displayName: 'Enable the Ladybird Qt chrome' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - script: | - set -e - cmake --build . - displayName: 'Build Ladybird Qt chrome' - workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - ${{ if eq(parameters.lagom_lints, true) }}: - - script: | - set -e - ./Meta/check-markdown.sh - ./Meta/lint-gml-format.sh - git ls-files '*.ipc' | xargs ./Meta/Lagom/Build/bin/IPCMagicLinter - displayName: 'Run lints that require Lagom' - workingDirectory: $(Build.SourcesDirectory)/ - env: - MARKDOWN_CHECK_BINARY: ./Meta/Lagom/Build/bin/markdown-check - GML_FORMAT: ./Meta/Lagom/Build/bin/gml-format - # FIXME: enable detect_stack_use_after_return=1 #7420 - ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1:detect_stack_use_after_return=0:allocator_may_return_null=1' - UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1' - - - script: | - CCACHE_DIR='$(SERENITY_CCACHE_DIR)' ccache --evict-older-than 1d - displayName: 'Prune obsolete ccache files' - - - script: | - CCACHE_DIR='$(SERENITY_CCACHE_DIR)' ccache -s - displayName: 'Cache Stats' diff --git a/Meta/Azure/Serenity.yml b/Meta/Azure/Serenity.yml deleted file mode 100644 index 1ab71e0957d..00000000000 --- a/Meta/Azure/Serenity.yml +++ /dev/null @@ -1,137 +0,0 @@ -parameters: - arch: 'x86_64' - coverage: 'OFF' - -jobs: - - job: 'Serenity_Clang_${{ parameters.arch }}_Coverage_${{ parameters.coverage }}' - timeoutInMinutes: 0 # Setting to 0 means the maximum allowed timeout is used. - - variables: - - name: LLVM_CCACHE_DIR - value: $(Build.SourcesDirectory)/Toolchain/.ccache - - name: SERENITY_CCACHE_DIR - value: $(Build.SourcesDirectory)/.ccache - - pool: - vmImage: ubuntu-22.04 - - steps: - - template: Setup.yml - parameters: - os: 'Serenity' - - - template: Caches.yml - parameters: - arch: '${{ parameters.arch }}' - coverage: '${{ parameters.coverage }}' - toolchain: 'clang' - download_cache_path: 'Build/caches' - toolchain_ccache_path: '$(LLVM_CCACHE_DIR)' - serenity_ccache_path: '$(SERENITY_CCACHE_DIR)' - - - script: ./Toolchain/BuildClang.sh --ci - displayName: Build Toolchain - env: - TRY_USE_LOCAL_TOOLCHAIN: 'y' - - - script: | - mkdir -p Build/superbuild - displayName: 'Create Build Directory' - - - script: | - set -e - cmake -S Meta/CMake/Superbuild -B Build/superbuild -GNinja \ - -DSERENITY_ARCH=${{ parameters.arch }} \ - -DSERENITY_TOOLCHAIN=Clang \ - -DENABLE_UNDEFINED_SANITIZER=ON \ - -DUNDEFINED_BEHAVIOR_IS_FATAL=ON \ - -DENABLE_USERSPACE_COVERAGE_COLLECTION=${{ parameters.coverage }} \ - -DDUMP_REGIONS_ON_CRASH=ON \ - -DENABLE_PCI_IDS_DOWNLOAD=OFF \ - -DENABLE_USB_IDS_DOWNLOAD=OFF \ - -DCMAKE_C_COMPILER=gcc-13 \ - -DCMAKE_CXX_COMPILER=g++-13 - displayName: 'Create Build Environment' - workingDirectory: $(Build.SourcesDirectory) - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - script: | - set -e - cmake --build ./Build/superbuild - displayName: 'Build' - workingDirectory: $(Build.SourcesDirectory) - env: - CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - - - script: | - set -e - ninja install && ninja qemu-image - displayName: 'Create RootFS' - workingDirectory: $(Build.SourcesDirectory)/Build/${{ parameters.arch }}clang - - - script: | - set -e - ninja run - - echo "##[group]Verify Output File" - mkdir fsmount - sudo mount -t ext2 -o loop,rw _disk_image fsmount - - echo "Results: " - sudo cat fsmount/home/anon/test-results.log - echo "##[endgroup]" - - if ! sudo grep -q "Failed: 0" fsmount/home/anon/test-results.log - then - echo "##[error]:^( Tests failed, failing job" - exit 1 - fi - sudo umount fsmount - displayName: 'Test' - workingDirectory: $(Build.SourcesDirectory)/Build/${{ parameters.arch }}clang - timeoutInMinutes: 60 - env: - SERENITY_QEMU_CPU: 'max,vmx=off' - SERENITY_KERNEL_CMDLINE: 'graphics_subsystem_mode=off panic=shutdown system_mode=self-test' - SERENITY_RUN: 'ci' - - - script: | - [ ! -e debug.log ] || cat debug.log - displayName: 'Print Target Logs' - workingDirectory: $(Build.SourcesDirectory)/Build/${{ parameters.arch }}clang - condition: failed() - - - ${{ if eq(parameters.coverage, 'ON') }}: - - script: | - set -e - ./Meta/analyze-qemu-coverage.sh - displayName: 'Aggregate Coverage Results' - workingDirectory: $(Build.SourcesDirectory) - env: - SERENITY_TOOLCHAIN: Clang - SERENITY_ARCH: ${{ parameters.arch }} - - # FIXME: Deploy the static html pages somewhere - # FIXME: Alter script to also (instead?) produce a raw coverage.txt file for ingestion into sonar cloud - # Note: tmp_profile_data/Coverage.profdata has the entire combined profile data, but creating the raw txt requires - # all of the instrumented binaries and the profdata file. - - ${{ if eq(parameters.coverage, 'ON') }}: - - task: PublishPipelineArtifact@1 - inputs: - targetPath: $(Build.SourcesDirectory)/Build/${{ parameters.arch }}clang/reports - artifactType: 'pipeline' - artifactName: 'Coverage' - - - script: | - echo "##[section]Serenity Cache" - CCACHE_DIR='$(SERENITY_CCACHE_DIR)' ccache --evict-older-than 1d - displayName: 'Prune obsolete ccache files' - - - script: | - echo "##[section]Toolchain Cache" - CCACHE_DIR='$(LLVM_CCACHE_DIR)' ccache -s - - echo "##[section]Serenity Cache" - CCACHE_DIR='$(SERENITY_CCACHE_DIR)' ccache -s - displayName: 'Cache Stats' diff --git a/Meta/Azure/Setup.yml b/Meta/Azure/Setup.yml deleted file mode 100644 index b6812d61684..00000000000 --- a/Meta/Azure/Setup.yml +++ /dev/null @@ -1,41 +0,0 @@ -parameters: - os: 'Linux' - -steps: - - checkout: self - persistCredentials: true - - - ${{ if eq(parameters.os, 'Serenity') }}: - - script: | - set -e - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' - sudo apt-get update - sudo apt-get install clang-format-18 ccache e2fsprogs gcc-13 g++-13 libstdc++-13-dev libmpfr-dev libmpc-dev ninja-build qemu-utils qemu-system-i386 unzip lld - displayName: 'Install Dependencies' - - - ${{ if eq(parameters.os, 'Linux') }}: - - script: | - set -e - sudo apt-get purge -y clang-13 clang-14 clang-15 gcc-10 gcc-11 gcc-12 - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main' - sudo apt-get update - sudo apt-get install ccache clang-18 clang++-18 lld-18 ninja-build unzip qt6-base-dev qt6-tools-dev-tools libqt6svg6-dev qt6-multimedia-dev libgl1-mesa-dev libpulse-dev libssl-dev libegl1-mesa-dev - - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 - sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100 - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100 - - wget https://github.com/WebAssembly/wabt/releases/download/1.0.23/wabt-1.0.23-ubuntu.tar.gz - tar -xzf ./wabt-1.0.23-ubuntu.tar.gz - rm ./wabt-1.0.23-ubuntu.tar.gz - displayName: 'Install Dependencies' - - - ${{ if or(eq(parameters.os, 'macOS'), eq(parameters.os, 'Android') ) }}: - # macOS ships an ancient Bash 3.x by default - - script: | - set -e - brew install coreutils bash ninja wabt ccache unzip qt llvm@18 - displayName: 'Install Dependencies' diff --git a/README.md b/README.md index d44674d54e1..29cf6e35ab4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ SerenityOS is a graphical Unix-like operating system for x86-64 computers. Ladybird is a cross-platform independent web browser built from SerenityOS components. [![GitHub Actions Status](https://github.com/SerenityOS/serenity/workflows/Build,%20lint,%20and%20test/badge.svg)](https://github.com/SerenityOS/serenity/actions?query=workflow%3A"Build%2C%20lint%2C%20and%20test") -[![Azure DevOps Status](https://dev.azure.com/SerenityOS/SerenityOS/_apis/build/status/CI?branchName=master)](https://dev.azure.com/SerenityOS/SerenityOS/_build/latest?definitionId=1&branchName=master) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/serenity.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:serenity) [![Sonar Cube Static Analysis](https://sonarcloud.io/api/project_badges/measure?project=SerenityOS_serenity&metric=ncloc)](https://sonarcloud.io/dashboard?id=SerenityOS_serenity) [![Discord](https://img.shields.io/discord/830522505605283862.svg?logo=discord&logoColor=white&logoWidth=20&labelColor=7289DA&label=Discord&color=17cf48)](https://discord.gg/serenityos)