Автоматизированное место врача от Leybasoft®
Главная » 2014 » Ноябрь » 13 » Как я ставил транковый fpc и lazarus на Windows 7 x64
8:50 PM
Как я ставил транковый fpc и lazarus на Windows 7 x64

Вскоре после успешной попытки установки сабжа под Линуксом при помощи молотка и зубила командной строки (вернее, командного интерпретатора) я решил проделать то же самое и под Виндой. Взяв в качестве источника вдохновения статью на Вики и стиснув зубы, я немедленно приступил к делу.

Примечание: справедливости ради должен сказать, что есть замечательный инструмент для сборки компилятора и Лазаруса в автоматическом режиме на любой ОСи, который называется fpcupdeluxe, свежие релизы которого всегда можно скачать здесь


 

1. Создаем необходимую структуру папок.

Структура должна быть строго упорядочена, для чего - станет понятно ниже.
Для начала создаем общую для всех папку, пусть для примера это будет.

 
d:\development

Теперь положим в нее еще три папки:
а) бинарные файлы последней стабильной версии компилятора (нужны для компиляции и сборки транковой версии fpc из ресурсов)
б) собственно свежий транк компилятора (лежит тут)
в) и свежий транк Лазаря (лежит тут)

Бинарные (скомпилированные) файлы последнего стабильного релиза компилятора для win32 можно взять здесь (на момент правки статьи это была версия 3.0.4, которая лежит здесь  в виде виде экзешника fpc-3.0.4.i386-win32.exe). Скачиваем его, запускаем, для распаковки указываем путь

d:\development\fpc_304

В указанной папке должны появиться папки bin, demo, doc и т.д. Чтобы не "мусорить" в реестре, снимите в чекбоксах инсталлятора соответствующие галочки.


 
примечание (очень важное): штатный инсталлятор обязательно прописывает пути к fpc_304 в системную переменную PATH (Мой компьютер -  Свойства - Дополнительные параметры системы - Переменные среды - PATH).  Прежде, чем двигаться дальше, необходимо удалить эти пути из системы. Иначе при сборке и компиляции среды Лазарус получит ссылки на стабильный релиз компилятора, а не на транковый.

Далее скачиваем при помощи svn-клиента (я использую бесплатный и руссифицированный  TortoiseSVN) свежий последний транк компилятора в папку (svn путь для клиента https://svn.freepascal.org/svn/fpc/trunk)

d:\development\fpc_trunk

, а также свежий транк Лазаря в папку (svn путь для клиента https://svn.freepascal.org/svn/lazarus/trunk)

d:\development\lazarus_trunk
 

2. Создаем bat-файлы и собираем исходники.

Поскольку в Винде проще запустить файл мышкой, чем мучиться с командной строкой, то создадим командные файлы, которые сделают всю рутину за нас.

Если процесс сборки компилятора и Лазаруса будет единовременным, то лучше использовать один bat-файл (об этом ниже).
Если же собирается либо компилятор, либо среда, то удобнее использовать один из них. Нам понадобятся их два:
а) для компиляции  и сборки транковой версии компилятора (назовем его makefpc.bat)
б) для компиляции и сборки транковой версии Лазаруса (назовем его makelaz.bat)

Обратите внимание:
1. файлы лучше поместить в корневую папку d:\development
2. файлы необходимо запускать под админской учеткой
3. кодировка файла должна быть в win1251(для русской локали), чтобы русские сообщения в консоли выводились корректно

Создаем файл makefpc.bat со следующим содержимым

@echo on
chcp 1251

set MyRoot=d:\archive\development

set FPC_current_rev=fpc_trunk
set FPC_stable_utils=fpc304\bin\i386-win32\
set FPC_source=%MyRoot%\%FPC_current_rev%
set FPC_binutils=%FPC_source%\bin\i386-win32
set FPC_stable_binutils=%MyRoot%\fpc_stable\%FPC_stable_utils%
set PATH=%MyRoot%;%FPC_source%;%FPC_binutils%;%FPC_stable_binutils%;%PATH%

cd %FPC_source%

@echo off

:: Компилируем fpc
make clean all install INSTALL_PREFIX=%FPC_source% PP=%FPC_stable_binutils%\ppc386.exe DATA2INC=%FPC_source%\utils\data2inc.exe 

:: Копируем "недостающие" файлы из стабильного релиза (fpc_304\bin\i386-win32) в транковый (fpc_trunk\bin\i386-win32) с заменой на новые при необходимости
replace %FPC_stable_binutils%\*.* %FPC_binutils% /a

