ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Re: ccache support in gcc-common
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
@ 2003-09-17 12:41   ` Sergey Vlasov
  2003-09-17 16:48   ` Alexander Bokovoy
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 20+ messages in thread
From: Sergey Vlasov @ 2003-09-17 12:41 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 624 bytes --]

On Wed, 17 Sep 2003 20:21:31 +0400 Alexey Tourbin wrote:

> On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > Все. После этого исчезнет необходимость существования пакета ccache-bte и
> > все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
> > Для того, чтобы активировать поддержку ccache в RPM надо будет только в
> > ~/.macros поставить:
> > 
> > %__ccache_dir ~/.ccache или любой другой путь
> 
> В hasher'е чрут очищается при каждой новой сборке.
> Так что нужно (?) будет перемещать .ccache зад-назад.

Так вроде же договорились, что в hasher-е ccache не место...

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* [devel] ccache support in gcc-common
@ 2003-09-17 16:13 Alexander Bokovoy
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-17 16:13 UTC (permalink / raw)
  To: devel; +Cc: force, ldv

Greetings!

Предлагаю следующее добавление в gcc_wrapper, которое позволит наиболее
элегантным путем (как мне кажется) интегрировать ccache в сборочные
системы. Дело в том, что в текущий момент времени у нас есть следующие
проблемы с интеграцией в BTE:

1. Мы используем альтернативы для подмены gcc/g++/cpp на ccache так, чтобы
пакеты, которые не умеют смотреть на переменные окружения (например, CC)
работали с ccache.

2. Мы вынуждены прикладывать небольшой патч на ccache, чтобы вычислять,
кого же вызывать для реального выполнения задания (gcc/g++/cpp).

Однако у нас в системе уже есть gcc-common, а в нем gcc_wrapper, который
выполняет вызов архитектурно-зависимого компилятора (i586-alt-linux). 
Делает он следующее:

1. Вычисляет имя архитектурно-зависимого компилятора, по умолчанию считая,
что вызывают gcc (i586-alt-linux-gcc).

2. Если установлена переменная окружения GCC_VERSION, то добавляет к этому
имени указанную версию и %bindir.

3. Вызывает получившуюся программу, передавая ей те же параметры, что и
были получены самим gcc_wrapper.

Что при этом происходит, можно понять по strace:

$ strace -e trace=process gcc_wrapper -V 3.2 -v
execve("/usr/bin/gcc_wrapper", ["gcc_wrapper", "-V", "3.2", "-v"], [/* 49 vars */]) = 0
execve("/usr/bin/i586-alt-linux-gcc", ["i586-alt-linux-gcc", "-V", "3.2", "-v"], [/* 49 vars */]) = 0
Using builtin specs.
gcc driver version 2.96 20000731 (ALT Linux, build 2.96-alt3) executing
gcc version 3.2
_exit(0)

Поскольку ccache работает по похожему принципу, можно вместо запуска
вычисленной программы (%bindir/%targetplatform-<gcc>-$GCC_VERSION)
запускать ccache, подставляя ему в качестве имени программы
архитектурно-зависимое имя компилятора -- i586-alt-linux-gcc-$GCC_VERSION

Получается следующее:

$ GCC_USE_CCACHE=1 strace -e trace=process ./gcc_wrapper -V 3.2 -v
execve("./gcc_wrapper", ["./gcc_wrapper", "-V", "3.2", "-v"], [/* 50 vars */]) = 0
execve("/usr/bin/ccache", ["i586-alt-linux-gcc", "-V", "3.2", "-v"], [/* 50 vars */]) = 0
execve("/usr/bin/i586-alt-linux-gcc", ["/usr/bin/i586-alt-linux-gcc", "-V", "3.2", "-v"], [/* 50 vars */]) = 0
Using builtin specs.
gcc driver version 2.96 20000731 (ALT Linux, build 2.96-alt3) executing
gcc version 3.2
_exit(0) 

То есть, мы производим прозрачный запуск ccache, который уже сам
расправляется с тем, кого же надо будет запустить, по переданному ему
имени программы (i586-alt-linux-gcc в данном случае). Механизм сработает, 
поскольку архитектурно-зависимые компиляторы представляют собой нормальные
исполняемые файлы, а не символические ссылки, управляемые альтернативами.

