mirror of
https://github.com/clangd/clangd.git
synced 2025-07-18 13:40:22 +00:00
Compare commits
No commits in common. "master" and "snapshot_20210422" have entirely different histories.
master
...
snapshot_2
7
.github/ISSUE_TEMPLATE/bug_report.md
vendored
7
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -13,18 +13,11 @@ For hints on what information is helpful, see: https://clangd.llvm.org/troublesh
|
|||||||
If you can, provide a minimal chunk of code that shows the problem (either inline, or attach it if larger).
|
If you can, provide a minimal chunk of code that shows the problem (either inline, or attach it if larger).
|
||||||
|
|
||||||
**Logs**
|
**Logs**
|
||||||
|
|
||||||
Please attach the clangd stderr log if you can. (Usually available from the editor)
|
Please attach the clangd stderr log if you can. (Usually available from the editor)
|
||||||
If possible, run with `--log=verbose` - note that the logs will include the contents of open files!
|
If possible, run with `--log=verbose` - note that the logs will include the contents of open files!
|
||||||
If this is a crash, try to put `llvm-symbolizer` on your PATH per the troubleshooting instructions.
|
If this is a crash, try to put `llvm-symbolizer` on your PATH per the troubleshooting instructions.
|
||||||
(If you're using Windows, place the associated PDB file (debug symbols) in the same directory as
|
|
||||||
clangd.exe and rerun again. For official releases, download symbols from the
|
|
||||||
[release page](https://github.com/clangd/clangd/releases).)
|
|
||||||
|
|
||||||
**System information**
|
**System information**
|
||||||
|
|
||||||
Output of `clangd --version`:
|
Output of `clangd --version`:
|
||||||
|
|
||||||
Editor/LSP plugin:
|
Editor/LSP plugin:
|
||||||
|
|
||||||
Operating system:
|
Operating system:
|
||||||
|
4
.github/ISSUE_TEMPLATE/config.yml
vendored
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,4 +0,0 @@
|
|||||||
contact_links:
|
|
||||||
- name: Questions and discussions
|
|
||||||
url: https://github.com/clangd/clangd/discussions
|
|
||||||
about: Usage questions, ideas and proposals
|
|
270
.github/workflows/autobuild.yaml
vendored
270
.github/workflows/autobuild.yaml
vendored
@ -1,195 +1,75 @@
|
|||||||
# Workflow to build binaries and release them.
|
# Workflow to build binaries for a release.
|
||||||
# Triggered by the schedule or manual dispatch, which might include
|
# Triggered by release creation, which should include `llvm-project@<full-sha>`.
|
||||||
# `<owner/llvm-project>@<full-sha>`.
|
|
||||||
#
|
#
|
||||||
# Because the build takes more than an hour, our GITHUB_TOKEN credentials may
|
# Because the build takes more than an hour, our GITHUB_TOKEN credentials may
|
||||||
# expire. A token `secrets.RELEASE_TOKEN` must exist with public_repo scope.
|
# expire. A token `secrets.RELEASE_TOKEN` must exist with public_repo scope.
|
||||||
name: Build release binaries
|
name: Build release binaries
|
||||||
env:
|
|
||||||
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
|
|
||||||
on:
|
on:
|
||||||
# Run weekly on sunday at 21:37 UTC (arbitrary)
|
release:
|
||||||
schedule:
|
types: created
|
||||||
- cron: '37 21 * * SUN'
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
commit:
|
|
||||||
description: 'Commit to build from'
|
|
||||||
required: true
|
|
||||||
repo:
|
|
||||||
description: 'Repository to build from'
|
|
||||||
required: true
|
|
||||||
default: 'llvm/llvm-project'
|
|
||||||
release_name:
|
|
||||||
description: 'Release name'
|
|
||||||
required: true
|
|
||||||
tag:
|
|
||||||
description: 'Tag name'
|
|
||||||
required: true
|
|
||||||
description:
|
|
||||||
description: 'Release description'
|
|
||||||
required: true
|
|
||||||
jobs:
|
jobs:
|
||||||
schedule_environment:
|
prepare:
|
||||||
name: Create default build environment
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event_name == 'schedule' }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install deps
|
- name: Find LLVM commit
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install jq
|
perl -ne 'print "LLVM_REPO=$1\nLLVM_COMMIT=$2\n" if /(\w+\/llvm-project)@([[:xdigit:]]{40,})/' > commit.env <<EOF
|
||||||
- name: Clone scripts
|
${{ github.event.release.body }}
|
||||||
uses: actions/checkout@v2
|
EOF
|
||||||
# Choose the commit to build a release from.
|
- name: Check LLVM commit was founud
|
||||||
#
|
run: grep LLVM_REPO commit.env
|
||||||
# We want to avoid unbuildable revisions: choose the last green from CI.
|
- name: Mark as draft
|
||||||
# FIXME: The criteria should be some consistent set of buildbots passing.
|
|
||||||
# Use clangd/actions/pick after
|
|
||||||
# https://github.com/ramasilveyra/last-successful-gh-commit/issues/2 has
|
|
||||||
# been addressed.
|
|
||||||
- name: Get commit hash for LLVM head
|
|
||||||
run: >
|
run: >
|
||||||
COMMIT=$(curl --fail --show-error
|
curl --fail --show-error -XPATCH
|
||||||
"https://api.github.com/repos/llvm/llvm-project/commits/main" |
|
"-HAuthorization: Bearer ${{ secrets.RELEASE_TOKEN }}"
|
||||||
jq ".sha" -r)
|
"https://api.github.com/repos/${{ github.repository }}/releases/${{ github.event.release.id }}"
|
||||||
|
"-d" '{"draft": true}'
|
||||||
echo "LLVM_COMMIT=$COMMIT" >> $GITHUB_ENV
|
- name: Persist release info
|
||||||
- name: Compute release info
|
uses: actions/upload-artifact@v1
|
||||||
run: |
|
|
||||||
echo "RELEASE_COMMIT_SHORT=$(printf '%.12s' ${{ env.LLVM_COMMIT }})" >> $GITHUB_ENV
|
|
||||||
echo "RELEASE_DATE=$(date -u +%Y%m%d)" >> $GITHUB_ENV
|
|
||||||
echo "LLVM_REPO=llvm/llvm-project" >> commit.env
|
|
||||||
echo "LLVM_COMMIT=${{ env.LLVM_COMMIT }}" >> commit.env
|
|
||||||
- name: Use date as the tag name
|
|
||||||
run: >
|
|
||||||
echo "TAG_NAME=snapshot_${{ env.RELEASE_DATE }}" >> commit.env
|
|
||||||
- name: Use date and release commit as release name
|
|
||||||
run: >
|
|
||||||
echo "RELEASE_NAME=${{ env.RELEASE_DATE }} @${{ env.RELEASE_COMMIT_SHORT }}" >> commit.env
|
|
||||||
- name: Generate default release description
|
|
||||||
run: >
|
|
||||||
echo "RELEASE_DESCRIPTION=Unstable snapshot of clangd on ${{ env.RELEASE_DATE }}." >> commit.env
|
|
||||||
- name: Upload result
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: env
|
|
||||||
path: commit.env
|
|
||||||
workflow_dispatch_environment:
|
|
||||||
name: Use inputs to create build environment
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
steps:
|
|
||||||
- name: Use repo and commit from the inputs
|
|
||||||
run: |
|
|
||||||
echo "LLVM_REPO=${{ github.event.inputs.repo }}" >> commit.env
|
|
||||||
echo "LLVM_COMMIT=${{ github.event.inputs.commit }}" >> commit.env
|
|
||||||
echo "TAG_NAME=${{ github.event.inputs.tag }}" >> commit.env
|
|
||||||
echo "RELEASE_NAME=${{ github.event.inputs.release_name }}" >> commit.env
|
|
||||||
echo "RELEASE_DESCRIPTION=${{ github.event.inputs.description }}" >> commit.env
|
|
||||||
- name: Upload result
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: env
|
|
||||||
path: commit.env
|
|
||||||
create_release:
|
|
||||||
name: Create release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [schedule_environment, workflow_dispatch_environment]
|
|
||||||
# Use always() and manually check results here since GitHub Actions do not
|
|
||||||
# support conditionally skipping jobs and there is no way to "exit with
|
|
||||||
# success" from a job.
|
|
||||||
if: always() && (needs.schedule_environment.result == 'success' || needs.workflow_dispatch_environment.result == 'success')
|
|
||||||
steps:
|
|
||||||
- name: Fetch environment variables
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name:
|
|
||||||
env
|
|
||||||
path:
|
|
||||||
env
|
|
||||||
- name: Set environment variables
|
|
||||||
run: |
|
|
||||||
cat env/commit.env >> $GITHUB_ENV
|
|
||||||
- name: Create release
|
|
||||||
uses: actions/create-release@master
|
|
||||||
id: create_release
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
tag_name: ${{ env.TAG_NAME }}
|
|
||||||
release_name: ${{ env.RELEASE_NAME }}
|
|
||||||
body: |
|
|
||||||
${{ env.RELEASE_DESCRIPTION }}
|
|
||||||
|
|
||||||
Built from ${{ env.LLVM_REPO }}@${{ env.LLVM_COMMIT }}.
|
|
||||||
prerelease: true
|
|
||||||
draft: true
|
|
||||||
- name: Preserve release info
|
|
||||||
run: |
|
|
||||||
echo "UPLOAD_URL=${{ steps.create_release.outputs.upload_url }}" >> release.env
|
|
||||||
echo "TAG_NAME=${{ env.TAG_NAME }}" >> release.env
|
|
||||||
echo "RELEASE_ID=${{ steps.create_release.outputs.id }}" >> release.env
|
|
||||||
- name: Upload result
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
with:
|
||||||
name: release
|
name: release
|
||||||
path: release.env
|
path: commit.env
|
||||||
# Build clangd using CMake/Ninja.
|
# Build clangd using CMake/Ninja.
|
||||||
#
|
#
|
||||||
# This step is a template that runs on each OS, build config varies slightly.
|
# This step is a template that runs on each OS, build config varies slightly.
|
||||||
# Uploading releases needs a per-job token that expires after an hour.
|
# Uploading releases needs a per-job token that expires after an hour.
|
||||||
build:
|
build:
|
||||||
name: Build ${{ matrix.config.name }}
|
name: Build ${{ matrix.config.name }}
|
||||||
needs: create_release
|
needs: prepare
|
||||||
if: always() && needs.create_release.result == 'success'
|
runs-on: ${{ matrix.config.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
config:
|
config:
|
||||||
- name: windows
|
- name: windows
|
||||||
os: windows-2022
|
os: windows-latest
|
||||||
preinstall: choco install ninja nasm
|
preinstall: choco install ninja nasm
|
||||||
vcvars: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
|
vcvars: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat
|
||||||
cflags: /O2 /DNDEBUG
|
cflags: /O2 /DNDEBUG
|
||||||
cmake: >-
|
cmake: >-
|
||||||
"-DCMAKE_C_COMPILER=cl"
|
"-DCMAKE_C_COMPILER=cl"
|
||||||
"-DCMAKE_CXX_COMPILER=cl"
|
"-DCMAKE_CXX_COMPILER=cl"
|
||||||
"-DLLVM_ENABLE_ZLIB=OFF"
|
"-DLLVM_ENABLE_ZLIB=OFF"
|
||||||
"-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded"
|
"-DLLVM_USE_CRT_RELEASE=MT"
|
||||||
"-DLLVM_ENABLE_PDB=ON"
|
|
||||||
"-DLLVM_PARALLEL_LINK_JOBS=1"
|
|
||||||
grpc_cmake: >-
|
grpc_cmake: >-
|
||||||
"-DgRPC_MSVC_STATIC_RUNTIME=ON"
|
"-DgRPC_MSVC_STATIC_RUNTIME=ON"
|
||||||
binary_extension: ".exe"
|
binary_extension: ".exe"
|
||||||
- name: mac
|
- name: mac
|
||||||
os: macos-13
|
os: macos-latest
|
||||||
preinstall: brew install ninja zlib p7zip
|
preinstall: brew install ninja zlib p7zip
|
||||||
cflags: -O3 -gline-tables-only -DNDEBUG
|
cflags: -O3 -gline-tables-only -DNDEBUG
|
||||||
|
env: MACOSX_DEPLOYMENT_TARGET=10.9
|
||||||
cmake: >-
|
cmake: >-
|
||||||
"-DCMAKE_C_COMPILER=clang"
|
"-DCMAKE_C_COMPILER=clang"
|
||||||
"-DCMAKE_CXX_COMPILER=clang++"
|
"-DCMAKE_CXX_COMPILER=clang++"
|
||||||
"-DLLVM_ENABLE_ZLIB=FORCE_ON"
|
"-DLLVM_ENABLE_ZLIB=FORCE_ON"
|
||||||
"-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64"
|
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13"
|
|
||||||
# BoringSSL doesn't support universal binaries when building with ASM.
|
|
||||||
grpc_cmake: >-
|
|
||||||
"-DOPENSSL_NO_ASM=ON"
|
|
||||||
- name: linux
|
- name: linux
|
||||||
os: ubuntu-latest
|
os: ubuntu-18.04
|
||||||
container: ubuntu:20.04
|
preinstall: sudo apt-get install ninja-build libz-dev libc-ares-dev
|
||||||
preinstall: >-
|
|
||||||
apt-get update &&
|
|
||||||
apt-get install -y ninja-build libz-dev libc-ares-dev wget clang-10
|
|
||||||
software-properties-common p7zip-full curl &&
|
|
||||||
add-apt-repository ppa:git-core/ppa &&
|
|
||||||
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add - &&
|
|
||||||
apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' &&
|
|
||||||
apt-get update &&
|
|
||||||
apt-get install -y git cmake python3.8 python3.8-dev
|
|
||||||
cflags: -O3 -gline-tables-only -DNDEBUG -include $GITHUB_WORKSPACE/.github/workflows/lib_compat.h
|
cflags: -O3 -gline-tables-only -DNDEBUG -include $GITHUB_WORKSPACE/.github/workflows/lib_compat.h
|
||||||
cmake: >-
|
cmake: >-
|
||||||
"-DCMAKE_C_COMPILER=clang-10"
|
"-DCMAKE_C_COMPILER=clang"
|
||||||
"-DCMAKE_CXX_COMPILER=clang++-10"
|
"-DCMAKE_CXX_COMPILER=clang++"
|
||||||
"-DCMAKE_EXE_LINKER_FLAGS_RELEASE=-static-libgcc -Wl,--compress-debug-sections=zlib"
|
"-DCMAKE_EXE_LINKER_FLAGS_RELEASE=-static-libgcc -Wl,--compress-debug-sections=zlib"
|
||||||
"-DLLVM_STATIC_LINK_CXX_STDLIB=ON"
|
"-DLLVM_STATIC_LINK_CXX_STDLIB=ON"
|
||||||
"-DLLVM_ENABLE_ZLIB=FORCE_ON"
|
"-DLLVM_ENABLE_ZLIB=FORCE_ON"
|
||||||
@ -198,8 +78,6 @@ jobs:
|
|||||||
# libraries. All other gRPC dependencies can be built from sources.
|
# libraries. All other gRPC dependencies can be built from sources.
|
||||||
grpc_cmake: >-
|
grpc_cmake: >-
|
||||||
"-DgRPC_CARES_PROVIDER=package"
|
"-DgRPC_CARES_PROVIDER=package"
|
||||||
runs-on: ${{ matrix.config.os }}
|
|
||||||
container: ${{ matrix.config.container }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone scripts
|
- name: Clone scripts
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -226,8 +104,8 @@ jobs:
|
|||||||
path: grpc
|
path: grpc
|
||||||
# We use the same version of gRPC for LLVM's clangd-ubuntu-tsan
|
# We use the same version of gRPC for LLVM's clangd-ubuntu-tsan
|
||||||
# buildbot.
|
# buildbot.
|
||||||
# https://github.com/llvm/llvm-zorg/blob/main/buildbot/google/docker/buildbot-clangd-ubuntu-clang/Dockerfile
|
# https://github.com/llvm/llvm-zorg/blob/master/buildbot/google/docker/buildbot-clangd-ubuntu-clang/Dockerfile
|
||||||
ref: v1.36.3
|
ref: v1.33.2
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: Build gRPC
|
- name: Build gRPC
|
||||||
run: >
|
run: >
|
||||||
@ -245,30 +123,12 @@ jobs:
|
|||||||
|
|
||||||
ninja -C grpc-build install
|
ninja -C grpc-build install
|
||||||
- name: Fetch target commit
|
- name: Fetch target commit
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with: { name: release }
|
||||||
name:
|
- name: Set target commit
|
||||||
env
|
|
||||||
path:
|
|
||||||
env
|
|
||||||
- name: Fetch release info
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name:
|
|
||||||
release
|
|
||||||
path:
|
|
||||||
release
|
|
||||||
- name: Put release info into env
|
|
||||||
run: |
|
run: |
|
||||||
cat env/commit.env >> $GITHUB_ENV
|
cat release/commit.env >> $GITHUB_ENV
|
||||||
cat release/release.env >> $GITHUB_ENV
|
echo "CLANGD_DIR=clangd_${{ github.event.release.tag_name }}" >> $GITHUB_ENV
|
||||||
shell: bash
|
|
||||||
# Use environment variables set above to create a directory. This needs
|
|
||||||
# to be a separate step because they are not in the context yet when
|
|
||||||
# being set.
|
|
||||||
- name: Set build directory
|
|
||||||
run: |
|
|
||||||
echo "CLANGD_DIR=clangd_${{ env.TAG_NAME }}" >> $GITHUB_ENV
|
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Clone LLVM
|
- name: Clone LLVM
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
@ -283,7 +143,7 @@ jobs:
|
|||||||
cp llvm-project/llvm/LICENSE.TXT ${{ env.CLANGD_DIR }}
|
cp llvm-project/llvm/LICENSE.TXT ${{ env.CLANGD_DIR }}
|
||||||
|
|
||||||
cmake -G Ninja -S llvm-project/llvm -B ${{ env.CLANGD_DIR }}
|
cmake -G Ninja -S llvm-project/llvm -B ${{ env.CLANGD_DIR }}
|
||||||
"-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra;openmp"
|
"-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra"
|
||||||
"-DLLVM_ENABLE_ASSERTIONS=OFF"
|
"-DLLVM_ENABLE_ASSERTIONS=OFF"
|
||||||
"-DLLVM_ENABLE_BACKTRACES=ON"
|
"-DLLVM_ENABLE_BACKTRACES=ON"
|
||||||
"-DLLVM_ENABLE_TERMINFO=OFF"
|
"-DLLVM_ENABLE_TERMINFO=OFF"
|
||||||
@ -293,64 +153,37 @@ jobs:
|
|||||||
"-DCMAKE_C_FLAGS_RELEASE=${{ matrix.config.cflags }}"
|
"-DCMAKE_C_FLAGS_RELEASE=${{ matrix.config.cflags }}"
|
||||||
"-DCMAKE_CXX_FLAGS_RELEASE=${{ matrix.config.cflags }}"
|
"-DCMAKE_CXX_FLAGS_RELEASE=${{ matrix.config.cflags }}"
|
||||||
"-DCLANGD_ENABLE_REMOTE=ON"
|
"-DCLANGD_ENABLE_REMOTE=ON"
|
||||||
"-DLLVM_ENABLE_ZSTD=OFF"
|
|
||||||
"-DGRPC_INSTALL_PATH=$HOME/grpc-installation"
|
"-DGRPC_INSTALL_PATH=$HOME/grpc-installation"
|
||||||
${{ matrix.config.cmake }}
|
${{ matrix.config.cmake }}
|
||||||
- name: Ninja
|
- name: Ninja
|
||||||
run: >
|
run: ninja -C ${{ env.CLANGD_DIR }} clangd clangd-indexer clangd-index-server
|
||||||
ninja -C ${{ env.CLANGD_DIR }} clangd clangd-indexer clangd-index-server
|
|
||||||
clangd-index-server-monitor
|
|
||||||
- name: Install OpenMP headers
|
|
||||||
shell: bash
|
|
||||||
run: >
|
|
||||||
cp ${{ env.CLANGD_DIR }}/projects/openmp/runtime/src/omp{,-tools}.h ${{ env.CLANGD_DIR }}/lib/clang/*/include
|
|
||||||
|| true # Don't let the non-existing omp headers block the release.
|
|
||||||
- name: Archive clangd
|
- name: Archive clangd
|
||||||
run: >
|
run: >
|
||||||
7z a clangd.zip
|
7z a clangd.zip
|
||||||
${{ env.CLANGD_DIR }}/LICENSE.TXT
|
${{ env.CLANGD_DIR }}/LICENSE.TXT
|
||||||
${{ env.CLANGD_DIR }}/bin/clangd${{ matrix.config.binary_extension }}
|
${{ env.CLANGD_DIR }}/bin/clangd${{ matrix.config.binary_extension }}
|
||||||
${{ env.CLANGD_DIR }}/lib/clang
|
${{ env.CLANGD_DIR }}/lib/clang
|
||||||
- name: Archive clangd PDB symbols
|
|
||||||
if: matrix.config.name == 'windows'
|
|
||||||
run: >
|
|
||||||
7z a clangd-pdb.7z -t7z -m0=LZMA2
|
|
||||||
${{ env.CLANGD_DIR }}/LICENSE.TXT
|
|
||||||
${{ env.CLANGD_DIR }}/bin/clangd.pdb
|
|
||||||
- name: Archive indexing-tools
|
- name: Archive indexing-tools
|
||||||
run: >
|
run: >
|
||||||
7z a indexing-tools.zip
|
7z a indexing-tools.zip
|
||||||
${{ env.CLANGD_DIR }}/LICENSE.TXT
|
${{ env.CLANGD_DIR }}/LICENSE.TXT
|
||||||
${{ env.CLANGD_DIR }}/bin/clangd-indexer${{ matrix.config.binary_extension }}
|
${{ env.CLANGD_DIR }}/bin/clangd-indexer${{ matrix.config.binary_extension }}
|
||||||
${{ env.CLANGD_DIR }}/bin/clangd-index-server${{ matrix.config.binary_extension }}
|
${{ env.CLANGD_DIR }}/bin/clangd-index-server${{ matrix.config.binary_extension }}
|
||||||
${{ env.CLANGD_DIR }}/bin/clangd-index-server-monitor${{ matrix.config.binary_extension }}
|
|
||||||
${{ env.CLANGD_DIR }}/lib/clang
|
${{ env.CLANGD_DIR }}/lib/clang
|
||||||
- name: Upload clangd asset
|
- name: Upload clangd asset
|
||||||
uses: actions/upload-release-asset@v1.0.1
|
uses: actions/upload-release-asset@v1.0.1
|
||||||
env:
|
env: { GITHUB_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
|
||||||
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ env.UPLOAD_URL }}
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
asset_name: clangd-${{ matrix.config.name }}-${{ env.TAG_NAME }}.zip
|
asset_name: clangd-${{ matrix.config.name }}-${{ github.event.release.tag_name }}.zip
|
||||||
asset_path: clangd.zip
|
asset_path: clangd.zip
|
||||||
asset_content_type: application/zip
|
asset_content_type: application/zip
|
||||||
- name: Upload clangd PDB asset
|
|
||||||
if: matrix.config.name == 'windows'
|
|
||||||
uses: actions/upload-release-asset@v1.0.1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ env.UPLOAD_URL }}
|
|
||||||
asset_name: clangd-debug-symbols-${{ matrix.config.name }}-${{ env.TAG_NAME }}.7z
|
|
||||||
asset_path: clangd-pdb.7z
|
|
||||||
asset_content_type: application/zip
|
|
||||||
- name: Upload indexing-tools asset
|
- name: Upload indexing-tools asset
|
||||||
uses: actions/upload-release-asset@v1.0.1
|
uses: actions/upload-release-asset@v1.0.1
|
||||||
env:
|
env: { GITHUB_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
|
||||||
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ env.UPLOAD_URL }}
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
asset_name: clangd_indexing_tools-${{ matrix.config.name }}-${{ env.TAG_NAME }}.zip
|
asset_name: clangd_indexing_tools-${{ matrix.config.name }}-${{ github.event.release.tag_name }}.zip
|
||||||
asset_path: indexing-tools.zip
|
asset_path: indexing-tools.zip
|
||||||
asset_content_type: application/zip
|
asset_content_type: application/zip
|
||||||
- name: Check binary compatibility
|
- name: Check binary compatibility
|
||||||
@ -360,21 +193,10 @@ jobs:
|
|||||||
finalize:
|
finalize:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build
|
needs: build
|
||||||
if: always() && needs.build.result == 'success'
|
|
||||||
steps:
|
steps:
|
||||||
- name: Fetch release info
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name:
|
|
||||||
release
|
|
||||||
path:
|
|
||||||
release
|
|
||||||
- name: Update the env variables
|
|
||||||
run: >
|
|
||||||
cat release/release.env >> $GITHUB_ENV
|
|
||||||
- name: Publish release
|
- name: Publish release
|
||||||
run: >
|
run: >
|
||||||
curl -XPATCH
|
curl -XPATCH
|
||||||
"-HAuthorization: Bearer ${{ secrets.RELEASE_TOKEN }}"
|
"-HAuthorization: Bearer ${{ secrets.RELEASE_TOKEN }}"
|
||||||
"https://api.github.com/repos/${{ github.repository }}/releases/${{ env.RELEASE_ID }}"
|
"https://api.github.com/repos/${{ github.repository }}/releases/${{ github.event.release.id }}"
|
||||||
"-d" '{"draft": false}'
|
"-d" '{"draft": false}'
|
||||||
|
1
.github/workflows/lib_compat.h
vendored
1
.github/workflows/lib_compat.h
vendored
@ -16,6 +16,5 @@ FORCE_SYMBOL_VERSION(expf, GLIBC_2.2.5);
|
|||||||
FORCE_SYMBOL_VERSION(log, GLIBC_2.2.5);
|
FORCE_SYMBOL_VERSION(log, GLIBC_2.2.5);
|
||||||
FORCE_SYMBOL_VERSION(log2, GLIBC_2.2.5);
|
FORCE_SYMBOL_VERSION(log2, GLIBC_2.2.5);
|
||||||
FORCE_SYMBOL_VERSION(pow, GLIBC_2.2.5);
|
FORCE_SYMBOL_VERSION(pow, GLIBC_2.2.5);
|
||||||
FORCE_SYMBOL_VERSION(exp, GLIBC_2.2.5);
|
|
||||||
|
|
||||||
#undef FORCE_SYMBOL_VERSION
|
#undef FORCE_SYMBOL_VERSION
|
||||||
|
60
.github/workflows/periodic.yaml
vendored
Normal file
60
.github/workflows/periodic.yaml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Workflow to create an auto-buildable release periodically.
|
||||||
|
#
|
||||||
|
# Releases created with automation credentials don't trigger workflows.
|
||||||
|
# Therefore a token `secrets.RELEASE_TOKEN` must exist with public_repo scope.
|
||||||
|
name: Periodic release
|
||||||
|
on:
|
||||||
|
# Run weekly on sunday at 21:37 UTC (arbitrary)
|
||||||
|
schedule:
|
||||||
|
- cron: '37 21 * * SUN'
|
||||||
|
# Allow triggering manually:
|
||||||
|
# curl -XPOST -d '{"event_type":"periodic"}' \
|
||||||
|
# "-HAuthorization: Bearer <token>" \
|
||||||
|
# https://api.github.com/repos/clangd/clangd/dispatches
|
||||||
|
repository_dispatch: { types: periodic }
|
||||||
|
jobs:
|
||||||
|
# Choose the commit to build a release from.
|
||||||
|
#
|
||||||
|
# We want to avoid unbuildable revisions: choose the last green from CI.
|
||||||
|
# FIXME: the criteria should be some consistent set of buildbots passing.
|
||||||
|
pick:
|
||||||
|
name: Create draft release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Install deps
|
||||||
|
run: |
|
||||||
|
sudo apt-get install jq
|
||||||
|
- name: Clone scripts
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
# Use clangd/actions/pick after
|
||||||
|
# https://github.com/ramasilveyra/last-successful-gh-commit/issues/2 has
|
||||||
|
# been addressed.
|
||||||
|
- name: Get commit hash for LLVM head
|
||||||
|
run: >
|
||||||
|
curl --fail --show-error
|
||||||
|
"-HAuthorization: Bearer ${{ secrets.RELEASE_TOKEN }}"
|
||||||
|
"https://api.github.com/repos/llvm/llvm-project/commits/main" |
|
||||||
|
jq ".sha" -r > commit
|
||||||
|
- name: Compute release info
|
||||||
|
run: |
|
||||||
|
echo "RELEASE_COMMIT=$(cat commit)" >> $GITHUB_ENV
|
||||||
|
echo "RELEASE_COMMIT_SHORT=$(printf '%.12s' $(cat commit))" >> $GITHUB_ENV
|
||||||
|
echo "RELEASE_DATE=$(date -u +%Y%m%d)" >> $GITHUB_ENV
|
||||||
|
- name: Create release
|
||||||
|
uses: actions/create-release@master
|
||||||
|
id: release
|
||||||
|
env: { GITHUB_TOKEN: "${{ secrets.RELEASE_TOKEN }}" }
|
||||||
|
with:
|
||||||
|
tag_name: snapshot_${{ env.RELEASE_DATE }}
|
||||||
|
release_name: ${{ env.RELEASE_DATE }} @${{ env.RELEASE_COMMIT_SHORT }}
|
||||||
|
body: |
|
||||||
|
Unstable snapshot of clangd on ${{ env.RELEASE_DATE }}.
|
||||||
|
|
||||||
|
Built from llvm/llvm-project@${{ env.RELEASE_COMMIT }}.
|
||||||
|
prerelease: true
|
||||||
|
# It would be nice to use draft releases, to hide them from users.
|
||||||
|
# But drafts don't fire events to trigger the autobuild workflow.
|
||||||
|
# Instead, that workflow marks the release as draft until it's built.
|
||||||
|
# As a result, the empty release will be briefly visible to users.
|
||||||
|
draft: false
|
||||||
|
|
Loading…
Reference in New Issue
Block a user