:: копируем c заменой на более новые файлы из fpc_304\bin\i386-win32 в fpc_trunk\bin\i386-win32
replace %FPC_stable_binutils%\*.* %FPC_binutils% /u

:: переходим в каталог с утилитами нового fpc
cd /d %FPC_binutils%

:: создаем конфигурационный файл fpc.cfg, который ляжет сюда %FPC_binutils% 
fpcmkcfg -d basepath=%FPC_source% -o .\fpc.cfg
 

примечание:

1. команда set FPC_current_rev=fpc_trunk задает папку с текущей ревизией собираемого транка. Если планируется использовать несколько версий компилятора (например, для каждой сборки Лазаря свою), то папку с новой версией лучше сразу переименовывать после скачивания из репозитория (например, fpc_r37690), внося соответствующую правку в батник (для указанного примера это будет выглядеть так: setFPC_current_rev=fpc_r37690). 

2. выделенная желтым строка от make clean до data2inc.exe - единое целое без переносов на новую строку


Запускаем файл от имени Администратора

 


В результате появится папка


d:\development\fpc_trunk\bin\i386-win32

, где будут лежать бинарники новой версии. 

 

Cоздаем файл  makelaz.bat для компиляции и сборки Лазаря, который первоначально будет иметь следующую конфигурацию

@echo off
chcp 1251

set MyRoot=d:\archive\development
set MyFPC=%MyRoot%\fpc_trunk
set MyBinutils=%MyFPC%\bin\i386-win32
set MyLaz_root=%MyRoot%\lazarus_trunk

set PATH=%MyBinutils%;%MyLaz_root%;%MyFPC%;%PATH%

:: переходим в корень Лазаруса
cd /d %MyLaz_root%

:: создаем папку для хранения настроек среды
if not exist %MyLaz_root%\_config md %MyLaz_root%\_config

:: создаем указатель, где искать папку с настройками
if not exist %MyLaz_root%\lazarus.cfg echo --primary-config-path=%MyLaz_root%\_config>%MyLaz_root%\lazarus.cfg 

:: компилим и собираем Лазарь
make clean all OPT="-glw2"
 

Примечание: есть еще один, упрощенный способ, сборки Лазаруса. Он особенно хорошо подходит в том случае, если хочется поставить для экспериментов другую версию транка, не удаляя предыдущие. Для этого нужно сделать следующее:

1. Если после установки FPC ОСь перезагружалась или выключалась, то сначала укажем системе, где искать пути к бинарникам компилятора. Например, если у нас бинарники лежат здесь d:\archive\development\fpc_r37690\bin\i386-win32, то запускаем cmd.exe  и устанавливаем временные пути к ним

c:\users\leyba>set PATH=d:\archive\development\fpc_r37690\bin\i386-win32


2. Теперь там же переходим в папку со свежескачанным транком Lazarus'а (например, пусть он лежит здесь d:\Archive\development\lazarus_19_r57110\)

c:\users\leyba>cd /d d:\Archive\development\lazarus_19_r57110\


3. Вводим команду компиляции и сборки среды

d:\Archive\development\lazarus_19_r57110> make bigide

 и ждем окончания процесса

Примечание 2: обратите внимание, что после запуска последнего батника в корне Лазаруса появились  папка _config с параметрами конфига собранной версии среды и конфигурационный файл lazarus.cfg (содержащий строку --primary-config-path=d:\Archive\development\lazarus_trank\_config), где должен быть указан путь к этой самой папке. Если вы собираете Лазарус упрощенным способом, то их придется создавать вручную. Иначе при первом запуске Лазарус начнет задавать вопросы о размещении файлов конфигурации(если на машине нет других установок Лазаруса) или об объединении с конфигами других сборок (если таковые уже есть).

Примечание 3: если хочется полностью обновить и компилятор и среду, то можно воспользоваться объединенным батником, который будет выглядеть примерно так (назовем его make_fpc_laz.bat)

 
@echo on
chcp 1251

set MyRoot=d:\archive\development
set FPC_current_rev=fpc_trunk
set FPC_stable_utils=fpc304\bin\i386-win32\
set FPC_source=%MyRoot%\%FPC_current_rev%
set FPC_binutils=%FPC_source%\bin\i386-win32
set FPC_stable_binutils=%MyRoot%\fpc_stable\%FPC_stable_utils%
set MyLaz_root=%MyRoot%\lazarus_trunk

