Вопрос по сборке библиотеки

Ответить
Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 24 фев 2019, 18:57

Собираю библиотеку по этому мануалу: http://wiki.rosalab.ru/ru/index.php/%D0 ... 0%B5%D0%BA

Вроде spec-файл правильно составил:

Код: Выделить всё

%define major 0
%define libname %mklibname XNVCtrl %{major}
%define devname %mklibname XNVCtrl -d

Summary:	Library providing the NV-CONTROL API
Name:		libXNVCtrl
Version:	410.78
Release:	1
License:	GPLv2
Group:		System/Libraries
Url:		https://nvidia.com
Source0:	https://github.com/NVIDIA/nvidia-settings/archive/%{version}.tar.gz
Patch0:		libxnvctrl_so.patch
Patch1:		libxnvctrl_optflags.patch

BuildRequires:	gcc
BuildRequires:	make
BuildRequires:	libx11-devel
BuildRequires:	libxext-devel

%description
This packages contains the libXNVCtrl library from the nvidia-settings
application. This library provides the NV-CONTROL API for communicating with
the proprietary NVidia xorg driver. This package does not contain the
nvidia-settings tool itself as that is included with the proprietary drivers
themselves.

#----------------------------------------------------------------------------

%package -n %{libname}
Summary:	Shared library for %{name}
Group:		System/Libraries

%description -n %{libname}
%{name} is a library providing the NV-CONTROL API.

%files -n %{libname}
%{_libdir}/%{name}.so.*
%{_docdir}/%{name}/COPYING

#----------------------------------------------------------------------------

%package -n %{devname}
Summary:	Development files for %{name}
Group:		Development/C
Requires:	%{libname} = %{EVRD}
Provides:	%{devname} = %{EVRD}
Requires:	libx11-devel

%description -n %{devname}
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.

