[devel] %_prefix и mailman

Arseny Maslennikov arseny на altlinux.org
Вс Июн 2 13:06:47 MSK 2024


On Thu, May 30, 2024 at 08:56:32PM +0300, Anton Farygin wrote:
> On 30.05.2024 14:16, Arseny Maslennikov wrote:
> > On Thu, May 30, 2024 at 02:19:46AM +0300, Dmitry V. Levin wrote:
> > > On Wed, May 29, 2024 at 09:54:53PM +0300, Alexey Shabalin wrote:
> > > > mailman    lakostis ldv
> > > > sisyphus_check: check-subdirs ERROR: subdirectories packaging violation
> > > > /.out/mailman-2.1.39-alt1.x86_64.rpm: invalid systemd unit path:
> > > > /usr/share/mailman/lib/systemd/system/mailman.service
> > > > Думаю так и должно быть. Непонятно почему сейчас пропускают такой пакет.
> > > Сейчас там /lib/systemd/system/mailman.service, потому и пропускают.
> > > Непонятно, как его занесло в новое место.
> > > Может быть, потому что в пакете
> > > %define _prefix /usr/share/%name

Я удивлён, как этот пакет вообще работает; см. ниже.

> > > и новые макросы теперь используют %_prefix?
> > > В таком случае они зря используют %_prefix.
> > А как тогда /usr обозначать?
> > 
> > И вообще: это что же, если какой-то пакет себе переопределит _bindir, то
> > и %_bindir использовать будет нельзя? Где-то должны быть границы.
>   /usr/lib/rpm/x86_64-linux/macros:%_prefix               /usr
>   /usr/lib/rpm/x86_64-linux/macros:%prefix        %_prefix
>   /usr/lib/rpm/x86_64-linux/macros:%_menudir      %_prefix/lib/menu
>   /usr/lib/rpm/x86_64-linux/macros:%_rpmlibdir    %_prefix/lib/rpm

