LINUX.ORG.RU

Как ребилдить пакеты, подобные fpc, в CentOS/Fedora ?

 , , ,


0

1

Вот такой пакет https://koji.fedoraproject.org/koji/packageinfo?packageID=1757 (Free Pascal Compiler) содержит возможность собирать копилятор как bootstrap, так и с уже установленной версией.

Каков правильный алгоритм пересборки пакета на чистой системе по сценарию bootstrap? Не могу сообразить. Может какие-то опции указывать при rpmbuild --rebuild fpc.src.rpm? В srpm явно не хватает исходников для бутстрапа.

Deleted

Последнее исправление: Deleted (всего исправлений: 2)

Спек fpc в rawhide очень страшный, у меня у самого не хватило кунфу забутстрапить на центось, правда не очень и хотелось. Думается мне, в сборочную систему проще всего воткнуть пакет от бинарно-похожей Fedora, собрать свой компилятор, потом выкинуть федоровский пакет.

d_a ★★★★★
()
Ответ на: комментарий от d_a

Так и сделал пока.

Там в инфраструктуре для сборки fpc и lazarus наблюдается черная магия, народ ставит костыли туда и сюда. Видимо, сказывается не гладкая сборка всего этого паскалевского добра под разные архитектуры.

Честно говоря, я уже даже забыл, для чего мне понадобился lazarus на центоси, пока разбирался со всем этим :))

Deleted
()
Ответ на: комментарий от arson

Да и бинарный пакет от fedora-ки в CentOS встает без проблем. Что build, что rebuild требует fpc...
Ты принципиально хочешь собрать пакет без установленного fpc?

arson ★★★★★
()
Ответ на: комментарий от Deleted

Ничего не поделаешь, это пасцал. Уровень интереса у народа к проекту мягко говоря недостаточен для взрослого редистрибута. Даже и смотреть не хочу, какой там чад и кутерьма в lazarus происходит.

d_a ★★★★★
()
Ответ на: комментарий от arson

the complete compiler is written in Pascal.
Каков правильный алгоритм пересборки пакета на чистой системе

Без установленного компилятора паскаля трудно будет собрать:)

arson ★★★★★
()

Каков правильный алгоритм пересборки пакета на чистой системе по сценарию bootstrap?

Для сборки fpc в чистой системе, нужен бинарь уже собранного компилятора. Под каждую поддерживаемую архитектуру свой бинарь. Этот бинарь соберёт компилятор паскаля, а тот уже всё остальное. В альте так и сделано. В пакет fpc-2.6.0-alt2.qa2.src.rpm вложены файлы-компиляторы ppc386_bootstrap и ppcx64_bootstrap Фрагмент спека:

Name: fpc
Epoch: 2
Version: 2.6.0
Release: alt2.qa2

Summary: Free Pascal Compiler -- Meta Package
License: GPL
Group: Development/Other
Packager: Slava Dubrovskiy <dubrsl@altlinux.ru>

Url: http://www.freepascal.org
Source: fpcbuild-%version.tar
Source1: fp.desktop
Source2: fp.sh
Source3: fp.cfg
Source4: fp16x16.xpm
Source5: fp48x48.xpm
Source6: ppc386_bootstrap
Source7: ppcx64_bootstrap

Patch: %name-%version-alt-changes.patch

%define makedoc 0
%define makesrc 1
%define maketests 1
%define makewin32 1

ExclusiveOS: Linux
ExclusiveArch: %ix86 amd64 x86_64
Requires: fpc-units-rtl fpc-compiler fpc-units-base fpc-ide fpc-units-fcl fpc-units-fv fpc-units-gtk fpc-units-gtk2 fpc-units-gnome1 fpc-units-db fpc-units-gfx fpc-units-net fpc-units-math fpc-units-misc fpc-units-multimedia

# Automatically added by buildreq on Thu Oct 01 2009
BuildRequires: fpc-compiler fpc-utils libexpat-devel libgdb-devel libncurses-devel libreadline-devel-static rpm-build-fpc python-devel zlib-devel
%if %makedoc
BuildRequires: tex4ht texlive-generic-recommended texlive-latex-recommended fpc-units-fcl
%endif

%ifarch %ix86
%define ppctarget i386-linux
%else
%define ppctarget x86_64-linux
%define makewin32 0
%endif
%define ppcname %(basename `fpc -PB`)

%description
The Free Pascal Compiler is an object pascal compiler supporting both Delphi
and Turbo Pascal 7.0 dialects as well as Mac pascal dialects.
It provides a completely portable RunTime Library (RTL) available on many
platforms and compatible with Turbo Pascal, but also a platfrom independent
class based Free Component Library (FCL) adding many Delphi extensions and
interfacing many popular open source libraries.

Some extensions are added to the language, like function overloading. Shared
libraries can be linked and created. Delphi language extentions like classes,
exceptions, ansi strings and open arrays are also supported.

This package contains dependency on all FPC packages provided on your
architecture. Experienced users may want to install only packages they need,
and can skip installing this metapackage.

%prep
%setup -q -n fpcbuild-%version
%patch -p1

sed -i "s|/usr/local/lib|%_libdir|g" fpcsrc/packages/gdbint/src/gdbint.pp
sed -i "/LINKLIB/s/python/python2.7/" fpcsrc/packages/gdbint/src/gdbint.pp
sed -i "/LINKLIB ncurses/a {\$LINKLIB z}" fpcsrc/packages/gdbint/src/gdbint.pp

sed -i '/fp/s/\/bin/\/usr\/bin/g' fpcsrc/compiler/utils/samplecfg

%build
# install src
rm -rf ../fpcsrc
mkdir -p ../fpcsrc
cp -fR  fpcsrc/* ../fpcsrc/
rm -rf ../fpcsrc/{ide,installer,tests,utils}

export OPT="-vwn "
export GDBLIBDIR=%_libdir
export LIBGDBFILE=%_libdir/libgdb.a

# bootstrap fpc
%ifarch %ix86
cp %SOURCE6 .
make -C fpcsrc/compiler cycle RELEASE=1 FPC=$PWD/ppc386_bootstrap
%else
cp %SOURCE7 .
make -C fpcsrc/compiler cycle RELEASE=1 FPC=$PWD/ppcx64_bootstrap
%endif
cp -pv fpcsrc/compiler/%ppcname %ppcname

# bootstrap fpcmake
%fpc_build FPC=$PWD/%ppcname FPCDIR=$PWD -C fpcsrc/rtl
%fpc_build FPC=$PWD/%ppcname FPCDIR=$PWD -C fpcsrc/compiler
%fpc_build FPC=$PWD/%ppcname FPCDIR=$PWD -C fpcsrc/packages fcl_smart
%fpc_build FPC=$PWD/%ppcname FPCDIR=$PWD -C fpcsrc/utils
cp -pv fpcsrc/utils/fpcm/fpcmake fpcmake

Napilnik ★★★★★
()
Ответ на: комментарий от arson

Мне интересно услышать рассуждения, ну и я может чего-то не понимаю в инфраструктуре центоса\федоры. Понятно, что собирается всё, просто надо подсунуть готовый fpc

Deleted
()
Ответ на: комментарий от Deleted

ну и я может чего-то не понимаю в инфраструктуре центоса\федоры. Понятно, что собирается всё, просто надо подсунуть готовый fpc

В rpm ещё и справка собирается удивительнейшим образом. Не задаёт вопросы про Mac OS X и не пытается установиться в систему. Когда-то кто-то нашёл способ сделать src.rpm минимального размера и с тех пор технология не меняется.

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.