Bug 34237 - use one command definition for %make_build
Summary: use one command definition for %make_build
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-11-26 15:35 MSK by viy
Modified: 2018-04-05 22:34 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description viy 2017-11-26 15:35:17 MSK
столкнулся при импорте, что наше определение %make_build
хуже, чем в других дистрибутивах.

Предлагаю определить одной командой, например
%make_build %_make_bin -j${NPROCS:-%__nprocs}
работает в т.ч. под ash.

наше старое определение
%make_build [ -n "$NPROCS" ] || NPROCS=%__nprocs; %_make_bin -j$NPROCS
ломает конструкции вида
LD_LIBRARY_PATH=.libs %make_build check
Comment 1 Dmitry V. Levin 2017-12-11 01:43:38 MSK
(In reply to comment #0)
> столкнулся при импорте, что наше определение %make_build
> хуже, чем в других дистрибутивах.
> 
> Предлагаю определить одной командой, например
> %make_build %_make_bin -j${NPROCS:-%__nprocs}
> работает в т.ч. под ash.

Так, конечно, лучше, но тогда переменная NPROCS не будет определена в результате использования %make_build.  Надо пройтись по спекфайлам и посмотреть, не используется ли в них NPROCS после %make_build без инициализации.
Comment 2 viy 2017-12-11 01:59:28 MSK
прошелся, нашел кандидаты с помощью
.repocop/testcache/specfile $ grep NPROC `grep -rl '%make_build'`
kernel-image-std-def-4.9.67-alt1.src.spec:export NPROCS=%nprocs
kernel-image-std-pae-4.4.104-alt1.src.spec:export NPROCS=%nprocs
kernel-image-un-def-4.14.4-alt1.src.spec:export NPROCS=%nprocs
qcad-3.19.1.0-alt2.src.spec:export NPROCS=1
samba-4.6.11-alt2.S1.src.spec:[ -n "$NPROCS" ] || NPROCS=%__nprocs; export JOBS=$NPROCS
samba-4.6.11-alt2.S1.src.spec:%make_build NPROCS=%__nprocs
samba-DC-4.6.11-alt2.S1.src.spec:[ -n "$NPROCS" ] || NPROCS=%__nprocs; export JOBS=$NPROCS
samba-DC-4.6.11-alt2.S1.src.spec:%make_build NPROCS=%__nprocs
0ad-0.0.22-alt1.src.spec:[ -n "$NPROCS" ] || NPROCS=%__nprocs; build/workspaces/update-workspaces.sh \
0ad-0.0.22-alt1.src.spec:       -j$NPROCS \
bamg-0.60-alt4.src.spec:NPROCS=1
chasm-1.4.0-alt5.cvs20131111.src.spec:[ %__nprocs -gt %max_nprocs ] && NPROCS=%max_nprocs
dvdisaster-0.72.3-alt3.src.spec:NPROCS=1
kernel-image-ovz-el-2.6.32-alt158.src.spec:[ "%__nprocs" -gt "%nprocs" ] || export NPROCS=%nprocs
openldap-2.4.45-alt2.src.spec:export NPROCS=1
portaudio2-19-alt6.src.spec:[ %__nprocs -le 3 ] || export NPROCS=3
qt-creator-4.4.1-alt2.src.spec:NPROCS=1
qt5-webengine-5.9.2-alt1.S1.src.spec:NUM_PROCS=$NPROCS
qt5-webkit-5.9.2-alt2.S1.src.spec:[ "%__nprocs" != 1 ] || export NPROCS=3
yate-3.3.2-alt5.src.spec:NPROCS=1
yices-2.3.0-alt2.src.spec:NPROCS=1

посмотрел в спеки - нет, не используется без определения.
Comment 3 Repository Robot 2018-01-07 03:43:15 MSK
rpm-build-4.0.4-alt107 -> sisyphus:

Sun Jan 07 2018 Dmitry V. Levin <ldv@altlinux> 4.0.4-alt107
- compare_deps: fixed a bug in handling epochs.
- platform.in:
  + %optflags_core: added -frecord-gcc-switches (see: #34162);
  + %make_build: implemented as a simple command (closes: #34237).
- genCpioListAndHeader: implemented remapping of device and inode numbers
  (by Vladimir D. Seleznev and me; closes: #34398).
Comment 4 Ivan Zakharyaschev 2018-04-05 22:34:14 MSK
(In reply to comment #1)
> (In reply to comment #0)
> > столкнулся при импорте, что наше определение %make_build
> > хуже, чем в других дистрибутивах.
> > 
> > Предлагаю определить одной командой, например
> > %make_build %_make_bin -j${NPROCS:-%__nprocs}
> > работает в т.ч. под ash.
> 
> Так, конечно, лучше, но тогда переменная NPROCS не будет определена в
> результате использования %make_build.  Надо пройтись по спекфайлам и
> посмотреть, не используется ли в них NPROCS после %make_build без
> инициализации.

А можно было бы так, чтобы значение запоминалось, как раньше:

%make_build %_make_bin -j${NPROCS:=%__nprocs}

Реальных примеров использования я не встречал, но чуть было не написал -j$NPROCS в одном спеке, а потом переписал на %_smp_mflags .

Теперь разошлось значение у rpm-build и rpm -- https://bugzilla.altlinux.org/show_bug.cgi?id=34684 .