fpc-3.2.4 загрузка исходников

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

fpc-3.2.4 загрузка исходников

Сообщение sunjob »

ver.3.2.4

день добрый
как скачать исходники данной версии?!
спасибо
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Эта версия еще не выпущена. Исходники можно взять из Git.
Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

Код: Выделить всё

#!/bin/sh
set -e; clear
DIR=$(date +%Y.%m.%d)
mkdir -p ${DIR}_trunk ${DIR}_fixes

cd ${DIR}_trunk
wget -c http://downloads.freepascal.org/fpc/snapshot/trunk/source/fpc.zip
wget -c http://downloads.freepascal.org/fpc/snapshot/trunk/source/fpcbuild.zip
cd ../${DIR}_fixes
wget -c http://downloads.freepascal.org/fpc/snapshot/fixes/source/fpc.zip
wget -c http://downloads.freepascal.org/fpc/snapshot/fixes/source/fpcbuild.zip
cd ../
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

sunjob
Линуксоид? Кнопкотоптатель? :wink: :wink: :wink:
Если Вы такой скрипт предложите своей жене, что бы она так стиралку включала... то...вечная память :cry: :cry:
RRYTY
постоялец
Сообщения: 253
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

Little_Roo писал(а):sunjob
Линуксоид? Кнопкотоптатель?
Если Вы такой скрипт предложите своей жене, что бы она так стиралку включала... то...вечная память
Little_Roo неудачно вышел замуж, не смог разобраться с новой стиралкой? Не хороните себя раньше времени, слюбится, стерпится...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Второе пришествие Христа. Естественно в Израиле.
Все бегают, суетятся. Абрам сидит, что-то делает.
Забегает к ниму человек
- Абрам Христос пришел.
- Не мешайте.
и так несколько раз Заходит Христос
- Абрам ну сколько можно ждать?
- Ой, ну кто бы говорил!
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Если есть стремление попробовать версию выше релиза можно попробовать мою с pie:

http://soft.self-made-free.ru/ELFkickers_004.txz
http://soft.self-made-free.ru/fpcpie1_8.tar.xz
http://soft.self-made-free.ru/lazaruspie_3.tar.xz

Ставятся:
make deb
./installdeb.sh

Первым elfkickers - в системе появляется sstrip - он нужен для всех остальных.
Вторым fpcpie. Появляется fpc с поддержкой pie. Третьим - Lazarus с pie.

http://soft.self-made-free.ru/GORG64_200.tar.xz

Ставится:
make
make deb
./installdeb.sh

Появляется Galaxy Organizer, mseide, ideU, gcmp...
Последний раз редактировалось Alexander 04.07.2024 07:13:07, всего редактировалось 1 раз.
Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

спасибо!
но я предпочитаю скачивать с офф.источников и делать сборку самостоятельно (так оно надежнее, всегда знаешь что/где делается/патчится/собирается)
и у меня не дебиан. :)
можно попробовать мою с pie
- хостинг, это ваш личный?
- откуда исходники?
- сами дорабатывали/патчили?
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Там и патч есть на Паскале. Изменения предельно простые: добавление параметра для создания PIC по умолчанию в штатную "карточку" для системы и указание внешнему линкеру собрать с PIE. Для Дебиан это сделано сразу и достаточно удобно, но патч работает в любом дистрибутиве, просто теряется присущее удобство предоставляемое инсталлятором Дебиан. Эти изменения настолько малы и понятны, что их можно сделать и вручную.
А вот версия самого Паскаля хитрее: это вроде обычная git версия, но так сложились исходники, что на том диапазоне версий можно успешно собрать FPC новой (3.3.1) версии из неё же. Обычно новую (из git) компилируют только релизной и там стоит блокировка на это.

Принцип такой: патчим, собираем релизной, делаем пакет (если дистрибутив с пакетами) или бинарники, деинсталлируем релизную версию, ставим новую.
Уже всё. Но можно пересобрать и переставить уже новой версией "для чистоты эксперимента".
я предпочитаю скачивать с офф.источников
Это не правильный подход в мире свободных исходников. По-хорошему нужно знать в совершенстве используемый инструмент и уметь его произвольно изменять и патчить. Тогда бы все эти вопросы не возникали. Например pie там нет, а он нужен - сколько не скачивай оттуда. Есть и другие полезные патчи.

Хостинг мой.

Патч:

Код: Выделить всё

program fpcpiepatch;

