ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке
@ 2007-06-14  4:50 Eugene Prokopiev
  2007-06-14  5:01 ` Slava Semushin
  0 siblings, 1 reply; 5+ messages in thread
From: Eugene Prokopiev @ 2007-06-14  4:50 UTC (permalink / raw)
  To: Devel

Здравствуйте!

Собирая новую версию callweaver, столкнулся со следующей проблемой в 
инсталл-скриптах:

$ make DESTDIR=~/callweaver-install install

создает структуру каталогов с local:

$ ls ~/callweaver-install/usr/
local
$ ls ~/callweaver-install/usr/local/
bin  etc  include  lib  sbin  share  var

С такой проблемой я сталкивался, собирая dbmail, и решил ее 
использованием %makeinstall. Но если сказать (именно в это раскрывается 
%makeinstall):

$ make 'INSTALL=/bin/install -p' prefix=~/callweaver-install/usr 
exec_prefix=~/callweaver-install/usr bindir=~/callweaver-install/usr/bin 
sbindir=~/callweaver-install/usr/sbin 
sysconfdir=~/callweaver-install/etc 
datadir=~/callweaver-install/usr/share 
includedir=~/callweaver-install/usr/include 
libdir=~/callweaver-install/usr/lib 
libexecdir=~/callweaver-install/usr/lib 
localstatedir=~/callweaver-install/var/lib 
sharedstatedir=~/callweaver-install/usr/com 
mandir=~/callweaver-install/usr/share/man 
infodir=~/callweaver-install/usr/share/info install

То получим очень странное сообщение:

test -z "/usr/src/callweaver-install/usr/lib/callweaver" || /bin/mkdir 
-p "/usr/src/callweaver-install/usr/lib/callweaver"
  /bin/sh ../libtool --mode=install /bin/install -p  'libcallweaver.la' 
'/usr/src/callweaver-install/usr/lib/callweaver/libcallweaver.la'
libtool: install: error: cannot install `libcallweaver.la' to a 
directory not ending in /usr/local/lib/callweaver
make[4]: *** [install-opbxlibLTLIBRARIES] Error 1

Если задействовать %makeinstall в спеке, то ошибка будет другой:

/usr/bin/make  install-data-hook
make[3]: Entering directory `/usr/src/RPM/BUILD/callweaver-1.1.99.20070614'
for install_dir in 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/usr/lib/callweaver/modules 
/usr/src/tmp/callweaver-buildroot/usr/lib/callweaver/modules/icd 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver/cdr-custom 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver/cdr-csv 
/usr/src/tmp/callweaver-buildroot/var/lib/run/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver/outgoing 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver/voicemail 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/moh 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/keys 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/images; \
         do \
                 if test ! -d "${install_dir}"; \
                 then \
                         mkdir -p ${install_dir}; \
                         chmod 0750 ${install_dir}; \
                 fi; \
                 if test -z ""; \
                 then \
                         chown callweaver:callweaver ${install_dir}; \
                 fi; \
         done
chown: `callweaver:callweaver': invalid user
...

Кажется, именно поэтому предыдущую версию callweaver я собирал с make 
DESTDIR=%buildroot install.

Что делать теперь?

