mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-28 20:52:57 +08:00

- We now automatically generate bootstrap_gen.py file from the list of instrumentations present in the source tree. - Bootstrap command now uses consumes this auto-generated list instead of keeping it's own local copy. - We no longer uninstall packages before installing them as instrumentation package no longer specify libraries as dependencies so the edge cases are no longer there. - We no longer try to install an incompatible version or force upgrade/downgrade an installed version. This used to leave systems in broken states which should happen no more.
91 lines
2.6 KiB
Python
Executable File
91 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Copyright The OpenTelemetry Authors
|
|
#
|
|
# 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.
|
|
|
|
import logging
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
from jinja2 import Template
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger("setupy_generator")
|
|
|
|
_auto_generation_msg = """
|
|
# DO NOT EDIT. THIS FILE WAS AUTOGENERATED FROM templates/{source}.
|
|
# RUN `python scripts/generate_setup.py` TO REGENERATE.
|
|
"""
|
|
_template_dir = "templates"
|
|
_template_name = "instrumentation_setup.py.txt"
|
|
_prefix = "opentelemetry-instrumentation-"
|
|
|
|
|
|
def main():
|
|
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
setuppy_tmpl = Template(
|
|
open(
|
|
os.path.join(root_path, _template_dir, _template_name), "r"
|
|
).read()
|
|
)
|
|
base_instrumentation_path = os.path.join(root_path, "instrumentation")
|
|
|
|
for instrumentation in os.listdir(base_instrumentation_path):
|
|
instrumentation_path = os.path.join(
|
|
base_instrumentation_path, instrumentation
|
|
)
|
|
if not os.path.isdir(
|
|
instrumentation_path
|
|
) or not instrumentation.startswith(_prefix):
|
|
continue
|
|
|
|
src_dir = os.path.join(
|
|
instrumentation_path, "src", "opentelemetry", "instrumentation"
|
|
)
|
|
src_pkgs = [
|
|
f
|
|
for f in os.listdir(src_dir)
|
|
if os.path.isdir(os.path.join(src_dir, f))
|
|
]
|
|
assert len(src_pkgs) == 1
|
|
name = src_pkgs[0]
|
|
generated = setuppy_tmpl.render(
|
|
name=name,
|
|
auto_generation_msg=_auto_generation_msg.format(
|
|
source=_template_name
|
|
),
|
|
)
|
|
|
|
generated_file = os.path.join(instrumentation_path, "setup.py")
|
|
logger.info("generated %s", generated_file)
|
|
with open(generated_file, "w") as fh:
|
|
fh.write(generated)
|
|
fh.flush()
|
|
|
|
subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"scripts/eachdist.py",
|
|
"format",
|
|
"--path",
|
|
"instrumentation",
|
|
],
|
|
check=True,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|