Заметьте, что в указанном примере я специально использовал опцию -V у gcc
для показа возможности интеграции с gcc-драйвером по вызову компилятора,
отличного по версии от запускаемого. То есть, все возможности
оригинального gcc при этом сохранены, для него все прозрачно -- он даже не
будет знать, что запускается с кэшированием.

Что при этом мы получаем:

1. ccache не требует модификаций.

2. Не требуется модификация альтернатив для подстановки ccache перед gcc.

3. ccache интегрируется в любое окружение, не только в BTE -- достаточно
поставить пакет ccache и выставить переменную окружения GCC_USE_CCACHE.

4. Не возникает ограничений по использованию ccache вместе с distcc на
одной и той же платформе -- в новом ccache (2.2) используется специальный
механизм CCACHE_PREFIX для интеграции с distcc. Если бы мы использовали
этот же подход для интеграции с BTE, то мы бы лишились возможности легко
интегрироваться с distcc и фактически породили бы аналог gcc_wrapper,
запускаемый из ccache.

В чем мы себе отказываем:

А ни в чем :) Запуск компилятора с архитектурой, отличной от архитектуры
по умолчанию, по-прежнему возможен посредством опции -b <machine> в gcc.

Вот патч:

--- gcc_wrapper.c.orig	2002-11-28 14:44:31 +0200
+++ gcc_wrapper.c	2003-09-17 18:31:02 +0300
@@ -14,6 +14,7 @@
 	char *suffix = "", *name, *path;
 	const char *progname = strcmp (__progname, "gcc_wrapper") ? __progname : "gcc";
 	const char *version = getenv ("GCC_VERSION");
