Bug 13937 - Изменить действие make_install :)
Summary: Изменить действие make_install :)
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-08 21:05 MSK by Vitaly Lipatov
Modified: 2024-02-06 10:51 MSK (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2008-01-08 21:05:23 MSK
Предлагается
1. Объявить нерекомендуемым makeinstall (поскольку это хак через 
переопределение prefix, который порой приводит к ошибкам (путям к данным с 
buildroot внутри например)).

2. Изменить make_install, добавив в него DESTDIR=%buildroot install
Это не сломает сборку старых пакетов, поскольку
а) две одинаковых цели не вызывают двойного их выполнения
б) DESTDIR друг с другом не подерётся
Если кто-то использовал make_install без DESTDIR, то это столь редкий случай, 
что его проще исправить, чем найти такой спек

3. makeinstall_std в связи с появлением нормально make_install тоже объявить 
нерекомендуемым к использованию.

4. Добавить необходимые замены в cleanup_spec.

P.S.
Как я понял, в определении макросов make_install используется только в 
определении _perl_vendor_MM_install()
Comment 1 Dmitry V. Levin 2008-01-08 21:09:17 MSK
Давайте не будем менять смысл макросов, которые существуют годами?
Зачем нам искусственно создавать несовместимость?
Comment 2 Vitaly Lipatov 2008-01-09 02:33:29 MSK
Ну так очень плохо, что они годами существуют _такие_.
Ладно, сдаюсь. Но в обмен на хорошее название нового макроса.

Просто у меня такое впечатление (15 спеков против 250-ти), что
make_install всегда используется в форме make_install install DESTDIR...

Ну а в тех редких случаях когда там не make_install DESTDIR=, там
обычно такие Makefile, которым INSTALL переопределять бессмысленно.

Кстати, как я уже писал, несовместимость такое расширение make_install не 
создаёт, по крайней мере с 95% тех спеков, с которыми я имел дело.
Comment 3 Sir Raorn 2008-01-09 02:44:29 MSK
Я против прибивания гвоздями таргета "install", какой бы он не был.
Comment 4 Slava Semushin 2008-01-09 09:08:02 MSK
(In reply to comment #0)
> 3. makeinstall_std в связи с появлением нормально make_install тоже объявить 
> нерекомендуемым к использованию.

По факту, он уже давно нерекомендуем:
http://lists.altlinux.ru/pipermail/devel/2005-June/034599.html
Comment 5 Alexey Rusakov 2009-02-15 22:51:37 MSK
(В ответ на комментарий №4)
> (In reply to comment #0)
> > 3. makeinstall_std в связи с появлением нормально make_install тоже объявить 
> > нерекомендуемым к использованию.
> 
> По факту, он уже давно нерекомендуем:
> http://lists.altlinux.ru/pipermail/devel/2005-June/034599.html
Там не написано, что он нерекомендуем. Лично меня его присутствие в rpm-build-compat несколько примирило с действительностью, хотя, конечно, это небольшое чудо, что определения в rpm-build-perl и в rpm-build-compat идентичны.

Дабы удовлетворить raorn'а, предлагаю следующее определение:

%define makeinstall_std %make_install DESTDIR=%buildroot %_makeinstall_target

И таки да, хотелось бы его увидеть в более "официальном" месте, чем rpm-build-compat. И изжить дублирование с -perl, не к добру оно.
Comment 6 Dmitry V. Levin 2009-02-20 02:17:23 MSK
(In reply to comment #5)
> Дабы удовлетворить raorn'а, предлагаю следующее определение:
> 
> %define makeinstall_std %make_install DESTDIR=%buildroot %_makeinstall_target

http://git.altlinux.org/people/ldv/packages/?p=rpm.git;h=4.0.4-alt96.15-1-g6fc32e7
Comment 7 Alexey Rusakov 2009-02-20 03:05:12 MSK
Замечательно! В Sisyphus и в 5.0, пожалуйста.
Comment 8 Dmitry V. Levin 2012-12-22 21:11:11 MSK
%makeinstall_std was added in 4.0.4-alt96.16.
Comment 9 Vitaly Lipatov 2022-07-30 18:24:29 MSK
(Ответ для Vitaly Lipatov на комментарий #0)
> Предлагается
> 1. Объявить нерекомендуемым makeinstall (поскольку это хак через 
> переопределение prefix, который порой приводит к ошибкам (путям к данным с 
> buildroot внутри например)).

Посмотрел на изменение этих макросов в апстриме rpm:
https://github.com/rpm-software-management/rpm

commit 0fddb3cbd80fc763ecacfea5b82631f7693915c2
Author: Florian Festi <ffesti@redhat.com>
Date:   Fri Mar 20 12:16:30 2015 +0100

    Add deprecation warning to %makeinstall (rhbz #1148195)


commit 89df36524bace71decee4ab4f979d4ffb449c9a7
Author: Panu Matilainen <pmatilai@redhat.com>
Date:   Wed Jan 22 10:56:00 2014 +0200

    Add %make_build macro for hiding parallel-build magic from specs (ticket #115)


> 2. Изменить make_install, добавив в него DESTDIR=%buildroot install
> Это не сломает сборку старых пакетов, поскольку
> а) две одинаковых цели не вызывают двойного их выполнения
> б) DESTDIR друг с другом не подерётся

commit 883253ea6af71f8063d7a045841c35bad22147e2
Author: Panu Matilainen <pmatilai@redhat.com>
Date:   Fri Aug 14 11:27:57 2009 +0300

    Add %make_install macro that does the "right thing" wrt modern autotools
    - old %makeinstall for broken/ancient autotools left untouched for
      backwards compatibility
Comment 10 Vitaly Lipatov 2024-02-06 10:51:36 MSK
(Ответ для Dmitry V. Levin на комментарий #1)
> Давайте не будем менять смысл макросов, которые существуют годами?
> Зачем нам искусственно создавать несовместимость?

Спасибо, что в апстриме
make_install	%{__make} install DESTDIR=%{?buildroot} INSTALL="%{__install} -p"
а у нас
make_install	%_make_bin INSTALL="%__install -p"

и это можно было изменить ещё в 2008 году, но у нас искусственно создана несовместимость, которая успешно просуществовала ещё 15 лет с момента предложения её устранить.
При этом сейчас в Сизифе 539 make_install, из которых только 121 не содержат явного указания DESTDIR:
$ git grep "%make_install" | wc -l
539