[devel] FAILED fpc.git=2.2.4-alt1

Alexey Tourbin at на altlinux.ru
Пт Апр 24 22:04:10 MSD 2009


On Fri, Apr 24, 2009 at 09:42:02PM +0400, Afanasov Dmitry wrote:
> 24.04.09, Alexey Tourbin<at на altlinux.ru> написал(а):
> > On Fri, Apr 24, 2009 at 07:46:53PM +0300, Slava Dubrovskiy wrote:
> >  > Я так понимаю нужно или собирать все одновременно, или делать две версии
> >  > fpc.
> > Yes, you have to add that another package to your fpc task.
> часто это проблема - не зря ведь тут о NMU все твердят.
> 
> надо будет проверить на выходных, как себя ведут fpc модули при
> простейшем добавлении функции. так как гложет меня мысль, что текущие
> зависимости слишком сильные - это как полному имени либы
> привязываться, вместо soname'а.

I think that it is only the unit interface that matters.  Roughly,
it is like md5sum for *.h header file in C.  If you touch anything
(except for comments and whitespaces), it is going to change.

Let's see how fpc.req works.

$ ppudump -vhim /usr/lib64/fpc/units/x86_64-linux/rtl/video.ppu |grep 'Uses unit'
Uses unit: System (Crc: FD1DCAB2, IntfcCrc: C9BB6DA6)
Uses unit: BaseUnix (Crc: 28B09EAB, IntfcCrc: 4154D53F)
Uses unit: termio (Crc: 0E166AC3, IntfcCrc: F4A7EF5D)
Uses unit: strings (Crc: CBE34EC8, IntfcCrc: 6C92FC9D)
Uses unit: linuxvcs (Crc: 672570A1, IntfcCrc: 74ABE23D)
$

$ /usr/lib/rpm/fpc.req <<</usr/lib64/fpc/units/x86_64-linux/rtl/video.ppu        
fpc(baseunix) = 78-4154D53F
fpc(linuxvcs) = 78-74ABE23D
fpc(strings) = 78-6C92FC9D
fpc(system) = 78-C9BB6DA6
fpc(termio) = 78-F4A7EF5D
$

So, fpc.req simply transforms 'Uses init' references into dependencies.
Note that interface checksum (IntfcCrc) is used, not full checksum (Crc);
the latter also includes implementation section.  So, if it is possible
to improve implementation without changeing the interface, the
dependency will not change.

Let's now examine fpc.prov with e.g. baseunix.

$ ppudump -vh /usr/lib64/fpc/units/x86_64-linux/rtl/baseunix.ppu
PPU-Analyser Version 2.2.0
Copyright (c) 1998-2007 by the Free Pascal Development Team
Analyzing /usr/lib64/fpc/units/x86_64-linux/rtl/baseunix.ppu (v78)
Header
-------
Compiler version        : 2.2.0
Target processor        : x86_64
Target operating system : Linux-x86-64
Unit flags              : static_linked, little_endian, release, local_threadvars, local_symtable
FileSize (w/o header)   : 115054
Checksum                : 28B09EAB
Interface Checksum      : 4154D53F
Definitions stored      : 410
Symbols stored          : 1771
(no exported macros)
$ /usr/lib/rpm/fpc.prov <<</usr/lib64/fpc/units/x86_64-linux/rtl/baseunix.ppu
fpc(baseunix) = 78-4154D53F
$ 

So, now we see that video.ppu requires and baseunix.ppu provides
the same dependency, based on ppu interface checksum.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090424/cfe9c0db/attachment.bin>


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