set PATH=%MyRoot%;%FPC_source%;%FPC_binutils%;%FPC_stable_binutils%;%MyLaz_root%;%PATH%


:: переходим в корень fpc_trunk
cd %FPC_source%

@echo off

:: Компилируем fpc
make clean all install INSTALL_PREFIX=%FPC_source% PP=%FPC_stable_binutils%\ppc386.exe DATA2INC=%FPC_source%\utils\data2inc.exe 

:: Копируем "недостающие" файлы из стабильного релиза (fpc_304\bin\i386-win32) в транковый (fpc_trunk\bin\i386-win32) с заменой на новые при необходимости
replace %FPC_stable_binutils%\*.* %FPC_binutils% /a

:: копируем c заменой на более новые файлы из fpc_304\bin\i386-win32 в fpc_trunk\bin\i386-win32
replace %FPC_stable_binutils%\*.* %FPC_binutils% /u

:: переходим в каталог с утилитами нового fpc
cd /d %FPC_binutils%

:: создаем конфигурационный файл fpc.cfg, который ляжет сюда %FPC_binutils% 
fpcmkcfg -d basepath=%FPC_source% -o .\fpc.cfg


:: переходим в корень Лазаруса
cd /d %MyLaz_root%

:: создаем папку для хранения настроек среды
if not exist %MyLaz_root%\_config md %MyLaz_root%\_config

:: создаем указатель, где искать папку с настройками
if not exist %MyLaz_root%\lazarus.cfg echo --primary-config-path=%MyLaz_root%\_config>%MyLaz_root%\lazarus.cfg 

:: компилим и собираем Лазарь
make clean all OPT="-glw2"



Теперь идем в папку lazarus_trunk и запускаем startlazarus.exe.

При первом запуске среда  потребует указать пути к компилятору, дебаггеру, конфигурационному файлу и сорцам комплятора. Все это нужно искать в папке fpc_trunk (строго говоря, достаточно указать папку с сорцами компилятора и путь к fpc.exe, среда остальное найдет сама. Перфекционисты могут также прописывать пути при помощи макросов среды и относительных путей, например, в нашем случае путь к сорцам компилятора будет выглядеть в IDE как: ../fpc_trunk, а к файлу fpc.exe будет таким: $(FPCSrcDir)/bin/$(TargetCPU)-$(TargetOS)/fpc.exe. 

Если я правильно понял, пути надо выставлять именно в такой очередности, тогда и макросы "заработают" правильно ).


 

3. Доработка напильником.

Если для Дельфи существуют утилиты, позволяющие сохранять настройки среды, то в отношении Лазаря ситуация проявляется с точностью до наоборот. В самой среде механизм сохранения пользовательских настроек находится пока в зачаточном состоянии, простое копирование файлов не всегда работает корректно.

К счастью, самую нудную часть настройки (на мой взгляд), а именно цветовую схему редактора, всегда можно импортировать в среду, если она была предварительно экспортирована в виде xml-файла из другой сборки.

Итак, открываем среду из которой мы собираемся перейти на свежую, идем Сервис ► ПараметрыРедактор ► Цвета
 

Жмем на кнопку с картинкой дискетки, чтобы сохранить текущую цветовую схему. Ищем папку _config с настройками свежеустановленного Лазаря, где открываем папку userschemes, а потом и сохраняем цветовую схему с каким-нибудь нетривиальным названием.
 

Теперь закрываем старую среду и открываем новую, идем к тому же пункту настроек и в выпадающем списке
 


находим и выбираем сохраненную ранее схему

 

Справедливости ради надо сказать, что существует очень продвинутый инструмент для легкой кастомизации цветовых схем - Delphi IDE Theme Editor, вот только работает он для сборок, установленных штатным инсталлятором, поскольку ищет файлы с настройками строго здесь C:\Users\<Windows User>\AppData\Local\lazarus\userschemes.

В утешении могу добавить, что для Лазаруса от разработчиков можно скачать множество цветовых схем. Чтобы использовать их, достаточно распаковать архив в выше упомянутую папку userschemes и перезапустить среду.
 
 
 
 
 
Категория: Программирование | Просмотров: 2863 | Добавил: leyba | Теги: fpc.cfg, Pascal, Seven, svn, Windows, Лазарус, Trunk, fpc, транк, Lazarus | Рейтинг: 0.0/0
Всего комментариев: 6
avatar
1 Sultans2 • 6:27 PM, 10.01.2015
Привет!
Пытаюсь установить лазарус вышеописанным способом, но не создаётся папка
с:\development\fpc_trunk\bin\i386-win32.
В чем может быть дело?
Вот концовка работы файла makefpc.bat:

