Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37568392
en ru br
Репозитории ALT
S:2.6-alt1
5.1: 2.1-alt2
4.1: 2.1-alt2
4.0: 2.1-alt2
www.altlinux.org/Changes

Группа :: Разработка/Прочее
Пакет: rpm-build-fpc

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

pax_global_header00006660000000000000000000000064113673215770014526gustar00rootroot0000000000000052 comment=b03c97d4bfdfbe8e960637d69db92996a520cd2d
rpm-build-fpc-2.5-alt1/000075500000000000000000000000001136732157700146725ustar00rootroot00000000000000rpm-build-fpc-2.5-alt1/.gear/000075500000000000000000000000001136732157700156665ustar00rootroot00000000000000rpm-build-fpc-2.5-alt1/.gear/rules000064400000000000000000000000561136732157700167440ustar00rootroot00000000000000tar: . name=rpm-build-fpc-@version@-@release@
rpm-build-fpc-2.5-alt1/README.ALT000064400000000000000000000037001136732157700161710ustar00rootroot00000000000000This package provides fpc.req and fpc.prov scripts that produce
dependencies for Free Pascal *.ppu units. The scripts use ppudump(1)
utility to extract information from *.ppu files.

The dependency format is
fpc(unit) = PPUVer-CRC
or
fpc-win32(unit) = PPUVer-CRC
where PPUVer is unit file format version and CRC is unit interface
checksum.

This package also provides rpm macros file to facilitate building Free
Pascal extensions. The basic macros are
%fpc_build
%fpc_install
%fpc_files *-linux unit
and
%fpc_build_win32
%fpc_install_win32
%fpc_files *-win32 unit

Whenever these macros are used, they adjust rpm internals so that
fpc.req and fpc.prov scripts are invoked automatically.

To invoke the scripts without rpm, consider that they take the list
of files from standard input, one file per line. This, the following
should work:

$ /usr/lib/rpm/fpc.req <<< /usr/lib/fpc/units/i386-linux/rtl/baseunix.ppu
fpc(system) = 2465C1A7
fpc(unixtype) = 9E54A8B2
$ /usr/lib/rpm/fpc.prov <<< /usr/lib/fpc/units/i386-linux/rtl/baseunix.ppu
fpc(baseunix) = DB31A855
$

and also

$ ls /usr/lib/fpc/units/i386-linux/rtl/*.ppu |/usr/lib/rpm/fpc.req |head
fpc(baseunix) = DB31A855
fpc(classes) = 3BF9A432
fpc(cpu) = 84B1694E
fpc(cthreads) = 9B9D5BEE
fpc(ctypes) = 336D6375
fpc(cwstring) = C62DE08C
fpc(dl) = 1E9357BA
fpc(dos) = DF52240D
fpc(dynlibs) = CC617D5A
fpc(errors) = 0BF5B765
$ ls /usr/lib/fpc/units/i386-linux/rtl/*.ppu |/usr/lib/rpm/fpc.prov |head
fpc(baseunix) = DB31A855
fpc(charset) = BCA9EE60
fpc(classes) = 3BF9A432
fpc(cmem) = 8128B256
fpc(cpu) = 84B1694E
fpc(crt) = 6C7A4FDE
fpc(cthreads) = 9B9D5BEE
fpc(ctypes) = 336D6375
fpc(cwstring) = C62DE08C
fpc(dateutils) = 7F4403C7
$

TODO: extract C library dependencies.

$ ppudump -vhim /usr/lib/fpc/units/i386-linux/rtl/*.ppu |grep -i ^'Link other .* lib:' |sort -u
Link other shared lib: c (always )
Link other shared lib: dl (always )
Link other shared lib: ncurses (always )
Link other shared lib: tinfo (always )
$
rpm-build-fpc-2.5-alt1/fpc.macros000064400000000000000000000016421136732157700166530ustar00rootroot00000000000000%fpc_global() %{expand:%%{?!fpc_%1:%%global %1 %2 %%%1%%global fpc_%1 %2}}
%fpc_macro %([ -x %_rpmlibdir/fpc.req ])
%fpc_dir %fpc_macro%_libdir/fpc
%fpc_arch %fpc_macro%([ "%_lib" = lib64 ] && echo x86_64-linux || echo i386-linux)
%fpc_make make RELEASE=1 CREATESMART=1 LINKSMART=1 FPCDIR=%fpc_dir
%fpc_build %fpc_make clean all
%fpc_install %fpc_make install INSTALL_BASEDIR=%buildroot%fpc_dir INSTALL_BINDIR=%buildroot%_bindir
%fpc_make_win32 %fpc_make FPC=ppc386 OS_TARGET=win32 CPU_TARGET=i386 BINUTILSPREFIX=i386-mingw32msvc-
%fpc_build_win32 %fpc_make_win32
%fpc_install_win32 %fpc_make_win32 install INSTALL_BASEDIR=%buildroot%fpc_dir INSTALL_BINDIR=%buildroot%_bindir
%fpc_files()\
%%dir %fpc_dir\
%%dir %fpc_dir/units\
%%dir %fpc_dir/units/%1\
%%dir %fpc_dir/units/%1/%2\
%fpc_dir/units/%1/%2/%{?3:%3}%{!?3:*.*}
%fpc_win32_make %fpc_make_win32
%fpc_win32_build %fpc_build_win32
%fpc_win32_install %fpc_install_win32
rpm-build-fpc-2.5-alt1/fpc.req000075500000000000000000000024031136732157700161550ustar00rootroot00000000000000#!/bin/sh -ef

. /usr/lib/rpm/functions

Dump()
{
PATH="${RPM_BUILD_ROOT:+$RPM_BUILD_ROOT/usr/bin:}${PATH:-/bin:/usr/bin}" \
ppudump -vhim "$@"
}

Filter()
{
awk '
# preamble
/^Analyzing .*[.]ppu [(]v[0-9]+[)]$/ {
gsub("[^0-9]", "", $NF)
ppuver = $NF
}
# header
/^Target operating system/ {
fpc = "fpc"
if ($NF ~ /[Ww]in32/)
fpc = "fpc-win32"
}
/^Interface [Cc]hecksum/ {
provcrc = toupper($NF)
}
/^Indirect Checksum/ {
provcrc = provcrc "." toupper($NF)
}
# interface
/^Module [Nn]ame/ {
prov = tolower($NF)
printf "Provides: %s(%s) = %s-%s\n", fpc, prov, ppuver, provcrc
}
# interface and implementation
/^Uses unit/ {
# Old output:
# Uses unit: System (Crc: 2A1BDFF2, IntfcCrc: B77D9A8F)
# New output:
# Uses unit: System (Crc: 2A1BDFF2, IntfcCrc: B77D9A8F, IndCrc: 999F3F2A)
gsub("[),(]", "")
req = tolower($3)
reqcrc = toupper($7)
if (NF >= 9)
reqcrc = reqcrc "." toupper($9)
printf "Requires: %s(%s) = %s-%s\n", fpc, req, ppuver, reqcrc
}
'
}

FpcReq()
{
Dump "$@" |Filter |sed -n 's/Requires: //p'
}

FpcProv()
{
Dump "$@" |Filter |sed -n 's/Provides: //p'
}

case "${0##*/}" in
fpc.req*) ArgvFileAction FpcReq "$@" ;;
fpc.prov*) ArgvFileAction FpcProv "$@" ;;
*) Fatal "req/prov method not recognized" ;;
esac
rpm-build-fpc-2.5-alt1/fpc.req.files000075500000000000000000000003121136732157700172530ustar00rootroot00000000000000#!/bin/sh -efu
while IFS=$'\t' read -r f t; do
case $f in
*.ppu) ;;
*) continue ;;
esac
magic=$(head -c4 "$f") ||
continue
case $magic in
PPU[1-9]) ;;
*) continue ;;
esac
echo "$f"
done
rpm-build-fpc-2.5-alt1/rpm-build-fpc.spec000064400000000000000000000036701136732157700202150ustar00rootroot00000000000000Name: rpm-build-fpc
Version: 2.5
Release: alt1

