diff options
author | Vladislav Rudskoy <rudskoy.vladislav@gmail.com> | 2022-02-10 16:45:39 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:39 +0300 |
commit | c6dc8b8bd530985bc4cce0137e9a5de32f1087cb (patch) | |
tree | b2cc84ee7850122e7ccf51d0ea21e4fa7e7a5685 | |
parent | 40818269bfff82d9f57f47db333acbdda5c44fb0 (diff) | |
download | ydb-c6dc8b8bd530985bc4cce0137e9a5de32f1087cb.tar.gz |
Restoring authorship annotation for Vladislav Rudskoy <rudskoy.vladislav@gmail.com>. Commit 2 of 2.
-rw-r--r-- | build/plugins/java.py | 18 | ||||
-rw-r--r-- | build/plugins/pybuild.py | 50 | ||||
-rw-r--r-- | build/ymake.core.conf | 8 | ||||
-rw-r--r-- | contrib/README.md | 136 | ||||
-rw-r--r-- | contrib/python/ya.make | 4 |
5 files changed, 108 insertions, 108 deletions
diff --git a/build/plugins/java.py b/build/plugins/java.py index c3d1625ca2..16fc126734 100644 --- a/build/plugins/java.py +++ b/build/plugins/java.py @@ -33,10 +33,10 @@ def extract_macro_calls2(unit, macro_value_name): def on_run_jbuild_program(unit, *args): args = list(args) - """ - Custom code generation - @link: https://wiki.yandex-team.ru/yatool/java/#kodogeneracijarunjavaprogram - """ + """ + Custom code generation + @link: https://wiki.yandex-team.ru/yatool/java/#kodogeneracijarunjavaprogram + """ flat, kv = common.sort_by_keywords({'IN': -1, 'IN_DIR': -1, 'OUT': -1, 'OUT_DIR': -1, 'CWD': 1, 'CLASSPATH': -1, 'CP_USE_COMMAND_FILE': 1, 'ADD_SRCS_TO_CLASSPATH': 0}, args) depends = kv.get('CLASSPATH', []) + kv.get('JAR', []) @@ -58,11 +58,11 @@ def on_run_jbuild_program(unit, *args): def ongenerate_script(unit, *args): - """ - heretic@ promised to make tutorial here - Don't forget - Feel free to remind - """ + """ + heretic@ promised to make tutorial here + Don't forget + Feel free to remind + """ flat, kv = common.sort_by_keywords( {'OUT': -1, 'TEMPLATE': -1, 'CUSTOM_PROPERTY': -1}, args diff --git a/build/plugins/pybuild.py b/build/plugins/pybuild.py index 218b0d90e2..f32a2d39a0 100644 --- a/build/plugins/pybuild.py +++ b/build/plugins/pybuild.py @@ -152,9 +152,9 @@ def on_py_program(unit, *args): def py_program(unit, py3): - """ - Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py_srcs/#modulpyprogramimakrospymain - """ + """ + Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py_srcs/#modulpyprogramimakrospymain + """ if py3: peers = ['library/python/runtime_py3/main'] if unit.get('PYTHON_SQLITE3') != 'no': @@ -169,25 +169,25 @@ def py_program(unit, py3): def onpy_srcs(unit, *args): - """ + """ @usage PY_SRCS({| CYTHON_C} { | TOP_LEVEL | NAMESPACE ns} Files...) - PY_SRCS() - is rule to build extended versions of Python interpreters and containing all application code in its executable file. It can be used to collect only the executables but not shared libraries, and, in particular, not to collect the modules that are imported using import directive. - The main disadvantage is the lack of IDE support; There is also no readline yet. - The application can be collect from any of the sources from which the C library, and with the help of PY_SRCS .py , .pyx,.proto and .swg files. - At the same time extensions for Python on C language generating from .pyx and .swg, will be registered in Python's as built-in modules, and sources on .py are stored as static data: when the interpreter starts, the initialization code will add a custom loader of these modules to sys.meta_path. - By default .pyx files are collected as C++-extensions. To collect them as C (similar to BUILDWITH_CYTHON_C, but with the ability to specify namespace), you must specify the Directive CYTHON_C. - Building with pyx automatically registers modules, you do not need to call PY_REGISTER for them - __init__.py never required, but if present (and specified in PY_SRCS), it will be imported when you import package modules with __init__.py Oh. - - Example of library declaration with PY_SRCS(): + PY_SRCS() - is rule to build extended versions of Python interpreters and containing all application code in its executable file. It can be used to collect only the executables but not shared libraries, and, in particular, not to collect the modules that are imported using import directive. + The main disadvantage is the lack of IDE support; There is also no readline yet. + The application can be collect from any of the sources from which the C library, and with the help of PY_SRCS .py , .pyx,.proto and .swg files. + At the same time extensions for Python on C language generating from .pyx and .swg, will be registered in Python's as built-in modules, and sources on .py are stored as static data: when the interpreter starts, the initialization code will add a custom loader of these modules to sys.meta_path. + By default .pyx files are collected as C++-extensions. To collect them as C (similar to BUILDWITH_CYTHON_C, but with the ability to specify namespace), you must specify the Directive CYTHON_C. + Building with pyx automatically registers modules, you do not need to call PY_REGISTER for them + __init__.py never required, but if present (and specified in PY_SRCS), it will be imported when you import package modules with __init__.py Oh. + + Example of library declaration with PY_SRCS(): PY2_LIBRARY(mymodule) PY_SRCS(a.py sub/dir/b.py e.proto sub/dir/f.proto c.pyx sub/dir/d.pyx g.swg sub/dir/h.swg) - END() - + END() + PY_REGISTER honors Python2 and Python3 differences and adjusts itself to Python version of a current module Documentation: https://wiki.yandex-team.ru/arcadia/python/pysrcs/#modulipylibrarypy3libraryimakrospysrcs - """ + """ # Each file arg must either be a path, or "${...}/buildpath=modname", where # "${...}/buildpath" part will be used as a file source in a future macro, # and "modname" will be used as a module name. @@ -554,12 +554,12 @@ def py_register(unit, func, py3): def onpy_register(unit, *args): - """ + """ @usage: PY_REGISTER([package.]module_name) - Python knows about which built-ins can be imported, due to their registration in the Assembly or at the start of the interpreter. - All modules from the sources listed in PY_SRCS() are registered automatically. - To register the modules from the sources in the SRCS(), you need to use PY_REGISTER(). + Python knows about which built-ins can be imported, due to their registration in the Assembly or at the start of the interpreter. + All modules from the sources listed in PY_SRCS() are registered automatically. + To register the modules from the sources in the SRCS(), you need to use PY_REGISTER(). PY_REGISTER(module_name) initializes module globally via call to initmodule_name() PY_REGISTER(package.module_name) initializes module in the specified package @@ -567,7 +567,7 @@ def onpy_register(unit, *args): or CFLAGS(-DPyInit_module_name=PyInit_7package11module_name) Documentation: https://wiki.yandex-team.ru/arcadia/python/pysrcs/#makrospyregister - """ + """ py3 = is_py3(unit) @@ -592,13 +592,13 @@ def py_main(unit, arg): def onpy_main(unit, arg): - """ + """ @usage: PY_MAIN(package.module[:func]) - + Specifies the module or function from which to start executing a python program - + Documentation: https://wiki.yandex-team.ru/arcadia/python/pysrcs/#modulipyprogrampy3programimakrospymain - """ + """ arg = arg.replace('/', '.') diff --git a/build/ymake.core.conf b/build/ymake.core.conf index e1ea3c4c92..081833998b 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -2421,7 +2421,7 @@ CMAKE_LINK_TARGET=$REALPRJNAME CMAKE_FIND_PKG_COMP= CONAN_REQUIRE= -### @usage: LIBRARY() +### @usage: LIBRARY() ### ### The regular static library module. ### @@ -4705,7 +4705,7 @@ JAVA_SRCS_VALUE= ### @usage: JAVA_SRCS(srcs) ### ### Specify java source files and resources. A macro can be contained in any of four java modules. -### Keywords: +### Keywords: ### 1. X SRCDIR - specify the directory x is performed relatively to search the source code for these patterns. If there is no SRCDIR, the source will be searched relative to the module directory. ### 2. PACKAGE_PREFIX x - use if source paths relative to the SRCDIR does not coincide with the full class names. For example, if all sources of module are in the same package, you can create a directory package/name , and just put the source code in the SRCDIR and specify PACKAGE_PREFIX package.name. ### @@ -4725,7 +4725,7 @@ JAVA_SRCS_VALUE= ### } ### } ### -### Documentation: https://wiki.yandex-team.ru/yatool/java/#javasrcs +### Documentation: https://wiki.yandex-team.ru/yatool/java/#javasrcs macro JAVA_SRCS(Args...) { SET_APPEND(JAVA_SRCS_VALUE $ARGS_DELIM $Args) } @@ -4766,7 +4766,7 @@ DEPENDENCY_MANAGEMENT_VALUE= ### there the maximum version available in contrib/java. ### ### The property is transitive. That is, if module A PEERDIRs module B, and B has PEERDIR(contrib/java/junit/junit), and this junit was replaced by junit-4.12, then junit-4.12 will come to A through B. -### +### ### If some module has both DEPENDENCY_MANAGEMENT(contrib/java/junit/junit/4.12) and PERDIR(contrib/java/junit/junit/4.11), the PEERDIR wins. ### ### Documentation: https://wiki.yandex-team.ru/yatool/java/ diff --git a/contrib/README.md b/contrib/README.md index 292415da98..44863a0baf 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -1,25 +1,25 @@ Все спорные вопросы, пожелания по процессу, фичереквесты можно присылать на [arcadia-wg@](mailto:arcadia-wg@yandex-team.ru) ## Что такое contrib? - -Это набор общих компонент в Аркадии из внешнего интернета, от которых зависят проекты внутри Аркадии. - -Компоненты в contrib подразделяются на ЯП-специфичные, общие тулы (англ. tools) и библиотеки: - -* [contrib/java](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/java) -* [contrib/python](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/python) -* [vendor (aka go)](https://a.yandex-team.ru/arc/trunk/arcadia/vendor) -* [contrib/libs (aka C++)](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/libs) -* [contrib/tools (общие тулы (jdk, python, cython)](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/tools) - -Каждый компонент внутри contrib собирается ya make и добавляется при соблюдении нескольких условий, в том числе подтверждении от профильных групп людей. - + +Это набор общих компонент в Аркадии из внешнего интернета, от которых зависят проекты внутри Аркадии. + +Компоненты в contrib подразделяются на ЯП-специфичные, общие тулы (англ. tools) и библиотеки: + +* [contrib/java](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/java) +* [contrib/python](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/python) +* [vendor (aka go)](https://a.yandex-team.ru/arc/trunk/arcadia/vendor) +* [contrib/libs (aka C++)](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/libs) +* [contrib/tools (общие тулы (jdk, python, cython)](https://a.yandex-team.ru/arc/trunk/arcadia/contrib/tools) + +Каждый компонент внутри contrib собирается ya make и добавляется при соблюдении нескольких условий, в том числе подтверждении от профильных групп людей. + ## Добавление библиотеки в contrib - + Перед добавлением библиотеки нужно убедиться, что библиотека действительно полезна. См. ниже про то, "Как комитеты согласуют новые библиотеки в contrib". Это те факторы, которые стоит учесть до начала процесса согласования. Возможно, в процессе анализа вы найдете более подходящие альтернативы в Аркадии или внешнем мире. Добавление новой библиотеки начинается с **[создания тикета в очереди CONTRIB](https://st.yandex-team.ru/createTicket?queue=CONTRIB)**. - + ## Мне нужна библиотека, написанная в Яндексе, которой нет в Аркадии. Можно ли положить её в contrib? Нет, `contrib/` — место для внешнего кода, которым мы (компания Яндекс) не владеем. @@ -36,76 +36,76 @@ Список таких библиотек приведён в тикете: [CONTRIB-396](https://st.yandex-team.ru/CONTRIB-396) ## Обновление библиотеки в Contrib - -Если в обновлении библиотеки нужна помощь Devtools и/или это мажорное обновление библиотеки, то это лучше проводить через тикет в очереди CONTRIB. - -Минорные обновления можно сделать самостоятельно до зеленой проверки, для этого по умолчанию никакие подтверждения и тикеты в очереди CONTRIB не требуются. -Разделение на минорные и мажорное обновление следует понимать "по духу", а не "по номеру версии". Например, обновление openssl с 1.0 на 1.1 – это задача на пол года, -несмотря на то что изменилась минорная версия. - -А если вы обновляете библиотеку, которую используют всего пара проектов, то можно со всеми потребителями договориться сразу в PR. -Тикет не обязателен. - + +Если в обновлении библиотеки нужна помощь Devtools и/или это мажорное обновление библиотеки, то это лучше проводить через тикет в очереди CONTRIB. + +Минорные обновления можно сделать самостоятельно до зеленой проверки, для этого по умолчанию никакие подтверждения и тикеты в очереди CONTRIB не требуются. +Разделение на минорные и мажорное обновление следует понимать "по духу", а не "по номеру версии". Например, обновление openssl с 1.0 на 1.1 – это задача на пол года, +несмотря на то что изменилась минорная версия. + +А если вы обновляете библиотеку, которую используют всего пара проектов, то можно со всеми потребителями договориться сразу в PR. +Тикет не обязателен. + ## Команда, правила и процессы Contrib - -Текущий процесс относится к каждому ЯП в Аркадии: C++, Java, Python, Go -Весь текущий и грядущий workflow работы команд, отвечающих за общие библиотеки, реализован на базе Стартрека и очереди **[Contrib](https://st.yandex-team.ru/contrib)**. - -Happy Path для пользователя, которому понадобилась новая библиотека в Аркадии, выглядит следующим образом + +Текущий процесс относится к каждому ЯП в Аркадии: C++, Java, Python, Go +Весь текущий и грядущий workflow работы команд, отвечающих за общие библиотеки, реализован на базе Стартрека и очереди **[Contrib](https://st.yandex-team.ru/contrib)**. + +Happy Path для пользователя, которому понадобилась новая библиотека в Аркадии, выглядит следующим образом ![](https://jing.yandex-team.ru/files/alexeykruglov/contrib1.png) - + Основная задача _**Профильного комитета**_ – помочь пользователю, сообщив о наличии уже существующих решений на релевантном или другом ЯП в Аркадии (в util/library/contrib). В профильном комитете необходимо 2 человека, чтобы сделать окончательное решение. [Arcadia WG](https://abc.yandex-team.ru/services/arcadia-wg/) привлекается профильными комитетами для обсуждения сложных случаев (есть сомнения, проблемы с лицензиями). Ограничения использования библиотек контролируется [макросами управления лицензиями](https://docs.yandex-team.ru/ya-make/general/rules#licenzii). -Итого, процесс состоит из этапов: - +Итого, процесс состоит из этапов: + * Подтверждение от языкового комитета (1) * Подтверждение от языкового комитета (2) * Подтверждение от Arcadia WG, при необходимости. Все библиотеки с [запрещенными](https://wiki.yandex-team.ru/devrules/overall/aboutlicences/#zapreshhennyelicenzii) лицензиями требуют ок от Arcadia WG. -* Импорт библиотеки - * Самостоятельно - * Или с помощью Devtools - -Процесс импорта кода библиотеки (самостоятельно или с помощью Devtools) описан тут: [Как импортировать код в contrib](https://wiki.yandex-team.ru/devrules/overall/Contrib/how-to-import-contrib/) - -Итоговый процесс импорта библиотеки выглядит следующим образом: +* Импорт библиотеки + * Самостоятельно + * Или с помощью Devtools + +Процесс импорта кода библиотеки (самостоятельно или с помощью Devtools) описан тут: [Как импортировать код в contrib](https://wiki.yandex-team.ru/devrules/overall/Contrib/how-to-import-contrib/) + +Итоговый процесс импорта библиотеки выглядит следующим образом: ![alt](https://jing.yandex-team.ru/files/alexeykruglov/contrib2.png) - + ## Java (note) - -1. Для java "обновление библиотеки" – это заливка новой версии, тикет в этом случае необязателен. -2. На время переезда, библиотеку, разрабатываемую в Яндексе можно положить в контриб, если нет возможность перевезти её в Аркадию. На это нужен тикет. После заезда библиотеки в Аркадию, её нужно будет удалить из contrib и перейти на зависимость по исходникам. - + +1. Для java "обновление библиотеки" – это заливка новой версии, тикет в этом случае необязателен. +2. На время переезда, библиотеку, разрабатываемую в Яндексе можно положить в контриб, если нет возможность перевезти её в Аркадию. На это нужен тикет. После заезда библиотеки в Аркадию, её нужно будет удалить из contrib и перейти на зависимость по исходникам. + ## SLA (committees) - -Мы переложили некоторую часть вышеописанного процесса на рельсы Трекера с его тригерами и SLA. - -**5 дней** на каждый этап с участием комитета (за исключением этапа сборки библиотеки силами Devtools). С течением времени мы ожидаем оптимизации этой границы в меньшую сторону. - -Для примера, – на ответ от профильного комитета (i.e. Python) даётся 5 рабочих дней. - -Уведомления о нарушении SLA приходят заранее (пока только кому:rudskoy и кому:saint), и мы постараемся своевременно на это реагировать. - + +Мы переложили некоторую часть вышеописанного процесса на рельсы Трекера с его тригерами и SLA. + +**5 дней** на каждый этап с участием комитета (за исключением этапа сборки библиотеки силами Devtools). С течением времени мы ожидаем оптимизации этой границы в меньшую сторону. + +Для примера, – на ответ от профильного комитета (i.e. Python) даётся 5 рабочих дней. + +Уведомления о нарушении SLA приходят заранее (пока только кому:rudskoy и кому:saint), и мы постараемся своевременно на это реагировать. + ## Для переезжающих в Аркадию проектов - -Базовые рекомендации по процессу: -1. Не забывайте указывать родительский тикет для переезда из очереди ARCADIA и/или MIGRATION. -2. По умолчанию создавайте отдельные задачи на отдельные зависимости. - -Мы допускаем, что зависимостей может быть по-настоящему много, поэтому вы можете перечислить зависимости большими пачками или одним большим списком при создании тикета через форму. - -Но исполнитель задачи, при необходимости обсудить какую-либо библиотеку, попросит автора унести это обсуждение в отдельную задачу. - + +Базовые рекомендации по процессу: +1. Не забывайте указывать родительский тикет для переезда из очереди ARCADIA и/или MIGRATION. +2. По умолчанию создавайте отдельные задачи на отдельные зависимости. + +Мы допускаем, что зависимостей может быть по-настоящему много, поэтому вы можете перечислить зависимости большими пачками или одним большим списком при создании тикета через форму. + +Но исполнитель задачи, при необходимости обсудить какую-либо библиотеку, попросит автора унести это обсуждение в отдельную задачу. + ## Проектные contrib -В Аркадии не допускается существование проектных contrib. Это усложняет поиск по коду, его переиспользование и аудит лицензий. - -В процессе миграции допускается временно смигрировать библиотеку, у которой есть явные аналоги в Аркадии. Это возможно лишь при наличии коммитментов от команды со сроком на переезд на общеаркадийные компоненты. - -В некотором приближении мы будем запрещать для проектов внутри Аркадии зависеть от таких библиотек. +В Аркадии не допускается существование проектных contrib. Это усложняет поиск по коду, его переиспользование и аудит лицензий. + +В процессе миграции допускается временно смигрировать библиотеку, у которой есть явные аналоги в Аркадии. Это возможно лишь при наличии коммитментов от команды со сроком на переезд на общеаркадийные компоненты. + +В некотором приближении мы будем запрещать для проектов внутри Аркадии зависеть от таких библиотек. ## Как комитеты согласуют новые библиотеки в contrib diff --git a/contrib/python/ya.make b/contrib/python/ya.make index a80081264e..d01ced9f3a 100644 --- a/contrib/python/ya.make +++ b/contrib/python/ya.make @@ -233,7 +233,7 @@ RECURSE( django-constance django-cors-headers django-cors-middleware - django-crispy-forms + django-crispy-forms django-cron django-csp django-cte @@ -920,7 +920,7 @@ RECURSE( pytracemalloc pytz pyudev - pyusb + pyusb PyWavelets PyYAML pyzmq |