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 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 2.1-alt2 - changed dependency versioning to $ppu_file_format-$interface_checksum * Tue Jan 16 2007 Alexey Tourbin 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 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 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