From: Arseny Maslennikov <arseny@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] I: cmake macros
Date: Mon, 31 May 2021 16:52:20 +0300
Message-ID: <YLTqFKjX/R+P0eHT@cello> (raw)
In-Reply-To: <20210531162831.cf38dca70ecca7d37808099d@altlinux.org>
[-- Attachment #1: Type: text/plain, Size: 7448 bytes --]
On Mon, May 31, 2021 at 04:28:31PM +0300, Andrey Savchenko wrote:
> On Mon, 31 May 2021 15:53:25 +0300 Arseny Maslennikov wrote:
> > On Mon, May 31, 2021 at 03:13:54PM +0300, Anton Farygin wrote:
> > > On 31.05.2021 15:09, Sergey V Turchin wrote:
> > > >
> > > Я знаю про это задание, но в этом изменении слишком кардинально меняется
> > > содержимое макроса, что вряд ли приемлемо для stable репозитория.
> > >
> > > Т.е. - условно говоря если раньше макрос ничего не делал, то теперь делает.
> >
> > В 272559 все пакеты, явно использовавшие %cmake_install в его
> > (бесполезном, кмк) старом значении, исправлены.
> > >
> > > Да и с BUILD непонятно зачем сделано. Было бы интересно услышать комментарии
> > > по этому поводу.
> >
> > Одна из преследуемых целей — спеки не должны зависеть от конкретного
> > значения %_cmake__builddir, которое они не выставили явно, поэтому их
> > исправление там, где в них явно про некоторые файлы написано BUILD/*,
> > всё равно планировалось. Изменив BUILD на что-то ещё, легко узнать
> > список всех пакетов, нарушающих этот принцип.
> >
> > Файловые объекты с "простым" именем BUILD, build, ... с заметной долей
> > вероятности могут уже присутствовать в
> > /usr/src/RPM/BUILD/$tarball_root, что вносит в подготовку спека лишний
> > неавтоматизируемый шаг по корректной/удобной починке ошибки EEXIST на
> > `mkdir %_cmake__builddir'.
>
> mkdir -p решает эту проблему в 99.999% случаев (теоретически
> возможно, что BUILD — это файл или используетс апстримом для иных
> нужд, но на практике такое вряд ли встречается).
Я встречал 2 раза, это уже больше, чем 0.001%. :)
Например, в проектах на google c++-стеке встречаются сборочные скрипты
для Bazel, точка входа в которые называется именно BUILD.
В одном пакете я даже видел ln -s build BUILD.
>
> > В долгосрочной перспективе нам уместно
> > (медленно, но верно) стремиться к тому, чтобы спеки можно было на ~~90%
> > писать автоматически.
>
> Viy@ давно разработал и предлагает неплохие инструменты
> автоматизации, но его идеи раз за разом отвергают.
У меня сложилось впечатление, что основные причины недоверия — высокий
порог входа в эти инструменты других мейнтейнеров и непонятная
выпускающим менеджерам репозитория цепочка ответственности за разломы
этого репозитория.
По тем или иным причинам их не встраивают в рекомендуемый workflow,
например, новичка в ALT Linux Team; новички о них не знают, а матёрым
мейнтейнерам надо ехать, а не автомобиль проектировать.
> Чем данная
> ситуация отличаются? У нас большая часть разработчиков считает, что
> писать спеки нужно вручную. И в случае со сложными, нетривиальными
> пакетами они правы. Но если и CPAN и т.п., где подход viy@ куда
> более практичен.
>
> > Остаётся только одно соображение в защиту имени BUILD: при ручном
> > вмешательстве человека с клавиатурой в хешерницу с результатом
> > почему-либо упавшей сборки %_target_platform (или первые 1-2 символа и
> > tab-complete) придётся набирать руками. С этой точки зрения значение по
> > умолчанию "build-%_target_platform" или даже "build" было бы лучше, а
> > "BUILD" — хуже этих двух, потому что shift надо нажимать и коллизия с
> > /usr/src/RPM/BUILD.
> >
> > Вот я и остановился перед выбором из четырёх:
> > %_target_platform, build-%_target_platform, build, build-%name-%EVR и
> > выбрал первое. Но я на своём варианте не настаиваю, и об этом умолчании
> > можно договориться и поменять в сизифе в любой момент обозримого
> > будущего, не сломав ни один спек.
> >
> > Так оказалось, что %_target_platform довольно удобен:
> > конкретно %_target_platform уже используется у нас в макросах для meson,
> > например; никто не жаловался на возникающие сбои. Да и при чтении лога
> > семейство архитектур лишний раз бросается в глаза. В самих спеках
> > %_target_platform явно употребляться не будет, коллизия по имени с уже
> > существующими файлами маловероятна.
> >
> > Константным выражением, на которое можно положиться в спеке, выступает
> > %_cmake__builddir; многие исправленные спеки в обсуждаемом сборочном
> > задании явно используют этот макрос там, где cmake --install не хватает
> > и надо руками залезть.
>
> По-моему, ты перемудрил: решая несуществующую проблему с именем
> BUILD по-умолчанию и теоретически (и только!) возможной коллизии,
> ты создал очень даже практическую проблему лишнего уровня
> абстракции и реальной поломки сотен пакетов.
Откуда же там сотни?
specs% git grep '%cmake_build [A-Z_a-z]' | wc
45 96 2162
Случаи, не входящие сюда, могут быть рассмотрены в единичном порядке.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2021-05-31 13:52 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-31 9:20 Arseny Maslennikov
2021-05-31 10:09 ` Andrey Cherepanov
2021-05-31 10:22 ` Grigory Ustinov
2021-05-31 10:38 ` Andrey Cherepanov
2021-05-31 10:50 ` Arseny Maslennikov
2021-05-31 11:06 ` Andrey Cherepanov
2021-05-31 11:53 ` [devel] noarch check failed Dmitry V. Levin
2021-05-31 14:26 ` Vladimir D. Seleznev
2021-05-31 14:28 ` Dmitry V. Levin
2021-05-31 14:32 ` Vladimir D. Seleznev
2021-05-31 14:55 ` Dmitry V. Levin
2021-05-31 17:03 ` Andrey Savchenko
2021-05-31 17:36 ` Vladimir D. Seleznev
2021-05-31 14:30 ` Arseny Maslennikov
2021-05-31 15:06 ` Arseny Maslennikov
2021-05-31 15:52 ` Yuri Sedunov
2021-06-01 9:16 ` Yuri Sedunov
2021-05-31 10:45 ` [devel] I: cmake macros Arseny Maslennikov
2021-05-31 13:49 ` Aleksei Nikiforov
2021-05-31 14:06 ` [devel] noarch check failing Arseny Maslennikov
2021-05-31 16:33 ` [devel] I: cmake macros Arseny Maslennikov
2021-06-01 7:44 ` Aleksei Nikiforov
2021-05-31 10:39 ` Dmitry V. Levin
2021-05-31 10:46 ` Arseny Maslennikov
2021-05-31 12:02 ` Anton Farygin
2021-05-31 12:09 ` Sergey V Turchin
2021-05-31 12:13 ` Anton Farygin
2021-05-31 12:53 ` Arseny Maslennikov
2021-05-31 12:58 ` Sergey V Turchin
2021-05-31 13:02 ` Sergey V Turchin
2021-05-31 14:22 ` Arseny Maslennikov
2021-05-31 15:00 ` Anton Farygin
2021-05-31 15:04 ` Sergey V Turchin
2021-05-31 15:19 ` Anton Farygin
2021-06-02 7:58 ` Sergey V Turchin
2021-05-31 15:01 ` Sergey V Turchin
2021-05-31 13:06 ` Sergey V Turchin
2021-05-31 13:09 ` Sergey V Turchin
2021-05-31 13:11 ` Sergey V Turchin
2021-05-31 13:17 ` Sergey V Turchin
2021-05-31 13:28 ` Andrey Savchenko
2021-05-31 13:52 ` Arseny Maslennikov [this message]
2021-05-31 14:28 ` Arseny Maslennikov
2021-05-31 14:39 ` Andrey Savchenko
2021-05-31 14:52 ` [devel] циферки (was: I: cmake macros) Arseny Maslennikov
2021-05-31 14:57 ` Andrey Savchenko
2021-05-31 15:10 ` Arseny Maslennikov
2021-05-31 15:18 ` Andrey Savchenko
2021-05-31 18:07 ` [devel] I: cmake macros Arseny Maslennikov
2021-06-02 7:56 ` Sergey V Turchin
2021-06-15 17:40 ` Mikhail Novosyolov
2021-05-31 15:01 ` Andrey Savchenko
2021-05-31 15:29 ` Arseny Maslennikov
2021-05-31 15:38 ` Anton Farygin
2021-05-31 15:43 ` Grigory Ustinov
2021-05-31 17:40 ` Andrey Savchenko
2021-05-31 15:51 ` Andrey Savchenko
2021-05-31 16:15 ` Arseny Maslennikov
2021-05-31 17:11 ` Andrey Savchenko
2021-06-02 8:02 ` Sergey V Turchin
2021-06-04 8:49 ` Sergey V Turchin
2021-06-15 12:20 ` Sergey Afonin
2021-06-15 18:26 ` Arseny Maslennikov
2021-06-16 19:00 ` Mikhail Novosyolov
2021-06-16 20:31 ` Vladislav Zavjalov
2021-06-22 5:24 ` Michael Shigorin
2021-06-22 8:51 ` Arseny Maslennikov
2021-06-23 10:55 ` Sergey Afonin
2021-06-23 11:21 ` Arseny Maslennikov
2021-07-07 10:37 ` Nikolai Kostrigin
2021-07-07 11:35 ` [devel] MySQL в p9 (was: I: cmake macros) Arseny Maslennikov
2021-07-07 12:17 ` Nikolai Kostrigin
2021-07-07 16:18 ` [devel] I: cmake macros Arseny Maslennikov
2021-07-08 11:34 ` Nikolai Kostrigin
2021-06-25 14:30 ` [devel] I: cmake macros already in p9 Arseny Maslennikov
2021-07-06 6:22 ` Sergey Afonin
2021-07-06 9:31 ` [devel] MySQL + mysql-workbench-community в p9 (was Re: I: cmake macros already in p9) Nikolai Kostrigin
2021-07-06 9:51 ` Nikolai Kostrigin
2021-07-06 12:43 ` Nikolai Kostrigin
2021-07-06 15:27 ` Sergey Y. Afonin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YLTqFKjX/R+P0eHT@cello \
--to=arseny@altlinux.org \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git