Installation package utils-lexyacc for target i386-win32 succeeded
Installing package utils-unicode
Installation package utils-unicode for target i386-win32 succeeded
make[3]: Leaving directory `c:/development/fpc_trunk/utils'
make[2]: Leaving directory `c:/development/fpc_trunk'
make ide_distinstall FPC=c:/development/fpc_trunk/compiler/ppc386.exe FPCFPMAKE=
c:/development/fpc_trunk/compiler/ppc386.exe RELEASE=1 'OPT='
make[2]: Entering directory `c:/development/fpc_trunk'
make -C ide distinstall
make[3]: Entering directory `c:/development/fpc_trunk/ide'
./fpmake.exe install --localunitdir=.. --globalunitdir=../packages --os=win32 --
cpu=i386 -o -Ur -o -Xs -o -O2 -o -n -o -Fuc:/development/fpc_trunk/rtl/units/i38
6-win32 -o -Fuc:/development/fpc_trunk/packages/paszlib/units/i386-win32 -o -Fuc
:/development/fpc_trunk/packages/fcl-process/units/i386-win32 -o -Fuc:/developme
nt/fpc_trunk/packages/hash/units/i386-win32 -o -Fuc:/development/fpc_trunk/packa
ges/libtar/units/i386-win32 -o -Fuc:/development/fpc_trunk/packages/fpmkunit/uni
ts/i386-win32 -o -dRELEASE --compiler=c:/development/fpc_trunk/compiler/ppc386.e
xe -bu --prefix=/pp --baseinstalldir=/pp  -ie -fsp 0
Installing package ide
Installation package ide for target i386-win32 succeeded
make[3]: Leaving directory `c:/development/fpc_trunk/ide'
make[2]: Leaving directory `c:/development/fpc_trunk'
make[1]: Leaving directory `c:/development/fpc_trunk'

c:\development\fpc_trunk>data2inc=c:\development\fpc_trunk\utils\data2inc.exe
usage : data2inc [Options]<msgfile> [incfile]
  [constname]The constname parameter is only valid in combination
  with -b, otherwise the constname must be specified in the inputfile

<Options> can be :
              -B     File to read is binary.
              -A     array of byte output (default is array of char)
              -S     array of string output
              -V     Show version
        -? or -H     This HelpScreen

 See data2inc.exm for a demonstration source

c:\development\fpc_trunk>rem ъюяшЁєхь Їрщы√ gdb.exe, make.exe шч fpc_264\bin\i38
6-win32 т fpc_trunk\bin\i386-win32

c:\development\fpc_trunk>

avatar
0
2 leyba • 0:21 AM, 28.01.2015
Привет,
батник запускаешь от имени Администратора?
avatar
3 Sultans2 • 4:44 PM, 28.01.2015
Привет!
Да, от имени администратора в cmd!
avatar
0
4 leyba • 7:26 PM, 28.01.2015
попробуй в строке
Код
DATA2INC=%myFPC%\utils\data2inc.exe>%myroot%\fpc_compil.log

убрать перенаправление вывода текста в файл примерно так
Код
DATA2INC=%myFPC%\utils\data2inc.exe
rem >%myroot%\fpc_compil.log
avatar
5 Sultans2 • 8:44 PM, 30.01.2015
В файле makefpc.bat нет строки

Код
DATA2INC=%myFPC%\utils\data2inc.exe>%myroot%\fpc_compil.log

Она (эта строка) итак без fpc_compil-log.
Откуда ты её вял? Может наоборот, - добавить? sad uhm
avatar
0
6 leyba • 2:21 PM, 02.02.2015
Ooo-pps!
Это я у себя процессе работы для удобства отладки перенаправлял вывод из окна cmd в текстовый файл.

Касаемо вопроса, я так понял, что твоя ОСь требует, чтобы ты запускал файл с параметром. Попробуй так:
DATA2INC=%myFPC%\utils\data2inc.exe -B


Вопрос: ты запускаешь все ниже описанное одной строкой?
Код
make clean all install INSTALL_PREFIX=%myFPC% PP=%mybinutils%\ppc386.exe DATA2INC=%myFPC%\utils\data2inc.exe

Если нет, то должно быть одной, примерно так
avatar