-- 
С уважением, Прокопьев Евгений


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке
  2007-06-14  4:50 [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке Eugene Prokopiev
@ 2007-06-14  5:01 ` Slava Semushin
  2007-06-14  5:51   ` Eugene Prokopiev
  0 siblings, 1 reply; 5+ messages in thread
From: Slava Semushin @ 2007-06-14  5:01 UTC (permalink / raw)
  To: ALT Devel discussion list

2007/6/14, Eugene Prokopiev <prokopiev / stc.donpac.ru>:
[...]
> $ make DESTDIR=~/callweaver-install install
>
> создает структуру каталогов с local:

Обычно %configure вызывает ./configure скрипт с параметрами для
установки в /usr. У вас, видимо, это не так. Сам make install не
виноват -- ему всё равно что создавать и куда ставить.

[...]
>                  if test -z ""; \
>                  then \
>                          chown callweaver:callweaver ${install_dir}; \
>                  fi; \
>          done
> chown: `callweaver:callweaver': invalid user
[...]

Он пытается устанавливать права в чруте и ему не дают. Я бы запатчил
Makefile'ы, чтобы они не делали никаких chown'ов и выставил
аналогичные права на файлы с в секции %files с помощью %attr.

PS: Возможно, мой совет неверный :)


-- 
+ Slava Semushin | slava.semushin @ gmail.com
+ ALT Linux Team | php-coder @ altlinux.ru

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке
  2007-06-14  5:01 ` Slava Semushin
@ 2007-06-14  5:51   ` Eugene Prokopiev
  2007-06-14  7:11     ` Damir Shayhutdinov
  0 siblings, 1 reply; 5+ messages in thread
From: Eugene Prokopiev @ 2007-06-14  5:51 UTC (permalink / raw)
  To: ALT Devel discussion list

Slava Semushin пишет:
> 2007/6/14, Eugene Prokopiev <prokopiev / stc.donpac.ru>:
> [...]
> 
>>$ make DESTDIR=~/callweaver-install install
>>
>>создает структуру каталогов с local:
> 
> 
> Обычно %configure вызывает ./configure скрипт с параметрами для
> установки в /usr. У вас, видимо, это не так. Сам make install не
> виноват -- ему всё равно что создавать и куда ставить.

Вы имеете ввиду --prefix? Сейчас попробовал ./configure 
--prefix=/usr/src/callweaver-install и make 
DESTDIR=/usr/src/callweaver-install install, результат странный:

$ ls /usr/src/callweaver-install
include  lib  sbin  share  usr  var
$ ls /usr/src/callweaver-install/sbin/
callweaver  callweaver_cli  safe_callweaver
$ ls /usr/src/callweaver-install/var/
lib  log  run  spool

пока нормально, но дальше хуже:

$ ls /usr/src/callweaver-install/lib/callweaver/modules/
icd
$ ls 
/usr/src/callweaver-install/usr/src/callweaver-install/lib/callweaver/modules/
app_adsiprog.la          app_getcpeid.so         app_setcdruserfield.la 
        cdr_odbc.so           format_g723_1.la      func_moh.so

т.е. то, что должно лежать в /lib/callweaver/modules/, уезжает очень 
далеко :(

да, без DESTDIR тоже все плохо, т.к. для установки содержимого /sbin 
прав оказывается недостаточно ...

> 
> [...]
> 
>>                 if test -z ""; \
>>                 then \
>>                         chown callweaver:callweaver ${install_dir}; \
>>                 fi; \
>>         done
>>chown: `callweaver:callweaver': invalid user
> 
> [...]
> 
> Он пытается устанавливать права в чруте и ему не дают. Я бы запатчил
> Makefile'ы, чтобы они не делали никаких chown'ов и выставил
> аналогичные права на файлы с в секции %files с помощью %attr.

Если бы это был единичный случай, но мне попадались и другие Makefile'ы, 
которые посредством %makeinstall пытались делать useradd/groupadd/chown, 
а посредством %make DESTDIR=%buildroot install - почему-то нет. Вот 
только посреднее средство потихоньку протухает - апстримы на новые 
autotools переезжают, что ли?

> PS: Возможно, мой совет неверный :)

Если других идей не будет, придется патчить Makefile'ы, но не хотелось 
бы ...

-- 
С уважением, Прокопьев Евгений


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке
  2007-06-14  5:51   ` Eugene Prokopiev
@ 2007-06-14  7:11     ` Damir Shayhutdinov
  2007-06-14  9:55       ` Eugene Prokopiev
  0 siblings, 1 reply; 5+ messages in thread
From: Damir Shayhutdinov @ 2007-06-14  7:11 UTC (permalink / raw)
  To: ALT Devel discussion list

> Вы имеете ввиду --prefix? Сейчас попробовал ./configure
> --prefix=/usr/src/callweaver-install и make

./configure --prefix=/usr
Вообще вдумчивей читайте ./configure --help - там много полезного пишут.

А в спеке пользуйтесь просто %configure

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке
  2007-06-14  7:11     ` Damir Shayhutdinov
@ 2007-06-14  9:55       ` Eugene Prokopiev
  0 siblings, 0 replies; 5+ messages in thread
From: Eugene Prokopiev @ 2007-06-14  9:55 UTC (permalink / raw)
  To: ALT Devel discussion list

Damir Shayhutdinov пишет:
>>Вы имеете ввиду --prefix? Сейчас попробовал ./configure
>>--prefix=/usr/src/callweaver-install и make
> 
> 
> ./configure --prefix=/usr
> Вообще вдумчивей читайте ./configure --help - там много полезного пишут.
> 
> А в спеке пользуйтесь просто %configure

Прошу у всех прощения,

%configure
и
%make DESTDIR=%buildroot install

замечательно работают, а сбило меня с толку, то что callweaver разучился 
читать старый конфиг и полез за модулями, логами и т.д. в те каталоги, 
которые были вшиты в него на случай невозможности загрузить конфиг ;)

мне надо было читать дифф до того, как спрашивать :)

-- 
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-06-14  9:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-06-14  4:50 [devel] %makeinstall и %make DESTDIR=%buildroot install в спеке Eugene Prokopiev
2007-06-14  5:01 ` Slava Semushin
2007-06-14  5:51   ` Eugene Prokopiev
2007-06-14  7:11     ` Damir Shayhutdinov
2007-06-14  9:55       ` Eugene Prokopiev

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