Более того:
  % git grep -C3 -w _prefix
  doc/manual/macros-packaging similar to the autoconf variables that are used in building packages:
  doc/manual/macros-
  doc/manual/macros-\verbatim
  doc/manual/macros:    %_prefix		/usr
  doc/manual/macros:    %_exec_prefix	%{_prefix}
  doc/manual/macros-    %_bindir		%{_exec_prefix}/bin
  doc/manual/macros-    %_sbindir		%{_exec_prefix}/sbin
  doc/manual/macros-    %_libexecdir	%{_exec_prefix}/libexec
  doc/manual/macros:    %_datadir		%{_prefix}/share
  doc/manual/macros:    %_sysconfdir	%{_prefix}/etc
  doc/manual/macros-    %_sharedstatedir	/var/lib
  doc/manual/macros-    %_localstatedir	/var/lib
  doc/manual/macros-    %_libdir		%{_exec_prefix}/lib
  doc/manual/macros:    %_includedir	%{_prefix}/include
  doc/manual/macros-    %_oldincludedir	/usr/include
  doc/manual/macros:    %_infodir		%{_prefix}/info
  doc/manual/macros:    %_mandir		%{_prefix}/man
  doc/manual/macros-\endverbatim
  doc/manual/macros-
  doc/manual/macros-*/
  --
  doc/manual/spec-\verbatim
  doc/manual/spec-	rm -f $RPM_BUILD_DIR/filelist.rpm 
  doc/manual/spec-	echo '%defattr(-,root,root)' >> $RPM_BUILD_DIR/filelist.rpm 
  doc/manual/spec:	find $RPM_BUILD_ROOT/%{_prefix} -type f -print | \
  doc/manual/spec-	    sed "s!$RPM_BUILD_ROOT!!" |  perl -pe 's/([?|*.\'"])/\\$1/g' \
  doc/manual/spec-		>> $RPM_BUILD_DIR/filelist.rpm 
  doc/manual/spec-
  --
  macros.in-# ---- configure macros.
  macros.in-#	Macro(s) slavishly copied from autoconf's config.status.
  macros.in-#
  macros.in:%_prefix		@prefix@
  macros.in:%_exec_prefix		%{_prefix}
  macros.in-%_bindir		%{_exec_prefix}/bin
  macros.in-%_sbindir		%{_exec_prefix}/sbin
  macros.in-%_libexecdir		%{_exec_prefix}/lib
  macros.in:%_datadir		%{_prefix}/share
  macros.in-%_sysconfdir		/etc
  macros.in-%_sharedstatedir	%{_var}/lib
  macros.in-%_localstatedir		%{_var}/lib
  macros.in-%_lib			lib
  macros.in-%_libdir		%{_exec_prefix}/%{_lib}
  macros.in:%_includedir		%{_prefix}/include
  macros.in-%_oldincludedir		/usr/include
  macros.in-%_infodir		%{_datadir}/info
  macros.in-%_mandir		%{_datadir}/man
  --
  platform.in-#==============================================================================
  platform.in-# ---- configure macros.
  platform.in-#
  platform.in:%_prefix		@prefix@
  platform.in-%_exec_prefix		@exec_prefix@
  platform.in-%_bindir		@bindir@
  platform.in-%_sbindir		@sbindir@
  --
  platform.in-  configure_runstatedir_flags= ; \
  platform.in-  %{?_configure_use_runstatedir:%{_configure_detect_runstatedir}} \
  platform.in-  %{_configure_script} %{?_configure_target:%{_configure_target}} \\\
  platform.in: 	--prefix=%{_prefix} \\\
  platform.in-	--exec-prefix=%{_exec_prefix} \\\
  platform.in-	--bindir=%{_bindir} \\\
  platform.in-	--sbindir=%{_sbindir} \\\
  --
  platform.in-%_makeinstall_target	install
  platform.in-%makeinstall \
  platform.in-  %__make INSTALL="/usr/libexec/rpm-build/install -p" \\\
  platform.in:	prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\
  platform.in-	exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\
  platform.in-	bindir=%{?buildroot:%{buildroot}}%{_bindir} \\\
  platform.in-	sbindir=%{?buildroot:%{buildroot}}%{_sbindir} \\\
  --
  platform.in-
  platform.in-%_internal_gpg_path	/usr/lib/alt-gpgkeys
  platform.in-
  platform.in:%prefix	%_prefix
  platform.in-
  platform.in-%clean_buildroot	%{?buildroot:%([ -n "$(echo %buildroot |tr -d /.)" ] && echo "%__chmod -Rf u+rwX -- %buildroot 2>/dev/null ||:; %__rm -rf -- %buildroot")}
  platform.in-
  --
  platform.in-%_man9dir		%_mandir/man9
  platform.in-
  platform.in-# Desktop-related directories.
  platform.in:%_menudir	%_prefix/lib/menu
  platform.in-%_iconsdir	%_datadir/icons
  platform.in-%_miconsdir	%_iconsdir/hicolor/16x16/apps
  platform.in-%_niconsdir	%_iconsdir/hicolor/32x32/apps
  --
  platform.in-
  platform.in-# Games directories.
  platform.in-%_gamesdir	games
  platform.in:%_gamesbindir	%{_prefix}/%{_gamesdir}
  platform.in-%_gamesdatadir	%{_datadir}/%{_gamesdir}
  platform.in-
  platform.in-# X11 directories.
  platform.in:%_x11dir		%{_prefix}
  platform.in-%_x11bindir	%{_bindir}
  platform.in-%_x11libdir	%{_libdir}
  platform.in-%_x11x11libdir	%{_libdir}/X11
  --
  platform.in-%_x11datadir	%{_datadir}
  platform.in-%_x11fontsdir	%{_datadir}/X11/fonts
  platform.in-%_x11modulesdir	%{_libdir}/X11/modules
  platform.in:%_x11drvddir	%{_prefix}/libexec/X11/drv.d
  platform.in-%_x11sysconfdir	%{_sysconfdir}/X11
  platform.in-%_x11appconfdir	%{_sysconfdir}/X11/app-defaults
  platform.in-
  --
  platform.in-%_emacslispdir	%{_datadir}/emacs/site-lisp
  platform.in-
  platform.in-# RPM directories.
  platform.in:%_rpmlibdir	%_prefix/lib/rpm
  platform.in-%_rpmmacrosdir	%_rpmlibdir/macros.d
  platform.in-
  platform.in-# target libdir.
  --
  rpm-4_0.spec-%define def_without() %{expand:%%{!?_with_%{1}: %%{!?_without_%{1}: %%global _without_%{1} --without-%{1}}}}
  rpm-4_0.spec-%define if_with() %if %{expand:%%{?_with_%{1}:1}%%{!?_with_%{1}:0}}
  rpm-4_0.spec-%define if_without() %if %{expand:%%{?_without_%{1}:1}%%{!?_without_%{1}:0}}
  rpm-4_0.spec:%define _rpmlibdir %_prefix/lib/rpm
  rpm-4_0.spec-
  rpm-4_0.spec-%def_with libelf
  rpm-4_0.spec-%def_without apidocs
  --
  rpm-4_0.spec-# set-version helpers
  rpm-4_0.spec-%rpmattr %_rpmlibdir/mkset
  rpm-4_0.spec-%rpmattr %_rpmlibdir/setcmp
  rpm-4_0.spec:%rpmattr %_prefix/libexec/rpm-build
  rpm-4_0.spec-%if "%_lib" == "lib"
  rpm-4_0.spec-%rpmdatattr %_rpmlibdir/verify-elf-non-lfs-funcs.list
  rpm-4_0.spec-%endif

> Ну тогда и это надо чинить

Это не чинить, а ломать. Предложение уйти от _prefix — это что-то
навроде предложения уйти на что-то категорически не FHS-подобное.
Потребуются фундаментальные изменения вообще во всех спеках.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20240602/b4eeae08/attachment-0001.bin>


Подробная информация о списке рассылки Devel