{
    FPC PIE patch.
    For GNU/Linux 64 bit version.
    Version: 1.
    Written on FreePascal (https://freepascal.org/).
    Copyright (C) 2023-2024  Artyomov Alexander
    http://self-made-free.ru/
    aralni@mail.ru

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
}

{$MODE OBJFPC}
{$H+}
{$RANGECHECKS ON}
{$SMARTLINK ON}

uses sysutils, unix;

var
m : utf8string = './fpc/Makefile.fpc';
p : utf8string = './fpc/fpcpiepatch.txt';
t : utf8string = './fpc/compiler/systems/t_linux.pas';
i : utf8string = './fpc/compiler/systems/i_linux.pas';
fpm, fpt, fpi, fptm : Text;
s : utf8string;
f : Int64;
n : boolean = false;

begin
if FileExists(p) then begin writeln('Already patched'); Halt; end;
Assign(fpm, m); Assign(fpt, t); Assign(fpi, i); Assign(fptm, p);
FileMode:=0;
ReSet(fpm); ReSet(fpt); ReSet(fpi);
FileMode:=1;
ReWrite(fptm);

while not eof(fpm) do begin // Ok
ReadLn(fpm, s);
WriteLn(fptm, s);
if s = 'PPSUF=x64' then WriteLn(fptm, 'OPT+=-Cg');
end; {wend}
Close(fpm);
Close(fptm);
fpSystem('cp ' + p + ' ' + m);
ReWrite(fptm);

while not eof(fpt) do begin
ReadLn(fpt, s);
if Pos('ExeCmd[1]:=LdProgram', s) <> 0 then begin WriteLn(fptm, 'ExeCmd[1]:=LdProgram+'' -lc --pie --dynamic-linker=/lib64/ld-linux-x86-64.so.2 ''+target_opt+emulation_opt+platformopt+'' $OPT $DYNLINK $STATIC $GCSECTIONS $STRIP $MAP $LTO $RPATH -L. -o $EXE'';'); continue; end;
if Pos('DllCmd[1]:=LdProgram', s) <> 0 then begin WriteLn(fptm, 'DllCmd[1]:=LdProgram+'' -lc --pie --dynamic-linker=/lib64/ld-linux-x86-64.so.2 ''+target_opt+emulation_opt+platformopt+'' $OPT $INIT $FINI $SONAME $MAP $LTO $RPATH -shared $GCSECTIONS -L. -o $EXE'';'); continue; end;
WriteLn(fptm, s);
end; {wend}
Close(fpt);
Close(fptm);
fpSystem('cp ' + p + ' ' + t);
ReWrite(fptm);

while not eof(fpi) do begin // Ok
ReadLn(fpi, s);
if Pos('tf_library_needs_pic' ,s) <> 0 then WriteLn(fptm, s + ' tf_pic_default,') else WriteLn(fptm, s);
if Pos('system_x86_64_linux_info', s) <> 0 then n := true;
end; {wend}
Close(fpi);
Close(fptm);
fpSystem('cp ' + p + ' ' + i);
ReWrite(fptm);

end.
Чтобы воспроизвести ровно ту git-версию, что в архиве можно сделать:

Код: Выделить всё

git clone https://gitlab.com/freepascal.org/fpc/source.git
cd fpc
git checkout c202c6c2
Наконец, и для недебиан систем всё равно можно создать тот же пакет теми же командами, затем или распаковать вручную как архивы ar, tar, или войти в него через Midnight Commander из под рута и скопировать содержимое в соответствующее место системы, затем запустить вручную скрипт postinst.
Файл deb - это просто ar архив с tar архивами внутри.
Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

Это не правильный
это ваше мнение! дальше не будем натации читать, ладно?! у всех свои задачи/рамки/весЫ и как следствие - свои пути неисповедимые... :D
для недебиан систем...
зачем это, для кого это?! все "это" я прекрасно знаю! но это не отменяет, а наборот - подразумевает сборку на "рабочей тачке" и, соответственно, сборка пакета средствами текущего дистрибьютива (и ни как иначе). спорить ведь не будем?! дистрибьютивов линуха, со своим стеком библиотек/тулчейнов итд со своими версиями, зависимостями итд... там далее такОе болото... что "аж жуть"! поэтому рассматривать "установку какого-либо" ненативного пакета - это более чем не айс! в аварийных случаях - да, можно попробовать вкостЫлить. но при нормальных условиях - это ... ой, не айс! (и спорить далее не буду 8) )
поэтому я собираю/опакечиваю все сам... из фофициаленных источников :lol: все-все, вот этими руками...
создать тот же пакет теми же командами
пакеты дОлжно собирать "дистро-зависимыми механизнами" :roll:
(на недебиан-линухе нет этих самых команд, кот. собирают пакет...)
PIC / PIE
подробнее можно? что это, для чего, итд. набегом не нашел...гугль тоже не знает :D
"патчер" глянул...
хотелось бы понять, что это, нужно оно и на сколько.


спасибо
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

> что это, нужно оно и на сколько
Есть ли в дистрибутиве аналог lintian для проверки корректности созданного пакета ? И если есть, что он говорит про не-PIE экзешники в пакете ?
lintian просто пишет ошибку.

https://en.wikipedia.org/wiki/Position-independent_code

И на сайте amd.com в поиске:
amd64 architecture programmer's manual
https://www.amd.com/content/dam/amd/en/ ... /24594.pdf
RIP-Relative Addressing
Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

Есть ли в дистрибутиве аналог lintian
предназначен для дебиан-дистрибьютивов (debian, ubuntu, bubuntu etc)
у меня их нет ни в исходном варианте, ни в доп.хранилище :)
почитал ссылки, особенно pdf (650 pages)... :D
ладно, будем считать - вы меня уделали по всем статьям! есть к чему стремиться! :)

что по поводу скрипта-загрузки?
script
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

> у меня их нет ни в исходном варианте, ни в доп.хранилище

Как называется дистрибутив ?

Добавлено спустя 9 минут 7 секунд:
что по поводу скрипта-загрузки?
Скорее всего версия 3.2.4 была и в виде архива тогда, но её стёрли. Так что только копанием версий из git можно попытаться её найти.

На https://www.freepascal.org/download.html написано "found" и есть ссылка на https://www.freepascal.org/down/old/down.html , а там уже "Not Found", что как бы говорит об этом.
Аватара пользователя
sunjob
постоялец
Сообщения: 176
Зарегистрирован: 12.01.2011 14:19:54

Сообщение sunjob »

Alexander писал(а):Как называется дистрибутив ?
не дебиан (и дочерние) :о) -> slackware-xxx
Скорее всего версия 3.2.4
я почему-то считал что текущие версии :P

Код: Выделить всё

snapshot/trunk
snapshot/fixes
куда мир катится?! :D
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Для slackware не увидел в поиске ничего подобного, кроме слабенького
http://www.slackware.com/~alien/tools/checkpkg
Ответить