+	const char *use_ccache = getenv ("GCC_USE_CCACHE");
 
 	if (version)
 	{
@@ -29,7 +30,7 @@
 
 	if (asprintf (&name, "%s-%s%s", TARGET, progname, suffix) < 0)
 		error (EXIT_FAILURE, errno, "asprintf");
-	if (asprintf (&path, "%s/%s", BINDIR, name) < 0)
+	if (asprintf (&path, "%s/%s", BINDIR, (use_ccache) ? "ccache" : name) < 0)
 		error (EXIT_FAILURE, errno, "asprintf");
 
 	argv[0] = name;

Что нужно кроме него?

1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
нужны.

2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
rpm-build.

Все. После этого исчезнет необходимость существования пакета ccache-bte и
все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
Для того, чтобы активировать поддержку ccache в RPM надо будет только в
~/.macros поставить:

%__ccache_dir ~/.ccache или любой другой путь

-- 
/ Alexander Bokovoy
---
"He was a modest, good-humored boy.  It was Oxford that made him insufferable."


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

* [devel] Re: ccache support in gcc-common
  2003-09-17 16:13 [devel] ccache support in gcc-common Alexander Bokovoy
@ 2003-09-17 16:21 ` Alexey Tourbin
  2003-09-17 12:41   ` Sergey Vlasov
                     ` (3 more replies)
  2003-09-17 18:23 ` [devel] " Dmitry V. Levin
  2003-10-16 11:18 ` Dmitry V. Levin
  2 siblings, 4 replies; 20+ messages in thread
From: Alexey Tourbin @ 2003-09-17 16:21 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 470 bytes --]

On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> Все. После этого исчезнет необходимость существования пакета ccache-bte и
> все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
> Для того, чтобы активировать поддержку ccache в RPM надо будет только в
> ~/.macros поставить:
> 
> %__ccache_dir ~/.ccache или любой другой путь

В hasher'е чрут очищается при каждой новой сборке.
Так что нужно (?) будет перемещать .ccache зад-назад.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] Re: ccache support in gcc-common
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
  2003-09-17 12:41   ` Sergey Vlasov
@ 2003-09-17 16:48   ` Alexander Bokovoy
  2003-09-17 17:19     ` Alexey Tourbin
  2003-09-18 10:28   ` Dmitry V. Levin
  2003-09-22 14:08   ` Michael Shigorin
  3 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-17 16:48 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Sep 17, 2003 at 08:21:31PM +0400, Alexey Tourbin wrote:
> On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > Все. После этого исчезнет необходимость существования пакета ccache-bte и
> > все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
> > Для того, чтобы активировать поддержку ccache в RPM надо будет только в
> > ~/.macros поставить:
> > 
> > %__ccache_dir ~/.ccache или любой другой путь
> 
> В hasher'е чрут очищается при каждой новой сборке.
> Так что нужно (?) будет перемещать .ccache зад-назад.
Это проблема Hasher. В Sandman она решена путем подмонтирования общего
ccachedir. Ведь путь можно указать любой.

Hasher на сегодня вообще не интегрирован с ccache, о чем речь?
-- 
/ Alexander Bokovoy
---
"Truth never comes into the world but like a bastard, to the ignominy
of him that brought her birth."
-- Milton


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

* [devel] Re: ccache support in gcc-common
  2003-09-17 16:48   ` Alexander Bokovoy
@ 2003-09-17 17:19     ` Alexey Tourbin
  2003-09-17 17:29       ` Alexander Bokovoy
  0 siblings, 1 reply; 20+ messages in thread
From: Alexey Tourbin @ 2003-09-17 17:19 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 179 bytes --]

On Wed, Sep 17, 2003 at 07:48:17PM +0300, Alexander Bokovoy wrote:
> Hasher на сегодня вообще не интегрирован с ccache, о чем речь?

Что некоторые пакеты долго пересобираются. :)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] Re: ccache support in gcc-common
  2003-09-17 17:19     ` Alexey Tourbin
@ 2003-09-17 17:29       ` Alexander Bokovoy
  0 siblings, 0 replies; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-17 17:29 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Sep 17, 2003 at 09:19:56PM +0400, Alexey Tourbin wrote:
> On Wed, Sep 17, 2003 at 07:48:17PM +0300, Alexander Bokovoy wrote:
> > Hasher на сегодня вообще не интегрирован с ccache, о чем речь?
> 
> Что некоторые пакеты долго пересобираются. :)
:) Тогда изыскивайте вариант просовывания ccachedir в Hasher.
Если нет желания использовать mount -o bind, то могу только
посочувствовать.
-- 
/ Alexander Bokovoy
---
Try to have as good a life as you can under the circumstances.


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

* Re: [devel] ccache support in gcc-common
  2003-09-17 16:13 [devel] ccache support in gcc-common Alexander Bokovoy
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
@ 2003-09-17 18:23 ` Dmitry V. Levin
  2003-09-18  8:29   ` Alexander Bokovoy
  2003-10-16 11:18 ` Dmitry V. Levin
  2 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-17 18:23 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> Greetings!
> 
> Предлагаю следующее добавление в gcc_wrapper, которое позволит [...]
> Вот патч:
[...]

В принципе не возражаю.

> Что нужно кроме него?
> 
> 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> нужны.
> 
> 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> rpm-build.

Об этом поподробнее.
В частности, нужна ли нам совместимость с прежней схемой?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-17 18:23 ` [devel] " Dmitry V. Levin
@ 2003-09-18  8:29   ` Alexander Bokovoy
  2003-09-23  8:12     ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-18  8:29 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Sep 17, 2003 at 10:23:45PM +0400, Dmitry V. Levin wrote:
> On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > Greetings!
> > 
> > Предлагаю следующее добавление в gcc_wrapper, которое позволит [...]
> > Вот патч:
> [...]
> 
> В принципе не возражаю.
> 
> > Что нужно кроме него?
> > 
> > 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> > нужны.
> > 
> > 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> > rpm-build.
> 
> Об этом поподробнее.
> В частности, нужна ли нам совместимость с прежней схемой?
Нет, не нужна. В коде sandman никаких завязок на нее нет, разве что
придется убрать из настроек репозитариев упоминание о ccache-bte, который
теперь будет не нужен. Но это мелочь.

-- 
/ Alexander Bokovoy
---
Prizes are for children.
		-- Charles Ives, upon being given, but refusing, the
		   Pulitzer prize


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

* Re: [devel] Re: ccache support in gcc-common
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
  2003-09-17 12:41   ` Sergey Vlasov
  2003-09-17 16:48   ` Alexander Bokovoy
@ 2003-09-18 10:28   ` Dmitry V. Levin
  2003-09-22 14:08   ` Michael Shigorin
  3 siblings, 0 replies; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-18 10:28 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 781 bytes --]

On Wed, Sep 17, 2003 at 08:21:31PM +0400, Alexey Tourbin wrote:
> On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > Все. После этого исчезнет необходимость существования пакета ccache-bte и
> > все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
> > Для того, чтобы активировать поддержку ccache в RPM надо будет только в
> > ~/.macros поставить:
> > 
> > %__ccache_dir ~/.ccache или любой другой путь
> 
> В hasher'е чрут очищается при каждой новой сборке.
> Так что нужно (?) будет перемещать .ccache зад-назад.

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


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* [devel] Re: ccache support in gcc-common
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
                     ` (2 preceding siblings ...)
  2003-09-18 10:28   ` Dmitry V. Levin
