This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'madlittlemods/11850-migrate-to-opentelemetry' into madl…
…ittlemods/13356-messages-investigation-scratch-v1 Conflicts: synapse/handlers/federation.py synapse/handlers/relations.py
- Loading branch information
Showing
413 changed files
with
18,438 additions
and
7,273 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
#!/usr/bin/env python | ||
# Copyright 2022 The Matrix.org Foundation C.I.C. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# Wraps `auditwheel repair` to first check if we're repairing a potentially abi3 | ||
# compatible wheel, if so rename the wheel before repairing it. | ||
|
||
import argparse | ||
import os | ||
import subprocess | ||
from typing import Optional | ||
from zipfile import ZipFile | ||
|
||
from packaging.tags import Tag | ||
from packaging.utils import parse_wheel_filename | ||
from packaging.version import Version | ||
|
||
|
||
def check_is_abi3_compatible(wheel_file: str) -> None: | ||
"""Check the contents of the built wheel for any `.so` files that are *not* | ||
abi3 compatible. | ||
""" | ||
|
||
with ZipFile(wheel_file, "r") as wheel: | ||
for file in wheel.namelist(): | ||
if not file.endswith(".so"): | ||
continue | ||
|
||
if not file.endswith(".abi3.so"): | ||
raise Exception(f"Found non-abi3 lib: {file}") | ||
|
||
|
||
def cpython(wheel_file: str, name: str, version: Version, tag: Tag) -> str: | ||
"""Replaces the cpython wheel file with a ABI3 compatible wheel""" | ||
|
||
if tag.abi == "abi3": | ||
# Nothing to do. | ||
return wheel_file | ||
|
||
check_is_abi3_compatible(wheel_file) | ||
|
||
abi3_tag = Tag(tag.interpreter, "abi3", tag.platform) | ||
|
||
dirname = os.path.dirname(wheel_file) | ||
new_wheel_file = os.path.join( | ||
dirname, | ||
f"{name}-{version}-{abi3_tag}.whl", | ||
) | ||
|
||
os.rename(wheel_file, new_wheel_file) | ||
|
||
print("Renamed wheel to", new_wheel_file) | ||
|
||
return new_wheel_file | ||
|
||
|
||
def main(wheel_file: str, dest_dir: str, archs: Optional[str]) -> None: | ||
"""Entry point""" | ||
|
||
# Parse the wheel file name into its parts. Note that `parse_wheel_filename` | ||
# normalizes the package name (i.e. it converts matrix_synapse -> | ||
# matrix-synapse), which is not what we want. | ||
_, version, build, tags = parse_wheel_filename(os.path.basename(wheel_file)) | ||
name = os.path.basename(wheel_file).split("-")[0] | ||
|
||
if len(tags) != 1: | ||
# We expect only a wheel file with only a single tag | ||
raise Exception(f"Unexpectedly found multiple tags: {tags}") | ||
|
||
tag = next(iter(tags)) | ||
|
||
if build: | ||
# We don't use build tags in Synapse | ||
raise Exception(f"Unexpected build tag: {build}") | ||
|
||
# If the wheel is for cpython then convert it into an abi3 wheel. | ||
if tag.interpreter.startswith("cp"): | ||
wheel_file = cpython(wheel_file, name, version, tag) | ||
|
||
# Finally, repair the wheel. | ||
if archs is not None: | ||
# If we are given archs then we are on macos and need to use | ||
# `delocate-listdeps`. | ||
subprocess.run(["delocate-listdeps", wheel_file], check=True) | ||
subprocess.run( | ||
["delocate-wheel", "--require-archs", archs, "-w", dest_dir, wheel_file], | ||
check=True, | ||
) | ||
else: | ||
subprocess.run(["auditwheel", "repair", "-w", dest_dir, wheel_file], check=True) | ||
|
||
|
||
if __name__ == "__main__": | ||
parser = argparse.ArgumentParser(description="Tag wheel as abi3 and repair it.") | ||
|
||
parser.add_argument( | ||
"--wheel-dir", | ||
"-w", | ||
metavar="WHEEL_DIR", | ||
help="Directory to store delocated wheels", | ||
required=True, | ||
) | ||
|
||
parser.add_argument( | ||
"--require-archs", | ||
metavar="archs", | ||
default=None, | ||
) | ||
|
||
parser.add_argument( | ||
"wheel_file", | ||
metavar="WHEEL_FILE", | ||
) | ||
|
||
args = parser.parse_args() | ||
|
||
wheel_file = args.wheel_file | ||
wheel_dir = args.wheel_dir | ||
archs = args.require_archs | ||
|
||
main(wheel_file, wheel_dir, archs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,7 @@ | |
!pyproject.toml | ||
!poetry.lock | ||
!Cargo.lock | ||
!Cargo.toml | ||
!build_rust.py | ||
|
||
rust/target | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
version: 2 | ||
updates: | ||
- # "pip" is the correct setting for poetry, per https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem | ||
package-ecosystem: "pip" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" | ||
|
||
- package-ecosystem: "docker" | ||
directory: "/docker" | ||
schedule: | ||
interval: "weekly" | ||
|
||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" | ||
|
||
- package-ecosystem: "cargo" | ||
directory: "/" | ||
versioning-strategy: "lockfile-only" | ||
schedule: | ||
interval: "weekly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
name: Write changelog for dependabot PR | ||
on: | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened # For debugging! | ||
|
||
permissions: | ||
# Needed to be able to push the commit. See | ||
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions#enable-auto-merge-on-a-pull-request | ||
# for a similar example | ||
contents: write | ||
|
||
jobs: | ||
add-changelog: | ||
runs-on: 'ubuntu-latest' | ||
if: ${{ github.actor == 'dependabot[bot]' }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ github.event.pull_request.head.ref }} | ||
- name: Write, commit and push changelog | ||
run: | | ||
echo "${{ github.event.pull_request.title }}." > "changelog.d/${{ github.event.pull_request.number }}".misc | ||
git add changelog.d | ||
git config user.email "github-actions[bot]@users.noreply.github.com" | ||
git config user.name "GitHub Actions" | ||
git commit -m "Changelog" | ||
git push | ||
shell: bash | ||
# The `git push` above does not trigger CI on the dependabot PR. | ||
# | ||
# By default, workflows can't trigger other workflows when they're just using the | ||
# default `GITHUB_TOKEN` access token. (This is intended to stop you from writing | ||
# recursive workflow loops by accident, because that'll get very expensive very | ||
# quickly.) Instead, you have to manually call out to another workflow, or else | ||
# make your changes (i.e. the `git push` above) using a personal access token. | ||
# See | ||
# https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow | ||
# | ||
# I have tried and failed to find a way to trigger CI on the "merge ref" of the PR. | ||
# See git commit history for previous attempts. If anyone desperately wants to try | ||
# again in the future, make a matrix-bot account and use its access token to git push. | ||
|
||
# THIS WORKFLOW HAS WRITE PERMISSIONS---do not add other jobs here unless they | ||
# are sufficiently locked down to dependabot only as above. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
name: Deploy documentation PR preview | ||
|
||
on: | ||
workflow_run: | ||
workflows: [ "Prepare documentation PR preview" ] | ||
types: | ||
- completed | ||
|
||
jobs: | ||
netlify: | ||
if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' | ||
runs-on: ubuntu-latest | ||
steps: | ||
# There's a 'download artifact' action, but it hasn't been updated for the workflow_run action | ||
# (https://github.com/actions/download-artifact/issues/60) so instead we get this mess: | ||
- name: 📥 Download artifact | ||
uses: dawidd6/action-download-artifact@e6e25ac3a2b93187502a8be1ef9e9603afc34925 # v2.24.2 | ||
with: | ||
workflow: docs-pr.yaml | ||
run_id: ${{ github.event.workflow_run.id }} | ||
name: book | ||
path: book | ||
|
||
- name: 📤 Deploy to Netlify | ||
uses: matrix-org/netlify-pr-preview@v1 | ||
with: | ||
path: book | ||
owner: ${{ github.event.workflow_run.head_repository.owner.login }} | ||
branch: ${{ github.event.workflow_run.head_branch }} | ||
revision: ${{ github.event.workflow_run.head_sha }} | ||
token: ${{ secrets.NETLIFY_AUTH_TOKEN }} | ||
site_id: ${{ secrets.NETLIFY_SITE_ID }} | ||
desc: Documentation preview | ||
deployment_env: PR Documentation Preview |
Oops, something went wrong.