fpc-3.2.4 загрузка исходников
Модератор: Модераторы
Код: Выделить всё
#!/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
- Откуда: Санкт-Петербург
sunjob
Линуксоид? Кнопкотоптатель?
Если Вы такой скрипт предложите своей жене, что бы она так стиралку включала... то...вечная память

Линуксоид? Кнопкотоптатель?
Если Вы такой скрипт предложите своей жене, что бы она так стиралку включала... то...вечная память
Little_Roo неудачно вышел замуж, не смог разобраться с новой стиралкой? Не хороните себя раньше времени, слюбится, стерпится...Little_Roo писал(а):sunjob
Линуксоид? Кнопкотоптатель?
Если Вы такой скрипт предложите своей жене, что бы она так стиралку включала... то...вечная память
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Второе пришествие Христа. Естественно в Израиле.
Все бегают, суетятся. Абрам сидит, что-то делает.
Забегает к ниму человек
- Абрам Христос пришел.
- Не мешайте.
и так несколько раз Заходит Христос
- Абрам ну сколько можно ждать?
- Ой, ну кто бы говорил!
Все бегают, суетятся. Абрам сидит, что-то делает.
Забегает к ниму человек
- Абрам Христос пришел.
- Не мешайте.
и так несколько раз Заходит Христос
- Абрам ну сколько можно ждать?
- Ой, ну кто бы говорил!
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Если есть стремление попробовать версию выше релиза можно попробовать мою с 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...
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 раз.
спасибо!
но я предпочитаю скачивать с офф.источников и делать сборку самостоятельно (так оно надежнее, всегда знаешь что/где делается/патчится/собирается)
и у меня не дебиан.
- откуда исходники?
- сами дорабатывали/патчили?
но я предпочитаю скачивать с офф.источников и делать сборку самостоятельно (так оно надежнее, всегда знаешь что/где делается/патчится/собирается)
и у меня не дебиан.
- хостинг, это ваш личный?можно попробовать мою с pie
- откуда исходники?
- сами дорабатывали/патчили?
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Там и патч есть на Паскале. Изменения предельно простые: добавление параметра для создания PIC по умолчанию в штатную "карточку" для системы и указание внешнему линкеру собрать с PIE. Для Дебиан это сделано сразу и достаточно удобно, но патч работает в любом дистрибутиве, просто теряется присущее удобство предоставляемое инсталлятором Дебиан. Эти изменения настолько малы и понятны, что их можно сделать и вручную.
А вот версия самого Паскаля хитрее: это вроде обычная git версия, но так сложились исходники, что на том диапазоне версий можно успешно собрать FPC новой (3.3.1) версии из неё же. Обычно новую (из git) компилируют только релизной и там стоит блокировка на это.
Принцип такой: патчим, собираем релизной, делаем пакет (если дистрибутив с пакетами) или бинарники, деинсталлируем релизную версию, ставим новую.
Уже всё. Но можно пересобрать и переставить уже новой версией "для чистоты эксперимента".
Хостинг мой.
Патч:
Чтобы воспроизвести ровно ту git-версию, что в архиве можно сделать:
Наконец, и для недебиан систем всё равно можно создать тот же пакет теми же командами, затем или распаковать вручную как архивы ar, tar, или войти в него через Midnight Commander из под рута и скопировать содержимое в соответствующее место системы, затем запустить вручную скрипт postinst.
Файл deb - это просто ar архив с tar архивами внутри.
А вот версия самого Паскаля хитрее: это вроде обычная 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 clone https://gitlab.com/freepascal.org/fpc/source.git
cd fpc
git checkout c202c6c2
Файл deb - это просто ar архив с tar архивами внутри.
это ваше мнение! дальше не будем натации читать, ладно?! у всех свои задачи/рамки/весЫ и как следствие - свои пути неисповедимые...Это не правильный
зачем это, для кого это?! все "это" я прекрасно знаю! но это не отменяет, а наборот - подразумевает сборку на "рабочей тачке" и, соответственно, сборка пакета средствами текущего дистрибьютива (и ни как иначе). спорить ведь не будем?! дистрибьютивов линуха, со своим стеком библиотек/тулчейнов итд со своими версиями, зависимостями итд... там далее такОе болото... что "аж жуть"! поэтому рассматривать "установку какого-либо" ненативного пакета - это более чем не айс! в аварийных случаях - да, можно попробовать вкостЫлить. но при нормальных условиях - это ... ой, не айс! (и спорить далее не будудля недебиан систем...
поэтому я собираю/опакечиваю все сам... из фофициаленных источников
пакеты дОлжно собирать "дистро-зависимыми механизнами"создать тот же пакет теми же командами
(на недебиан-линухе нет этих самых команд, кот. собирают пакет...)
подробнее можно? что это, для чего, итд. набегом не нашел...гугль тоже не знаетPIC / PIE
"патчер" глянул...
хотелось бы понять, что это, нужно оно и на сколько.
спасибо
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
> что это, нужно оно и на сколько
Есть ли в дистрибутиве аналог 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
Есть ли в дистрибутиве аналог 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
предназначен для дебиан-дистрибьютивов (debian, ubuntu, bubuntu etc)Есть ли в дистрибутиве аналог lintian
у меня их нет ни в исходном варианте, ни в доп.хранилище
почитал ссылки, особенно pdf (650 pages)...
ладно, будем считать - вы меня уделали по всем статьям! есть к чему стремиться!
что по поводу скрипта-загрузки?
script
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
> у меня их нет ни в исходном варианте, ни в доп.хранилище
Как называется дистрибутив ?
Добавлено спустя 9 минут 7 секунд:
На https://www.freepascal.org/download.html написано "found" и есть ссылка на https://www.freepascal.org/down/old/down.html , а там уже "Not Found", что как бы говорит об этом.
Как называется дистрибутив ?
Добавлено спустя 9 минут 7 секунд:
Скорее всего версия 3.2.4 была и в виде архива тогда, но её стёрли. Так что только копанием версий из git можно попытаться её найти.что по поводу скрипта-загрузки?
На https://www.freepascal.org/download.html написано "found" и есть ссылка на https://www.freepascal.org/down/old/down.html , а там уже "Not Found", что как бы говорит об этом.
не дебиан (и дочерние) :о) -> slackware-xxxAlexander писал(а):Как называется дистрибутив ?
я почему-то считал что текущие версииСкорее всего версия 3.2.4
Код: Выделить всё
snapshot/trunk
snapshot/fixes
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Для slackware не увидел в поиске ничего подобного, кроме слабенького
http://www.slackware.com/~alien/tools/checkpkg
http://www.slackware.com/~alien/tools/checkpkg