@ 2003-09-22 14:08   ` Michael Shigorin
  3 siblings, 0 replies; 20+ messages in thread
From: Michael Shigorin @ 2003-09-22 14:08 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 247 bytes --]

On Wed, Sep 17, 2003 at 08:21:31PM +0400, Alexey Tourbin wrote:
> В hasher'е чрут очищается при каждой новой сборке.

mount --bind, если необходимо.

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-18  8:29   ` Alexander Bokovoy
@ 2003-09-23  8:12     ` Dmitry V. Levin
  2003-09-23  8:21       ` Alexander Bokovoy
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-23  8:12 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1103 bytes --]

On Thu, Sep 18, 2003 at 11:29:00AM +0300, Alexander Bokovoy wrote:
> On Wed, Sep 17, 2003 at 10:23:45PM +0400, Dmitry V. Levin wrote:
> > On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > > Greetings!
> > > 
> > > Предлагаю следующее добавление в gcc_wrapper, которое позволит [...]
> > > Вот патч:
> > [...]
> > 
> > В принципе не возражаю.
> > 
> > > Что нужно кроме него?
> > > 
> > > 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> > > нужны.
> > > 
> > > 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> > > rpm-build.
> > 
> > Об этом поподробнее.
> > В частности, нужна ли нам совместимость с прежней схемой?
> Нет, не нужна. В коде sandman никаких завязок на нее нет, разве что
> придется убрать из настроек репозитариев упоминание о ccache-bte, который
> теперь будет не нужен. Но это мелочь.

Насколько я понимаю, добавление этой функциональности в gcc_wrapper ничего
не сломает?

Если так, то это можно было бы сделать, не дожидаясь изменения макросов в
rpm-build.  Кстати, что конкретно там надо будет поменять?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-23  8:12     ` Dmitry V. Levin
@ 2003-09-23  8:21       ` Alexander Bokovoy
  2003-09-23  8:28         ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-23  8:21 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, Sep 23, 2003 at 12:12:26PM +0400, Dmitry V. Levin wrote:
> On Thu, Sep 18, 2003 at 11:29:00AM +0300, Alexander Bokovoy wrote:
> > On Wed, Sep 17, 2003 at 10:23:45PM +0400, Dmitry V. Levin wrote:
> > > On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > > > Greetings!
> > > > 
> > > > Предлагаю следующее добавление в gcc_wrapper, которое позволит [...]
> > > > Вот патч:
> > > [...]
> > > 
> > > В принципе не возражаю.
> > > 
> > > > Что нужно кроме него?
> > > > 
> > > > 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> > > > нужны.
> > > > 
> > > > 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> > > > rpm-build.
> > > 
> > > Об этом поподробнее.
> > > В частности, нужна ли нам совместимость с прежней схемой?
> > Нет, не нужна. В коде sandman никаких завязок на нее нет, разве что
> > придется убрать из настроек репозитариев упоминание о ccache-bte, который
> > теперь будет не нужен. Но это мелочь.
> 
> Насколько я понимаю, добавление этой функциональности в gcc_wrapper ничего
> не сломает?
Нет.

 
> Если так, то это можно было бы сделать, не дожидаясь изменения макросов в
> rpm-build.  Кстати, что конкретно там надо будет поменять?
Знаешь, убери оттуда вообще поддержку ccache. Я положу макросы в 
/etc/rpm/macros.d/ccache в пакет с ccache, так будет проще всего и,
очевидно, правильнее.


-- 
/ Alexander Bokovoy
---
There's no easy quick way out, we're gonna have to live through our
whole lives, win, lose, or draw.
		-- Walt Kelly


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

