diff --git a/.github/workflows/generate-release-yml.rs b/.github/workflows/generate-release-yml.rs index 7a5b0c7f6ef5..24bffc90f7b4 100755 --- a/.github/workflows/generate-release-yml.rs +++ b/.github/workflows/generate-release-yml.rs @@ -33,12 +33,12 @@ fn parse_pattern(pattern: &String) -> Option<(Pattern, Vec<&'static str>)> { if pattern.contains("%UBUNTU_LTS_VERSION%") { Some(( Box::new(move |p: &str, s: &str| p.replace("%UBUNTU_LTS_VERSION%", s)), - vec!["20", "22"], + vec!["20", "22", "24"], )) } else if pattern.contains("%FEDORA_STABLE_VERSION%") { Some(( Box::new(move |p: &str, s: &str| p.replace("%FEDORA_STABLE_VERSION%", s)), - vec!["36", "37", "38"], + vec!["39", "40", "41"], )) } else { None diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e7548d4fda3..2d7601cdb701 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,10 +5,9 @@ name: release push: tags: - v* - permissions: - contents: write # to create a release - + contents: write + packages: write jobs: prepare: runs-on: ubuntu-latest @@ -33,17 +32,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: "." build-args: UBUNTU_VERSION=20.04 @@ -54,86 +53,107 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: "." build-args: UBUNTU_VERSION=22.04 file: watchman/build/package/ubuntu-env/Dockerfile push: true tags: "${{ format('ghcr.io/{0}/watchman-build-env-ubuntu-22:latest', github.repository) }}" - docker-fedora-36: + docker-ubuntu-24: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: "." - build-args: FEDORA_VERSION=36 + build-args: UBUNTU_VERSION=24.04 + file: watchman/build/package/ubuntu-env/Dockerfile + push: true + tags: "${{ format('ghcr.io/{0}/watchman-build-env-ubuntu-24:latest', github.repository) }}" + docker-fedora-39: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: "${{ github.repository_owner }}" + password: "${{ secrets.GITHUB_TOKEN }}" + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: "." + build-args: FEDORA_VERSION=39 file: watchman/build/package/fedora-env/Dockerfile push: true - tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-36:latest', github.repository) }}" - docker-fedora-37: + tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-39:latest', github.repository) }}" + docker-fedora-40: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: "." - build-args: FEDORA_VERSION=37 + build-args: FEDORA_VERSION=40 file: watchman/build/package/fedora-env/Dockerfile push: true - tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-37:latest', github.repository) }}" - docker-fedora-38: + tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-40:latest', github.repository) }}" + docker-fedora-41: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: "${{ github.repository_owner }}" password: "${{ secrets.GITHUB_TOKEN }}" - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: "." - build-args: FEDORA_VERSION=38 + build-args: FEDORA_VERSION=41 file: watchman/build/package/fedora-env/Dockerfile push: true - tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-38:latest', github.repository) }}" + tags: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-41:latest', github.repository) }}" clone-build-package-ubuntu-20: needs: - prepare @@ -145,7 +165,7 @@ jobs: - name: Fix HOME run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: "./install-system-packages.sh" - name: Fix dubious ownership @@ -176,7 +196,7 @@ jobs: - name: Fix HOME run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: "./install-system-packages.sh" - name: Fix dubious ownership @@ -196,18 +216,49 @@ jobs: asset_path: /_debs/watchman.deb asset_name: "watchman_ubuntu22.04_${{ needs.prepare.outputs.release }}.deb" asset_content_type: application/x-deb - clone-build-package-fedora-36: + clone-build-package-ubuntu-24: + needs: + - prepare + - docker-ubuntu-24 + runs-on: ubuntu-latest + container: + image: "${{ format('ghcr.io/{0}/watchman-build-env-ubuntu-24:latest', github.repository) }}" + steps: + - name: Fix HOME + run: echo HOME=/root >> $GITHUB_ENV + - name: Checkout code + uses: actions/checkout@v4 + - name: Install system dependencies + run: "./install-system-packages.sh" + - name: Fix dubious ownership + run: git config --global --add safe.directory /__w/watchman/watchman + - name: Build Watchman binaries + run: "./autogen.sh" + - name: Make .deb + env: + UBUNTU_VERSION: "24.04" + run: "./watchman/build/package/make-deb.sh" + - name: Upload .deb + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + uses: actions/upload-release-asset@v1 + with: + upload_url: "${{ needs.prepare.outputs.upload_url }}" + asset_path: /_debs/watchman.deb + asset_name: "watchman_ubuntu24.04_${{ needs.prepare.outputs.release }}.deb" + asset_content_type: application/x-deb + clone-build-package-fedora-39: needs: - prepare - - docker-fedora-36 + - docker-fedora-39 runs-on: ubuntu-latest container: - image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-36:latest', github.repository) }}" + image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-39:latest', github.repository) }}" steps: - name: Fix HOME run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: "./install-system-packages.sh" - name: Fix dubious ownership @@ -217,7 +268,7 @@ jobs: - name: Make .rpm id: make_rpm env: - FEDORA_VERSION: "36" + FEDORA_VERSION: "39" run: "./watchman/build/package/make-rpm.sh" - name: Upload .rpm env: @@ -228,18 +279,18 @@ jobs: asset_path: "${{ steps.make_rpm.outputs.rpm_path }}" asset_name: "${{ steps.make_rpm.outputs.rpm_name }}" asset_content_type: application/x-rpm - clone-build-package-fedora-37: + clone-build-package-fedora-40: needs: - prepare - - docker-fedora-37 + - docker-fedora-40 runs-on: ubuntu-latest container: - image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-37:latest', github.repository) }}" + image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-40:latest', github.repository) }}" steps: - name: Fix HOME run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: "./install-system-packages.sh" - name: Fix dubious ownership @@ -249,7 +300,7 @@ jobs: - name: Make .rpm id: make_rpm env: - FEDORA_VERSION: "37" + FEDORA_VERSION: "40" run: "./watchman/build/package/make-rpm.sh" - name: Upload .rpm env: @@ -260,18 +311,18 @@ jobs: asset_path: "${{ steps.make_rpm.outputs.rpm_path }}" asset_name: "${{ steps.make_rpm.outputs.rpm_name }}" asset_content_type: application/x-rpm - clone-build-package-fedora-38: + clone-build-package-fedora-41: needs: - prepare - - docker-fedora-38 + - docker-fedora-41 runs-on: ubuntu-latest container: - image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-38:latest', github.repository) }}" + image: "${{ format('ghcr.io/{0}/watchman-build-env-fedora-41:latest', github.repository) }}" steps: - name: Fix HOME run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: "./install-system-packages.sh" - name: Fix dubious ownership @@ -281,7 +332,7 @@ jobs: - name: Make .rpm id: make_rpm env: - FEDORA_VERSION: "38" + FEDORA_VERSION: "41" run: "./watchman/build/package/make-rpm.sh" - name: Upload .rpm env: @@ -297,7 +348,7 @@ jobs: needs: prepare runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build watchman run: "python3 build/fbcode_builder/getdeps.py build --src-dir=. watchman --project-install-prefix watchman:/usr/local" - name: Copy artifacts @@ -318,9 +369,9 @@ jobs: mac-build: continue-on-error: true needs: prepare - runs-on: macOS-10.15 + runs-on: macOS-11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build watchman run: "SDKROOT=$(xcrun --show-sdk-path --sdk macosx11.1) python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. watchman --project-install-prefix watchman:/usr/local" - name: Copy artifacts @@ -343,7 +394,7 @@ jobs: needs: prepare runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Export boost environment run: echo BOOST_ROOT=%BOOST_ROOT_1_69_0% >> %GITHUB_ENV% shell: cmd diff --git a/.github/workflows/release.yml.in b/.github/workflows/release.yml.in index 91c83436a3a6..e6310b6d39bd 100644 --- a/.github/workflows/release.yml.in +++ b/.github/workflows/release.yml.in @@ -34,20 +34,20 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: . build-args: "UBUNTU_VERSION=%UBUNTU_LTS_VERSION%.04" @@ -59,20 +59,20 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: . build-args: "FEDORA_VERSION=%FEDORA_STABLE_VERSION%" @@ -94,7 +94,7 @@ jobs: run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: ./install-system-packages.sh @@ -134,7 +134,7 @@ jobs: run: echo HOME=/root >> $GITHUB_ENV - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install system dependencies run: ./install-system-packages.sh @@ -166,7 +166,7 @@ jobs: needs: prepare runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build watchman run: python3 build/fbcode_builder/getdeps.py build --src-dir=. watchman --project-install-prefix watchman:/usr/local - name: Copy artifacts @@ -188,11 +188,10 @@ jobs: mac-build: continue-on-error: true needs: prepare - # This release targets macOS 11.1 (Big Sur), which is available in - # Xcode 12.4 on the macOS-10.15 image. - runs-on: macOS-10.15 + # This release targets macOS 11.1 (Big Sur) + runs-on: macOS-11 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Build watchman run: SDKROOT=$(xcrun --show-sdk-path --sdk macosx11.1) python3 build/fbcode_builder/getdeps.py --allow-system-packages build --src-dir=. watchman --project-install-prefix watchman:/usr/local - name: Copy artifacts @@ -216,7 +215,7 @@ jobs: needs: prepare runs-on: windows-2019 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Export boost environment run: "echo BOOST_ROOT=%BOOST_ROOT_1_69_0% >> %GITHUB_ENV%" shell: cmd diff --git a/build/fbcode_builder/patches/zlib_dont_build_more_than_needed.patch b/build/fbcode_builder/patches/zlib_dont_build_more_than_needed.patch index fee6755261fe..f88df67e7627 100644 --- a/build/fbcode_builder/patches/zlib_dont_build_more_than_needed.patch +++ b/build/fbcode_builder/patches/zlib_dont_build_more_than_needed.patch @@ -1,34 +1,34 @@ -diff -Naur ../zlib-1.3.1/CMakeLists.txt ./CMakeLists.txt ---- ../zlib-1.3.1/CMakeLists.txt 2024-01-22 10:32:37.000000000 -0800 -+++ ./CMakeLists.txt 2024-01-23 13:14:09.870289968 -0800 -@@ -149,10 +149,8 @@ - set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) - endif(MINGW) - --add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) -+add_library(zlib ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) - target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) --add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) --target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) - set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) - set_target_properties(zlib PROPERTIES SOVERSION 1) - -@@ -169,7 +167,7 @@ - - if(UNIX) - # On unix-like platforms the library is almost always called libz -- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) -+ set_target_properties(zlib PROPERTIES OUTPUT_NAME z) - if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX)) - set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") - endif() -@@ -179,7 +177,7 @@ - endif() - - if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) -- install(TARGETS zlib zlibstatic -+ install(TARGETS zlib - RUNTIME DESTINATION "${INSTALL_BIN_DIR}" - ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" - LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) +diff -Naur ../zlib-1.3.1/CMakeLists.txt ./CMakeLists.txt +--- ../zlib-1.3.1/CMakeLists.txt 2024-01-22 10:32:37.000000000 -0800 ++++ ./CMakeLists.txt 2024-01-23 13:14:09.870289968 -0800 +@@ -149,10 +149,8 @@ + set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) + endif(MINGW) + +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib PROPERTIES SOVERSION 1) + +@@ -169,7 +167,7 @@ + + if(UNIX) + # On unix-like platforms the library is almost always called libz +- set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z) ++ set_target_properties(zlib PROPERTIES OUTPUT_NAME z) + if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX)) + set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") + endif() +@@ -179,7 +177,7 @@ + endif() + + if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) +- install(TARGETS zlib zlibstatic ++ install(TARGETS zlib + RUNTIME DESTINATION "${INSTALL_BIN_DIR}" + ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" + LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) \ No newline at end of file