%files -n %{devname}
%{_libdir}/%{name}.so
%{_includedir}/NVCtrl/*.h
%{_docdir}/%{name}/doc/*
%{_docdir}/%{name}/samples/*

#----------------------------------------------------------------------------

%prep
%setup -q -n nvidia-settings-%{version}
%patch0
%patch1

%build
%make OPTFLAGS="%{optflags}" -C src/%{name}

%install
mkdir -p %{buildroot}%{_libdir}
install -m755 src/%{name}/%{name}.so.0.0.0 %{buildroot}%{_libdir}

ln -s %{name}.so.0.0.0 %{buildroot}%{_libdir}/%{name}.so.0
ln -s %{name}.so.0 %{buildroot}%{_libdir}/%{name}.so
 
mkdir -p %{buildroot}%{_includedir}/NVCtrl
install -m644 src/%{name}/*.h %{buildroot}%{_includedir}/NVCtrl
 
mkdir -p %{buildroot}%{_docdir}/%{name}/{samples,doc}

install -m644 samples/* %{buildroot}%{_docdir}/%{name}/samples
install -m644 doc/*.txt %{buildroot}%{_docdir}/%{name}/doc
 
install -m644 COPYING %{buildroot}%{_docdir}/%{name}
Собирается нормально, но выдаёт предупреждение:

Код: Выделить всё

lib64XNVCtrl-devel.x86_64: W: no-dependency-on lib64XNVCtrl/lib64XNVCtrl-libs/liblib64XNVCtrl

3 packages and 0 specfiles checked; 0 errors, 1 warnings.
Здесь http://wiki.rosalab.ru/ru/index.php/Rpm ... endency-on пишут, что нужно указать зависимость. Но у меня ругается не на какую-то левую библиотеку, а типа как на самого себя. Не понимаю. Что не так?

Аватара пользователя
VictorR2007
Сообщения: 5767
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Вопрос по сборке библиотеки

Сообщение VictorR2007 » 25 фев 2019, 09:11

В секцию %install нужно написать

Код: Выделить всё

%install
%makeinstall_std -C build
или

Код: Выделить всё

%install
%makeinstall_std
если первый вариант не походит.
Если и дальше будет ругаться на зависимость,
Можно убрать из пакета devel строку
Requires: %{libname} = %{EVRD}

Но лучше добавить в пакет файл libXNVCtrl.rpmlintrc
записав его в спеке как
Source1: libXNVCtrl.rpmlintrc
с текстом

Код: Выделить всё

# False positives
addFilter("W: no-dependency-on")

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 25 фев 2019, 18:15

С %makeinstall_std не прокатило. Он начинаем в секции install пересобирать с начала. Причём весь проект. А там в нём полно лишних исходников.
А вот с файлом rpmlintrc всё стало как положено, без варнингов. Спасибо! :)

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 26 фев 2019, 04:58

Теперь используя эту библиотеку, собираю программу:

Код: Выделить всё

Summary:	A GUI overclocking utility for GNU/Linux
Name:		tuxclocker
Version:	0.1.1
Release:	1
License:	GPLv3
Group:		System/Configuration/Hardware
Url:		https://github.com/Lurkki14/tuxclocker
Source0:	https://github.com/Lurkki14/tuxclocker/archive/%{version}.tar.gz
Source1:	https://github.com/Lurkki14/tuxclocker/blob/master/LICENSE
Patch0:		fixed-build-qt5.patch
BuildRequires:	libXNVCtrl-devel
BuildRequires:	x11-driver-video-nvidia

%description
TuxClocker is a Qt5 overclocking tool. Currently supported cards are nvidia 600-series cards and newer. Support for AMD GPUs is planned.

%files
%doc LICENSE README.md
%{_bindir}/%{name}
%{_libdir}/%{name}/*
%{_datadir}/icons/hicolor/64x64/apps/%{name}.svg

%prep
%setup -q 
%patch0 -p1
cp %{SOURCE1} .

%build
qmake-qt5 QMAKE_LFLAGS=-L%{_libdir}/nvidia
%make

%install
mkdir -p %{buildroot}%{_libdir}/%{name}
install -m755 %{name} %{buildroot}%{_libdir}/%{name}

install -m755 cog.png %{buildroot}%{_libdir}/%{name}
install -m755 plusicon.png %{buildroot}%{_libdir}/%{name}
install -m755 minusicon.png %{buildroot}%{_libdir}/%{name}

mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
install -m644 gpuonfire.svg %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.svg

mkdir -p %{buildroot}%{_bindir}
cd %{buildroot}%{_bindir}
ln -s %{_libdir}/%{name}/%{name}
Собирается на отлично. Но не устанавливается. :(

Код: Выделить всё

# sudo urpmi tuxclocker-0.1.1-1-rosa2016.1.x86_64.rpm
Не удаётся установить запрошенный пакет:
tuxclocker-0.1.1-1-rosa2016.1.x86_64 (из-за неудовлетворённости libnvidia-ml.so.1()(64bit))
Ругается на другую библиотеку. Которая есть в системе:

Код: Выделить всё

# ls -l /usr/lib64/nvidia410 | grep libnvidia-ml
lrwxrwxrwx 1 root root       17 фев 26 02:30 libnvidia-ml.so -> libnvidia-ml.so.1*
lrwxrwxrwx 1 root root       22 фев 26 02:29 libnvidia-ml.so.1 -> libnvidia-ml.so.410.78*
-rwxr-xr-x 1 root root  1528152 дек 20 16:38 libnvidia-ml.so.410.78*
И rpm о ней знает:

Код: Выделить всё

# rpm -qf /usr/lib64/nvidia410/libnvidia-ml.so.1
x11-driver-video-nvidia410-410.78-2-rosa2016.1.x86_64
Пакет тоже установлен. Так чего же он ещё тогда хочет?

Может AutoReqProv: no? Но это по-моему совсем топорно. Может есть способ поэлегантнее, чтобы отучить от этой либы?

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 19:41

Попробовал собрать на ABF. Собирается: http://file-store.rosalinux.ru/api/v1/f ... ?show=true (abfworker.log)

Но не проходит тесты. Потому что вызывает ту же самую ошибку, что и у меня при локальной сборке:

Код: Выделить всё

A requested package cannot be installed:
tuxclocker-0.1.1-1-rosa2016.1.i586 (due to unsatisfied libnvidia-ml.so.1)
EXITING (pid=4332)
Test code output:  17
http://file-store.rosalinux.ru/api/v1/f ... ?show=true (tests.log)

Не видит библиотеку и всё тут. :(

Тогда подумал, что может у чувака в программе какие-то косяки.
Создал детский проект в Qt-Creator с одной кнопкой. Указал эту библиотеку, чтобы он её прилинковал:

Код: Выделить всё

LIBS += -L/usr/lib64/nvidia/ -lnvidia-ml
Собрал RPM. И... получаю тоже самое. :crazy:
Изображение
Что за чертовщина то такая?

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 27 фев 2019, 20:25

Andreas17 писал(а):
26 фев 2019, 04:58
BuildRequires: x11-driver-video-nvidia

Код: Выделить всё

$ urpmq --sourcerpm x11-driver-video-nvidia
Нет пакета с названием x11-driver-video-nvidia
Следующие пакеты содержат x11-driver-video-nvidia: x11-driver-video-nvidia-current, x11-driver-video-nvidia304, x11-driver-video-nvidia340, x11-driver-video-nvidia375, ...
Чтобы выбрать все, используйте параметр «-a»

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 27 фев 2019, 20:31

Код: Выделить всё

$ urpmf libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib64/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib64/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib/nvidia340/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib64/nvidia340/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib64/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib64/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia384:/usr/lib/nvidia384/libnvidia-ml.so.1
x11-driver-video-nvidia384:/usr/lib64/nvidia384/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib/nvidia340/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib64/nvidia340/libnvidia-ml.so.1
x11-driver-video-nvidia390:/usr/lib/nvidia390/libnvidia-ml.so.1
x11-driver-video-nvidia390:/usr/lib64/nvidia390/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib64/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib64/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia410:/usr/lib/nvidia410/libnvidia-ml.so.1
x11-driver-video-nvidia410:/usr/lib64/nvidia410/libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib/nvidia340/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia-current:/usr/lib/nvidia-current/libnvidia-ml.so.1
x11-driver-video-nvidia390:/usr/lib/nvidia390/libnvidia-ml.so.1
x11-driver-video-nvidia375:/usr/lib/nvidia375/libnvidia-ml.so.1
x11-driver-video-nvidia384:/usr/lib/nvidia384/libnvidia-ml.so.1
x11-driver-video-nvidia304:/usr/lib/nvidia304/libnvidia-ml.so.1
x11-driver-video-nvidia340:/usr/lib/nvidia340/libnvidia-ml.so.1

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 21:41

Алзим, да, это из спека для локальной сборки. На ABF немного поправил:

Код: Выделить всё

Summary:	A GUI overclocking utility for GNU/Linux
Name:		tuxclocker
Version:	0.1.1
Release:	1
License:	GPLv3
Group:		System/Configuration/Hardware
Url:		https://github.com/Lurkki14
Source0:	https://github.com/Lurkki14/tuxclocker/archive/%{version}.tar.gz
Source2:	https://github.com/Lurkki14/tuxclocker/blob/master/LICENSE
Patch0:		tuxclocker-fix-build-qt5.patch
BuildRequires:	qmake5
BuildRequires:	pkgconfig(Qt5Core)
BuildRequires:	pkgconfig(Qt5X11Extras)
BuildRequires:	pkgconfig(Qt5Widgets)
BuildRequires:	pkgconfig(Qt5PrintSupport)
BuildRequires:	pkgconfig(x11)
BuildRequires:	libXNVCtrl-devel
BuildRequires:	libglvnd-gles
BuildRequires:	libglvnd-egl
BuildRequires:	libglvnd-glx
BuildRequires:	libgldispatch0
BuildRequires:	x11-driver-video-nvidia-current
BuildRequires:	nvidia-current-devel

%description
TuxClocker is a Qt5 overclocking tool. 
Currently supported cards are nvidia 600-series cards and newer. 
Support for AMD GPUs is planned.

%files
%doc LICENSE README.md
%{_bindir}/%{name}
%{_libdir}/%{name}/*
%{_datadir}/icons/hicolor/64x64/apps/%{name}.svg
%{_datadir}/applications/%{name}.desktop

%prep
%setup -q 
%patch0 -p1
cp %{SOURCE2} .

%build
qmake-qt5 QMAKE_LIBDIR=%{_libdir}/nvidia
make


%install

# binary
mkdir -p %{buildroot}%{_libdir}/%{name}
install -m755 %{name} %{buildroot}%{_libdir}/%{name}

# resources
install -m755 cog.png %{buildroot}%{_libdir}/%{name}
install -m755 plusicon.png %{buildroot}%{_libdir}/%{name}
install -m755 minusicon.png %{buildroot}%{_libdir}/%{name}

# icon
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
install -m644 gpuonfire.svg %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.svg

# symlink
mkdir -p %{buildroot}%{_bindir}
cd %{buildroot}%{_bindir}
ln -s %{_libdir}/%{name}/%{name}

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 27 фев 2019, 21:55

Andreas17 писал(а):
27 фев 2019, 21:41
current
Я не знаю какой сейчас драйвер по умолчанию в РОСА.
Но, предположу, что если с этим драйвером собирается, то он его и ищет.
А такие библиотеки могут конфликтовать между собой.

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 22:22

Пробовал 340, 410 и вот этот последний 415.

Вот допустим на машине стоит 410, на ней собираю и тут же запускаю. А оно не запускается. :(

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 27 фев 2019, 22:29

Andreas17 писал(а):
27 фев 2019, 22:22
Вот допустим на машине стоит 410, на ней собираю и тут же запускаю. А оно не запускается.
А точно именно с нужной библиотекой собирается?
(Я не проверял и т.п.)

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 22:39

Угу. Он при сборке хочет файл libnvidia-ml.so, который находится в пакетах типа nvidiaXXX-devel или nvidia-current-devel.
Он является ссылкой на файл libnvidia-ml.so.1 из пакетов x11-driver-video-nvidiaXXX или x11-driver-video-nvidia-current.
А этот в свою очередь ссылается на саму библиотеку libnvidia-ml.so.XXX.XX.

Если установлен пакет драйвера 410, то все зависимости тащутся от этого 410. Других там просто нет.

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 27 фев 2019, 22:48

Andreas17 писал(а):
27 фев 2019, 22:39
Если установлен пакет драйвера 410, то все зависимости тащутся от этого 410. Других там просто нет.
Пусть будет по твоему))
А если эту библиотеку пересобрать в свои репы и использовать при сборке?

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 23:00

В репы не пробовал, а пробовал просто класть в пакет с программой типа SourceX:. Нормально устанавливается.

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 27 фев 2019, 23:02

Ещё как вариант, добавить в спек:

Код: Выделить всё

%define __noautoreq 'libnvidia-ml.so.1'
Но это очередной костыль.

Аватара пользователя
Алзим
Сообщения: 4361
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Вопрос по сборке библиотеки

Сообщение Алзим » 28 фев 2019, 02:14

Andreas17 писал(а):
27 фев 2019, 23:00
Нормально устанавливается.
Вопросы есть? :)

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 28 фев 2019, 06:53

Конечно. :)

У меня собирается только 32-битная версия.
На x86-64 не хватает зависимостей. http://file-store.rosalinux.ru/api/v1/f ... ?show=true

Там нужны библиотеки как 32 бита, так и 64. Если указать

Код: Выделить всё

BuildRequires:  libglvnd
То сборщик тащит все зависимости для 32 бита и всё нормально собирает. Но как его заставить ещё тащить и 64 бита, когда надо?
Добавил libopengl0, но он всё равно его хочет.

Код: Выделить всё

requested package cannot be installed:
x11-driver-video-nvidia390-390.87-1-rosa2016.1.x86_64 (due to unsatisfied libopengl0)
Все какие нашёл зависимости:

Код: Выделить всё

BuildRequires:	qmake5
BuildRequires:	pkgconfig(Qt5Core)
BuildRequires:	pkgconfig(Qt5X11Extras)
BuildRequires:	pkgconfig(Qt5Widgets)
BuildRequires:	pkgconfig(Qt5PrintSupport)
BuildRequires:	pkgconfig(x11)
BuildRequires:	libXNVCtrl-devel
BuildRequires:	libglvnd
BuildRequires:	libopengl0
BuildRequires:	nvidia390-devel

Survolog
Сообщения: 231
Зарегистрирован: 30 авг 2016, 22:30
Operating system: ROSA Fresh

Вопрос по сборке библиотеки

Сообщение Survolog » 28 фев 2019, 07:26

urpmq --provides 'зависимость'
urpmq --whatprovides 'зависимость'
Выбирать (для BuildRequires) pkgconfig() из первого списка.
Если не ищется, то использовать вторую команду (с кавычками!) Название из результата искать с первой командой.
Обычно для 32 используется lib, для 64 - lib64. Но pkgconfig их объединяет. Да и просто можно для обеих либ общие названия по первым спискам посмотреть.

Например, urpmq --provides lib64glvnd-devel даст pkgconfig(libglvnd)
Попробуйте его.
Последний раз редактировалось Survolog 28 фев 2019, 08:47, всего редактировалось 1 раз.

Survolog
Сообщения: 231
Зарегистрирован: 30 авг 2016, 22:30
Operating system: ROSA Fresh

Вопрос по сборке библиотеки

Сообщение Survolog » 28 фев 2019, 07:28

Ещё вариант %{_lib}
Но это на крайний случай, если так ничего не нашлось.

Прочитал ошибку по ссылке.
Похоже как раз вариант BuildRequires: %{_lib}opengl0 получается.
Последний раз редактировалось Survolog 28 фев 2019, 10:25, всего редактировалось 3 раза.

Survolog
Сообщения: 231
Зарегистрирован: 30 авг 2016, 22:30
Operating system: ROSA Fresh

Вопрос по сборке библиотеки

Сообщение Survolog » 28 фев 2019, 08:55

Ещё вариант (но он хуже, чем с %{_lib}) - использавать %ifarch - %else - %endif
%ifnarch есть ещё. Означает любую архитектуру, кроме указанной.

%ifarch %{ix86}
Blabla
%endif

%ifarch x86_64
...

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 28 фев 2019, 20:12

Survolog, спасибо за рекомендации.

Попробовал такую конструкцию:

Код: Выделить всё

BuildRequires:	qmake5
BuildRequires:	pkgconfig(Qt5Core)
BuildRequires:	pkgconfig(Qt5X11Extras)
BuildRequires:	pkgconfig(Qt5Widgets)
BuildRequires:	pkgconfig(Qt5PrintSupport)
BuildRequires:	pkgconfig(x11)
BuildRequires:	libXNVCtrl-devel
BuildRequires:	pkgconfig(libglvnd)
BuildRequires:	%{_lib}glvnd-egl
BuildRequires:	%{_lib}glvnd-gles
BuildRequires:	%{_lib}glvnd-glx
BuildRequires:	%{_lib}gldispatch0
BuildRequires:	%{_lib}opengl0
BuildRequires:	nvidia390-devel

%ifarch x86_64
BuildRequires:	libglvnd-egl
BuildRequires:	libglvnd-gles
BuildRequires:	libglvnd-glx
BuildRequires:	libgldispatch0
BuildRequires:	libopengl0
%endif
Сначала ставит библиотеки в зависимости от архитектуры. А потом для x64 дополнительно доставляет 32-битные.

Но что-то всё равно не работает: :(

Код: Выделить всё

A requested package cannot be installed:
tuxclocker-0.1.1-1.src (due to unsatisfied libglvnd-glx)
http://file-store.rosalinux.ru/api/v1/f ... ?show=true

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 28 фев 2019, 22:59

Начало собираться с такими зависимостями:

Код: Выделить всё

BuildRequires:	qmake5
BuildRequires:	pkgconfig(Qt5Core)
BuildRequires:	pkgconfig(Qt5X11Extras)
BuildRequires:	pkgconfig(Qt5Widgets)
BuildRequires:	pkgconfig(Qt5PrintSupport)
BuildRequires:	libXNVCtrl-devel
BuildRequires:	nvidia-devel >= 390.87
Но валится на ошибках в исходниках. Глянул лог, там используется для сборки драйвер 304 версии. :shock:
Ещё бы... На такую археологическую древность прога не рассчитана.

А если прописать nvidia390-devel или nvidia410-devel, то появляются старые добрые ошибки с зависимостями.

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 01 мар 2019, 02:29

Предполагаю, что для x86-64 не подключается репозиторий с пакетами i586. И поэтому rpmbuild не видит зависимости. Как быть?

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 01 мар 2019, 23:27

Полазил в настройках. Надеялся подключить http://abf-downloads.rosalinux.ru/rosa2 ... tory/i586/. Но видит только репозитории типа personal. :(

Может есть какой макрос, который отключает зависимости в сторонних пакетах? Потому что кто-то привязал 32-битные библиотеки к 64-битному драйверу NVIDIA:

Код: Выделить всё

# sudo urpmi x11-driver-video-nvidia410
Для удовлетворения зависимостей будут установлены следующие пакеты:
 Пакет                          Версия       Релиз         Dist  DEpoch Платформа 
(источник «Main Updates»)
 lib64gldispatch0               0.2.999      0.20170911.7  rosa  2016.1 x86_64 
 lib64glvnd-egl                 0.2.999      0.20170911.7  rosa  2016.1 x86_64 
 lib64glvnd-gles                0.2.999      0.20170911.7  rosa  2016.1 x86_64 
 lib64glvnd-glx                 0.2.999      0.20170911.7  rosa  2016.1 x86_64 
 lib64opengl0                   0.2.999      0.20170911.7  rosa  2016.1 x86_64 
 libglvnd                       0.2.999      0.20170911.7  rosa  2016.1 x86_64 
(источник «Main32 Updates»)
 libgldispatch0                 0.2.999      0.20170911.7  rosa  2016.1 i586 
 libglvnd-egl                   0.2.999      0.20170911.7  rosa  2016.1 i586 
 libglvnd-gles                  0.2.999      0.20170911.7  rosa  2016.1 i586 
 libglvnd-glx                   0.2.999      0.20170911.7  rosa  2016.1 i586 
 libopengl0                     0.2.999      0.20170911.7  rosa  2016.1 i586 
(источник «Non-free Updates»)
 nvidia410-doc-html             410.78       2             rosa  2016.1 x86_64 (рекомендуется)
 x11-driver-video-nvidia410     410.78       2             rosa  2016.1 x86_64 
Будет использовано 252МБ дополнительного дискового пространства.
Будет загружено 60МБ пакетов.
Установить 13 пакетов? (Y/n)

Аватара пользователя
Andreas17
Сообщения: 325
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640, 12 ГБ ОЗУ, NVIDIA GTX 650, РОСА Fresh R11
Откуда: Москва

Вопрос по сборке библиотеки

Сообщение Andreas17 » 02 мар 2019, 20:56

Нашёл причину всех бед проблему сборки на ABF. В файле спека nvidia410.spec для драйвера NVIDIA:

Код: Выделить всё

# Pull the 32-bit GLVND libraries in as well, the 32-bit applications
# running on 64-bit systems (e.g. Steam) might need them.
Requires:	libgldispatch0
Requires:	libopengl0
Requires:	libglvnd-glx
Requires:	libglvnd-egl
Requires:	libglvnd-gles
# ldconfig -X in the post script must see these libraries installed:
Requires(post):	libglvnd-glx
Requires(post):	libglvnd-egl
Requires(post):	libglvnd-gles
%endif
Как видно, для 64-битного драйвера в зависимости прописали 32-битные библиотеки.
Если они так нужны для Стима, то к Стиму бы их и прикрепили. Он же вроде как 32-разрядный.
Ну, или в rpm5 есть мягкие зависимости - Suggests.

А то получается, что невозможно собрать ни один проект, использующий библиотеки NVIDIA.

Ответить