* Re: [devel] ccache support in gcc-common
  2003-09-23  8:21       ` Alexander Bokovoy
@ 2003-09-23  8:28         ` Dmitry V. Levin
  2003-09-23  8:50           ` Alexander Bokovoy
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-23  8:28 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1913 bytes --]

On Tue, Sep 23, 2003 at 11:21:58AM +0300, Alexander Bokovoy wrote:
> On Tue, Sep 23, 2003 at 12:12:26PM +0400, Dmitry V. Levin wrote:
> > On Thu, Sep 18, 2003 at 11:29:00AM +0300, Alexander Bokovoy wrote:
> > > On Wed, Sep 17, 2003 at 10:23:45PM +0400, Dmitry V. Levin wrote:
> > > > On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> > > > > Greetings!
> > > > > 
> > > > > Предлагаю следующее добавление в gcc_wrapper, которое позволит [...]
> > > > > Вот патч:
> > > > [...]
> > > > 
> > > > В принципе не возражаю.
> > > > 
> > > > > Что нужно кроме него?
> > > > > 
> > > > > 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> > > > > нужны.
> > > > > 
> > > > > 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> > > > > rpm-build.
> > > > 
> > > > Об этом поподробнее.
> > > > В частности, нужна ли нам совместимость с прежней схемой?
> > > Нет, не нужна. В коде sandman никаких завязок на нее нет, разве что
> > > придется убрать из настроек репозитариев упоминание о ccache-bte, который
> > > теперь будет не нужен. Но это мелочь.
> > 
> > Насколько я понимаю, добавление этой функциональности в gcc_wrapper ничего
> > не сломает?
> Нет.

Ok

> > Если так, то это можно было бы сделать, не дожидаясь изменения макросов в
> > rpm-build.  Кстати, что конкретно там надо будет поменять?
> Знаешь, убери оттуда вообще поддержку ccache. Я положу макросы в 
> /etc/rpm/macros.d/ccache в пакет с ccache, так будет проще всего и,
> очевидно, правильнее.

$ fgrep -i ccache /usr/lib/rpm/i586-alt-linux/macros
        unset CCACHE_CC CCACHE_CXX CCACHE_DIR ||:\
        %{?__ccache_cc:export CCACHE_CC=\"%__ccache_cc\"}\
        %{?__ccache_cxx:export CCACHE_CXX=\"%__ccache_cxx\"}\
        %{?__ccache_dir:export CCACHE_DIR=\"%__ccache_dir\"}\

Это они все?
Как ты их сможешь переопределить, если это все из определения макроса
%___build_pre?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-23  8:28         ` Dmitry V. Levin
@ 2003-09-23  8:50           ` Alexander Bokovoy
  2003-09-30 16:43             ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-23  8:50 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, Sep 23, 2003 at 12:28:32PM +0400, Dmitry V. Levin wrote:
> > > Если так, то это можно было бы сделать, не дожидаясь изменения макросов в
> > > rpm-build.  Кстати, что конкретно там надо будет поменять?
> > Знаешь, убери оттуда вообще поддержку ccache. Я положу макросы в 
> > /etc/rpm/macros.d/ccache в пакет с ccache, так будет проще всего и,
> > очевидно, правильнее.
> 
> $ fgrep -i ccache /usr/lib/rpm/i586-alt-linux/macros
>         unset CCACHE_CC CCACHE_CXX CCACHE_DIR ||:\
>         %{?__ccache_cc:export CCACHE_CC=\"%__ccache_cc\"}\
>         %{?__ccache_cxx:export CCACHE_CXX=\"%__ccache_cxx\"}\
>         %{?__ccache_dir:export CCACHE_DIR=\"%__ccache_dir\"}\
> 
> Это они все?
Да, это они все.

> Как ты их сможешь переопределить, если это все из определения макроса
> %___build_pre?
Добавь туда какой-нибудь %___build_pre_extender и механизм добавления в
него строчек, тогда любой макро-файл сможет их расширять. Можно сделать
даже просто макрос вроде
	%build_add_variable_expand var1 var2
который будет разворачивать полученный список пар (var1, var2)_1, ..., (var1, var2)_n
в последовательность
	unset var2_1 ... var2_n ||:\
	%{?var1_1:export var2_1=\"%var1_1\"}\
	....
	%{?var1_n:export var2_n=\"%var1_n\"}\

Тогда в /etc/rpm/macros.d/ccache я просто напишу
%build_add_variable_expand __ccache_use GCC_USE_CCACHE
%build_add_variable_expand __ccache_dir CCACHE_DIR

А пользователь сможет включать/выключать использование ccache у себя в
.rpmmacros, например, так:

%__ccache_use 1
%__ccache_dir $HOME/.ccache

Естественно, что в этот же механизм простановки переменных смогут
встраиваться и другие приложения, если потребуется.
-- 
/ Alexander Bokovoy
---
taxidermist, n.:
	A man who mounts animals.


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

* Re: [devel] ccache support in gcc-common
  2003-09-23  8:50           ` Alexander Bokovoy