Summary: RPM helpers for Free Pascal packages
License: GPL
Group: Development/Other

Source: %name-%version-%release.tar

BuildArch: noarch

%description
RPM helpers for Free Pascal packages:
- fpc.req -- find-requires wrapper;
- fpc.prov -- find-provides wrapper;
- fpc.macros -- RPM macros.

%prep
%setup -q -n %name-%version-%release

%install
install -pD -m755 fpc.req %buildroot%_rpmlibdir/fpc.req
ln -s fpc.req %buildroot%_rpmlibdir/fpc.prov
install -pD -m755 fpc.req.files %buildroot%_rpmlibdir/fpc.req.files
ln -s fpc.req.files %buildroot%_rpmlibdir/fpc.prov.files
install -pD -m644 fpc.macros %buildroot/etc/rpm/macros.d/fpc

%files
%doc README.ALT
%_rpmlibdir/fpc.req*
%_rpmlibdir/fpc.prov*
%config /etc/rpm/macros.d/fpc

%changelog
* Sun May 02 2010 Alexey Tourbin <at@altlinux.ru> 2.5-alt1
- handle indirect checksum in ppudump output (#23362, Slava Dubrovskiy)
- updated scripts for rpm 4.0.4-alt78 find-requires/provides system

* Wed Jan 17 2007 Alexey Tourbin <at@altlinux.ru> 2.1-alt2
- changed dependency versioning to $ppu_file_format-$interface_checksum

* Tue Jan 16 2007 Alexey Tourbin <at@altlinux.ru> 2.1-alt1
- reworked and unifeid fpc.{req,prov} scripts
- added %%fpc_win32_* aliases for %%fpc_*_win32 macros
- added README.ALT

* Sat Sep 16 2006 Alexey Tourbin <at@altlinux.ru> 2.0-alt2
- imported sources into git repo
- removed Requires to make fpc bootstrap more transparent
- changed win32 dependency format: fpc-win32(ppu) instead of fpc(ppu)(win32)
- removed internal ppu versioning since it is subject to interface CRC

* Sun Sep 10 2006 Alexey Tourbin <at@altlinux.ru> 2.0-alt1
- initial revision, based on previous helerps from fpc package
- fpc.macros: new RPM macros
+ %%fpc_dir
+ %%fpc_build %%fpc_install
+ %%fpc_build_win32 %%fpc_install_win32
- fpc.req, fpc.prov:
+ adjust dependencies for win32 cross-compiled units
+ adjust unit versioning according to internal ppu version
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin