* [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
* [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
* 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] 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-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] 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