@ 2003-09-30 16:43             ` Dmitry V. Levin
  2003-09-30 16:48               ` Alexander Bokovoy
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-30 16:43 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1874 bytes --]

On Tue, Sep 23, 2003 at 11:50:35AM +0300, Alexander Bokovoy wrote:
> On Tue, Sep 23, 2003 at 12:28:32PM +0400, Dmitry V. Levin wrote:
> > > > Если так, то это можно было бы сделать, не дожидаясь изменения макросов в
> > > > rpm-build.  Кстати, что конкретно там надо будет поменять?
> > > Знаешь, убери оттуда вообще поддержку ccache. Я положу макросы в 
> > > /etc/rpm/macros.d/ccache в пакет с ccache, так будет проще всего и,
> > > очевидно, правильнее.
> > 
> > $ fgrep -i ccache /usr/lib/rpm/i586-alt-linux/macros
> >         unset CCACHE_CC CCACHE_CXX CCACHE_DIR ||:\
> >         %{?__ccache_cc:export CCACHE_CC=\"%__ccache_cc\"}\
> >         %{?__ccache_cxx:export CCACHE_CXX=\"%__ccache_cxx\"}\
> >         %{?__ccache_dir:export CCACHE_DIR=\"%__ccache_dir\"}\
> > 
> > Это они все?
> Да, это они все.

Ok

> > Как ты их сможешь переопределить, если это все из определения макроса
> > %___build_pre?
> Добавь туда какой-нибудь %___build_pre_extender и механизм добавления в
> него строчек, тогда любой макро-файл сможет их расширять. Можно сделать
> даже просто макрос вроде
> 	%build_add_variable_expand var1 var2
> который будет разворачивать полученный список пар (var1, var2)_1, ..., (var1, var2)_n
> в последовательность
> 	unset var2_1 ... var2_n ||:\
> 	%{?var1_1:export var2_1=\"%var1_1\"}\
> 	....
> 	%{?var1_n:export var2_n=\"%var1_n\"}\
> 
> Тогда в /etc/rpm/macros.d/ccache я просто напишу
> %build_add_variable_expand __ccache_use GCC_USE_CCACHE
> %build_add_variable_expand __ccache_dir CCACHE_DIR
> 
> А пользователь сможет включать/выключать использование ccache у себя в
> .rpmmacros, например, так:
> 
> %__ccache_use 1
> %__ccache_dir $HOME/.ccache
> 
> Естественно, что в этот же механизм простановки переменных смогут
> встраиваться и другие приложения, если потребуется.

Идея красивая, осталось только её реализовать.
Желающие есть?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-30 16:43             ` Dmitry V. Levin
@ 2003-09-30 16:48               ` Alexander Bokovoy
  2003-09-30 16:58                 ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-09-30 16:48 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, Sep 30, 2003 at 08:43:09PM +0400, Dmitry V. Levin wrote:
> > > Как ты их сможешь переопределить, если это все из определения макроса
> > > %___build_pre?
> > Добавь туда какой-нибудь %___build_pre_extender и механизм добавления в
> > него строчек, тогда любой макро-файл сможет их расширять. Можно сделать
> > даже просто макрос вроде
> > 	%build_add_variable_expand var1 var2
> > который будет разворачивать полученный список пар (var1, var2)_1, ..., (var1, var2)_n
> > в последовательность
> > 	unset var2_1 ... var2_n ||:\
> > 	%{?var1_1:export var2_1=\"%var1_1\"}\
> > 	....
> > 	%{?var1_n:export var2_n=\"%var1_n\"}\
> > 
> > Тогда в /etc/rpm/macros.d/ccache я просто напишу
> > %build_add_variable_expand __ccache_use GCC_USE_CCACHE
> > %build_add_variable_expand __ccache_dir CCACHE_DIR
> > 
> > А пользователь сможет включать/выключать использование ccache у себя в
> > .rpmmacros, например, так:
> > 
> > %__ccache_use 1
> > %__ccache_dir $HOME/.ccache
> > 
> > Естественно, что в этот же механизм простановки переменных смогут
> > встраиваться и другие приложения, если потребуется.
> 
> Идея красивая, осталось только её реализовать.
> Желающие есть?
в /etc/rpm/macros.d/ccache? Так я это реализую в ccache-2.3-alt1.
Или ты про %build_add_variable_expand ? 

-- 
/ Alexander Bokovoy
---
One Bell System - it works.


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

* Re: [devel] ccache support in gcc-common
  2003-09-30 16:48               ` Alexander Bokovoy
@ 2003-09-30 16:58                 ` Dmitry V. Levin
  2003-10-02 14:02                   ` Alexander Bokovoy
  0 siblings, 1 reply; 20+ messages in thread
From: Dmitry V. Levin @ 2003-09-30 16:58 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 364 bytes --]

On Tue, Sep 30, 2003 at 07:48:29PM +0300, Alexander Bokovoy wrote:
> On Tue, Sep 30, 2003 at 08:43:09PM +0400, Dmitry V. Levin wrote:
[...]
> > Идея красивая, осталось только её реализовать.
> > Желающие есть?
> в /etc/rpm/macros.d/ccache? Так я это реализую в ccache-2.3-alt1.

Это я уже понял. :)

> Или ты про %build_add_variable_expand ? 

Про него.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-30 16:58                 ` Dmitry V. Levin
@ 2003-10-02 14:02                   ` Alexander Bokovoy
  2003-10-02 17:09                     ` Dmitry V. Levin
  0 siblings, 1 reply; 20+ messages in thread
From: Alexander Bokovoy @ 2003-10-02 14:02 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, Sep 30, 2003 at 08:58:30PM +0400, Dmitry V. Levin wrote:
> On Tue, Sep 30, 2003 at 07:48:29PM +0300, Alexander Bokovoy wrote:
> > On Tue, Sep 30, 2003 at 08:43:09PM +0400, Dmitry V. Levin wrote:
> [...]
> > > Идея красивая, осталось только её реализовать.
> > > Желающие есть?
> > в /etc/rpm/macros.d/ccache? Так я это реализую в ccache-2.3-alt1.
> 
> Это я уже понял. :)
> 
> > Или ты про %build_add_variable_expand ? 
> 
> Про него.
Пожалуйста:

%_variable_expand_list %nil
%set_variable_expand() %global _variable_expand_list %* ^
%add_variable_expand() %global _variable_expand_list %_variable_expand_list %* ^
%___pre_variable_extender() %{expand:%(echo %_variable_expand_list | \
		while read -d^ var1 var2 ; do \
			echo -e "\\tunset $var2 ||:\\\\" ; \
			echo -e "\\t%%{?$var1:export $var2=\\\"%$var1\\\"}\\\\"\
		done \
		)}

Результат работы:

$ rpm -v --define '__ccache_use 1' --define '__ccache_dir /foo/bar' --eval '
%add_variable_expand __ccache_use GCC_USE_CCACHE
%add_variable_expand __ccache_dir CCACHE_DIR
%add_variable_expand __ccache_false GCC_FALSE_CCACHE
%___pre_variable_extender'

         unset GCC_USE_CCACHE ||:\
         export GCC_USE_CCACHE="1"\
         unset CCACHE_DIR ||:\
         export CCACHE_DIR="/foo/bar"\
         unset GCC_FALSE_CCACHE ||:\
	 \

-- 
/ Alexander Bokovoy
---
QOTD:
	"I used to be an idealist, but I got mugged by reality."


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

* Re: [devel] ccache support in gcc-common
  2003-10-02 14:02                   ` Alexander Bokovoy
@ 2003-10-02 17:09                     ` Dmitry V. Levin
  0 siblings, 0 replies; 20+ messages in thread
From: Dmitry V. Levin @ 2003-10-02 17:09 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1659 bytes --]

On Thu, Oct 02, 2003 at 05:02:58PM +0300, Alexander Bokovoy wrote:
> On Tue, Sep 30, 2003 at 08:58:30PM +0400, Dmitry V. Levin wrote:
> > On Tue, Sep 30, 2003 at 07:48:29PM +0300, Alexander Bokovoy wrote:
> > > On Tue, Sep 30, 2003 at 08:43:09PM +0400, Dmitry V. Levin wrote:
> > [...]
> > > > Идея красивая, осталось только её реализовать.
> > > > Желающие есть?
> > > в /etc/rpm/macros.d/ccache? Так я это реализую в ccache-2.3-alt1.
> > 
> > Это я уже понял. :)
> > 
> > > Или ты про %build_add_variable_expand ? 
> > 
> > Про него.
> Пожалуйста:
> 
> %_variable_expand_list %nil
> %set_variable_expand() %global _variable_expand_list %* ^
> %add_variable_expand() %global _variable_expand_list %_variable_expand_list %* ^
> %___pre_variable_extender() %{expand:%(echo %_variable_expand_list | \
> 		while read -d^ var1 var2 ; do \
> 			echo -e "\\tunset $var2 ||:\\\\" ; \
> 			echo -e "\\t%%{?$var1:export $var2=\\\"%$var1\\\"}\\\\"\
> 		done \
> 		)}
> 
> Результат работы:
> 
> $ rpm -v --define '__ccache_use 1' --define '__ccache_dir /foo/bar' --eval '
> %add_variable_expand __ccache_use GCC_USE_CCACHE
> %add_variable_expand __ccache_dir CCACHE_DIR
> %add_variable_expand __ccache_false GCC_FALSE_CCACHE
> %___pre_variable_extender'
> 
>          unset GCC_USE_CCACHE ||:\
>          export GCC_USE_CCACHE="1"\
>          unset CCACHE_DIR ||:\
>          export CCACHE_DIR="/foo/bar"\
>          unset GCC_FALSE_CCACHE ||:\
> 	 \

Только это не будет работать, если перенести
%add_variable_expand __ccache_use GCC_USE_CCACHE
%add_variable_expand __ccache_dir CCACHE_DIR
%add_variable_expand __ccache_false GCC_FALSE_CCACHE
в ~/.rpmmacros


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] ccache support in gcc-common
  2003-09-17 16:13 [devel] ccache support in gcc-common Alexander Bokovoy
  2003-09-17 16:21 ` [devel] " Alexey Tourbin
  2003-09-17 18:23 ` [devel] " Dmitry V. Levin
@ 2003-10-16 11:18 ` Dmitry V. Levin
  2 siblings, 0 replies; 20+ messages in thread
From: Dmitry V. Levin @ 2003-10-16 11:18 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: Alexander Bokovoy

[-- Attachment #1: Type: text/plain, Size: 987 bytes --]

On Wed, Sep 17, 2003 at 07:13:32PM +0300, Alexander Bokovoy wrote:
> Предлагаю следующее добавление в gcc_wrapper, которое позволит наиболее
> элегантным путем (как мне кажется) интегрировать ccache в сборочные
> системы. [...]

Реализовано в gcc-common-1.2.3-alt1

> Что нужно кроме него?
> 
> 1. Убрать поддержку __ccache_cc/__ccache_cxx из rpm-build, они больше не
> нужны.
> 
> 2. Добавить выставление GCC_USE_CCACHE=1 в обработку __ccache_dir в
> rpm-build.

С этим не всё так просто.

> Все. После этого исчезнет необходимость существования пакета ccache-bte

Будет сделано одновременно с переводом gcc* с update-alternatives на
alternatives (уже собраны, в процессе тестирования), ориентировочно
сегодня-завтра.

> и все будет делаться в рамках gcc-common/ccache (без патчей!)/rpm-build.
> Для того, чтобы активировать поддержку ccache в RPM надо будет только в
> ~/.macros поставить:
> 
> %__ccache_dir ~/.ccache или любой другой путь

rpm-build тормозит весь процесс?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

end of thread, other threads:[~2003-10-16 11:18 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-17 16:13 [devel] ccache support in gcc-common Alexander Bokovoy
2003-09-17 16:21 ` [devel] " Alexey Tourbin
2003-09-17 12:41   ` Sergey Vlasov
2003-09-17 16:48   ` Alexander Bokovoy
2003-09-17 17:19     ` Alexey Tourbin
2003-09-17 17:29       ` Alexander Bokovoy
2003-09-18 10:28   ` Dmitry V. Levin
2003-09-22 14:08   ` Michael Shigorin
2003-09-17 18:23 ` [devel] " Dmitry V. Levin
2003-09-18  8:29   ` Alexander Bokovoy
2003-09-23  8:12     ` Dmitry V. Levin
2003-09-23  8:21       ` Alexander Bokovoy
2003-09-23  8:28         ` Dmitry V. Levin
2003-09-23  8:50           ` Alexander Bokovoy
2003-09-30 16:43             ` Dmitry V. Levin
2003-09-30 16:48               ` Alexander Bokovoy
2003-09-30 16:58                 ` Dmitry V. Levin
2003-10-02 14:02                   ` Alexander Bokovoy
2003-10-02 17:09                     ` Dmitry V. Levin
2003-10-16 11:18 ` Dmitry V. Levin

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