From d57d0714b1659c5bd59521f70309cc2a94c01ced Mon Sep 17 00:00:00 2001 From: Abou Al Montacir Date: Thu, 30 Mar 2023 20:31:30 +0100 Subject: [PATCH 1/1] Import fpc_3.2.2+dfsg-20.debian.tar.xz [dgit import tarball fpc 3.2.2+dfsg-20 fpc_3.2.2+dfsg-20.debian.tar.xz] --- README.Debian.in | 26 + TODO | 15 + changelog | 2126 ++++++++ clean | 37 + compat | 1 + control | 951 ++++ control.in | 951 ++++ copyright | 1996 ++++++++ fixdeb | 57 + fp-compiler.config.in | 34 + fp-compiler.doc-base.in | 10 + fp-compiler.install.in | 8 + fp-compiler.links.in | 4 + fp-compiler.lintian-overrides | 2 + fp-compiler.lintian-overrides.in | 8 + fp-compiler.manpages.in | 6 + fp-compiler.postinst.in | 99 + fp-compiler.postrm.in | 16 + fp-compiler.prerm.in | 11 + fp-compiler.templates.in | 60 + fp-compiler.triggers.in | 1 + fp-docs.doc-base.in | 10 + fp-docs.install.in | 2 + fp-docs.lintian-overrides | 2 + fp-docs.lintian-overrides.in | 4 + fp-fix-timestamps | 98 + fp-fix-timestamps.txt | 44 + fp-ide.install.in | 5 + fp-ide.lintian-overrides | 2 + fp-ide.lintian-overrides.in | 4 + fp-ide.manpages.in | 1 + fp-ide.postinst.in | 27 + fp-ide.prerm.in | 9 + fp-units-base.install.in | 13 + fp-units-base.lintian-overrides | 2 + fp-units-base.lintian-overrides.in | 2 + fp-units-db.install.in | 12 + fp-units-db.lintian-overrides | 2 + fp-units-db.lintian-overrides.in | 2 + fp-units-fcl.install.in | 23 + fp-units-fcl.lintian-overrides | 2 + fp-units-fcl.lintian-overrides.in | 2 + fp-units-fv.install.in | 3 + fp-units-fv.lintian-overrides | 2 + fp-units-fv.lintian-overrides.in | 2 + fp-units-gfx.install.in | 16 + fp-units-gfx.lintian-overrides | 2 + fp-units-gfx.lintian-overrides.in | 2 + fp-units-gtk2.install.in | 4 + fp-units-gtk2.lintian-overrides | 2 + fp-units-gtk2.lintian-overrides.in | 3 + fp-units-i386.install.in | 4 + fp-units-i386.lintian-overrides | 2 + fp-units-i386.lintian-overrides.in | 2 + fp-units-math.install.in | 6 + fp-units-math.lintian-overrides | 5 + fp-units-math.lintian-overrides.in | 5 + fp-units-misc.install.in | 28 + fp-units-misc.lintian-overrides | 2 + fp-units-misc.lintian-overrides.in | 4 + fp-units-multimedia.install.in | 10 + fp-units-multimedia.lintian-overrides | 2 + fp-units-multimedia.lintian-overrides.in | 2 + fp-units-net.install.in | 15 + fp-units-net.lintian-overrides | 2 + fp-units-net.lintian-overrides.in | 2 + fp-units-rtl.install.in | 8 + fp-units-rtl.lintian-overrides | 2 + fp-units-rtl.lintian-overrides.in | 3 + fp-units-wasm.install.in | 5 + fp-utils.install | 4 + fp-utils.install.in | 48 + fp-utils.lintian-overrides | 2 + fp-utils.lintian-overrides.in | 6 + fp-utils.manpages | 1 + fp-utils.manpages.in | 35 + fp-utils.postinst.in | 72 + fp-utils.prerm.in | 12 + fpc-depends.in | 65 + fpc-source.install.in | 4 + fpc-source.links | 2 + fpc-source.lintian-overrides | 2 + fpc-source.lintian-overrides.in | 6 + fpc.lintian-overrides | 2 + fpc.lintian-overrides.in | 2 + gbp.conf | 16 + moveexamples | 71 + orig-tar.sh | 39 + ...5567f1b2fb3fd283886b262dc72875a6360b.patch | 53 + ...ab1019a395a9392578b653958c14e19f81e0.patch | 569 +++ ...b299da00443c49e92d7f5fe4d4a2d0c1a557.patch | 108 + ...764a7b14c47cbd51abd25672d43aaba8b6b9.patch | 195 + ...c6e2dfa10f7a2221b97fa0da55a7406a0f07.patch | 376 ++ ...368759f5fb53aa23e03c8cc27c2deb424b62.patch | 24 + ...liking-with-libc-when-PIC-is-enabled.patch | 24 + .../Fix-missing-crtbeginS.o-on-mipsel.patch | 19 + patches/armhf-tags.patch | 18 + ...lization-files-to-fit-Debian-standar.patch | 103 + ..._to_install_missing_package_examples.patch | 22 + patches/clean_man_pages.patch | 17 + ...irectory-before-copy-in-Makefile.fpc.patch | 30 + .../disable_building_gnome1_and_gtk1.patch | 114 + ...jsminifier-from-build-as-we-strip-it.patch | 17 + patches/fix-FPCDIR-in-fpcmake.diff | 85 + patches/fix-IDE-GDB-support.patch | 4339 +++++++++++++++++ patches/fix-IDE-data-file-location.patch | 97 + ...ing-of-localization-files-to-be-utf8.patch | 334 ++ patches/fix-samplecfg-tool.patch | 58 + patches/fix-spelling-errors-3.patch | 16 + ...fix-units-path-to-be-multi-arch-safe.patch | 99 + patches/fix-utest-version-lists.patch | 25 + patches/fix_make_files_generation.patch | 96 + .../fix_powerpc_ftbfs_with_new_glibc.patch | 41 + ...ix_source_location_for_documentation.patch | 295 ++ patches/glibc2.34.patch | 188 + patches/honor_SOURCE_DATE_EPOCH_in_date.patch | 55 + patches/m68k-disable-FPU-inlining.patch | 24 + patches/ncurses6.patch | 26 + patches/pas2jni-cthreads.patch | 22 + patches/ppc64el-toc-fixes.patch | 262 + patches/prevent_date_in_fpcdocs.patch | 17 + patches/relpath.patch | 76 + ...ciated-ncursus-variables-declaration.patch | 25 + patches/rename-instantfpc-to-ifpc.patch | 165 + patches/series | 37 + patches/use-bfd-explicitly.diff | 32 + patches/version.diff | 29 + po/POTFILES.in | 1 + po/cs.po | 127 + po/da.po | 126 + po/de.po | 128 + po/es.po | 155 + po/fr.po | 131 + po/hu.po | 125 + po/it.po | 129 + po/ja.po | 126 + po/nl.po | 130 + po/pl.po | 132 + po/pt.po | 131 + po/pt_BR.po | 128 + po/ru.po | 128 + po/sk.po | 133 + po/sv.po | 128 + po/templates.pot | 106 + rules | 549 +++ source/format | 1 + source/lintian-overrides | 3 + source/timestamps | 79 + tests/control | 12 + tests/ref_fail_amd64 | 45 + tests/ref_fail_arm64 | 39 + tests/ref_fail_armel | 56 + tests/ref_fail_armhf | 56 + tests/ref_fail_i386 | 32 + tests/ref_fail_ppc64el | 57 + tests/run-upstream-testsuite | 81 + upstream/metadata | 2 + watch | 8 + 158 files changed, 18437 insertions(+) create mode 100644 README.Debian.in create mode 100644 TODO create mode 100644 changelog create mode 100644 clean create mode 100644 compat create mode 100644 control create mode 100644 control.in create mode 100644 copyright create mode 100755 fixdeb create mode 100644 fp-compiler.config.in create mode 100644 fp-compiler.doc-base.in create mode 100644 fp-compiler.install.in create mode 100644 fp-compiler.links.in create mode 100644 fp-compiler.lintian-overrides create mode 100644 fp-compiler.lintian-overrides.in create mode 100644 fp-compiler.manpages.in create mode 100644 fp-compiler.postinst.in create mode 100644 fp-compiler.postrm.in create mode 100644 fp-compiler.prerm.in create mode 100644 fp-compiler.templates.in create mode 100644 fp-compiler.triggers.in create mode 100644 fp-docs.doc-base.in create mode 100644 fp-docs.install.in create mode 100644 fp-docs.lintian-overrides create mode 100644 fp-docs.lintian-overrides.in create mode 100755 fp-fix-timestamps create mode 100644 fp-fix-timestamps.txt create mode 100644 fp-ide.install.in create mode 100644 fp-ide.lintian-overrides create mode 100644 fp-ide.lintian-overrides.in create mode 100644 fp-ide.manpages.in create mode 100644 fp-ide.postinst.in create mode 100644 fp-ide.prerm.in create mode 100644 fp-units-base.install.in create mode 100644 fp-units-base.lintian-overrides create mode 100644 fp-units-base.lintian-overrides.in create mode 100644 fp-units-db.install.in create mode 100644 fp-units-db.lintian-overrides create mode 100644 fp-units-db.lintian-overrides.in create mode 100644 fp-units-fcl.install.in create mode 100644 fp-units-fcl.lintian-overrides create mode 100644 fp-units-fcl.lintian-overrides.in create mode 100644 fp-units-fv.install.in create mode 100644 fp-units-fv.lintian-overrides create mode 100644 fp-units-fv.lintian-overrides.in create mode 100644 fp-units-gfx.install.in create mode 100644 fp-units-gfx.lintian-overrides create mode 100644 fp-units-gfx.lintian-overrides.in create mode 100644 fp-units-gtk2.install.in create mode 100644 fp-units-gtk2.lintian-overrides create mode 100644 fp-units-gtk2.lintian-overrides.in create mode 100644 fp-units-i386.install.in create mode 100644 fp-units-i386.lintian-overrides create mode 100644 fp-units-i386.lintian-overrides.in create mode 100644 fp-units-math.install.in create mode 100644 fp-units-math.lintian-overrides create mode 100644 fp-units-math.lintian-overrides.in create mode 100644 fp-units-misc.install.in create mode 100644 fp-units-misc.lintian-overrides create mode 100644 fp-units-misc.lintian-overrides.in create mode 100644 fp-units-multimedia.install.in create mode 100644 fp-units-multimedia.lintian-overrides create mode 100644 fp-units-multimedia.lintian-overrides.in create mode 100644 fp-units-net.install.in create mode 100644 fp-units-net.lintian-overrides create mode 100644 fp-units-net.lintian-overrides.in create mode 100644 fp-units-rtl.install.in create mode 100644 fp-units-rtl.lintian-overrides create mode 100644 fp-units-rtl.lintian-overrides.in create mode 100644 fp-units-wasm.install.in create mode 100755 fp-utils.install create mode 100644 fp-utils.install.in create mode 100644 fp-utils.lintian-overrides create mode 100644 fp-utils.lintian-overrides.in create mode 100644 fp-utils.manpages create mode 100644 fp-utils.manpages.in create mode 100644 fp-utils.postinst.in create mode 100644 fp-utils.prerm.in create mode 100755 fpc-depends.in create mode 100644 fpc-source.install.in create mode 100755 fpc-source.links create mode 100644 fpc-source.lintian-overrides create mode 100644 fpc-source.lintian-overrides.in create mode 100644 fpc.lintian-overrides create mode 100644 fpc.lintian-overrides.in create mode 100644 gbp.conf create mode 100644 moveexamples create mode 100755 orig-tar.sh create mode 100644 patches/0-dba65567f1b2fb3fd283886b262dc72875a6360b.patch create mode 100644 patches/1-3ef2ab1019a395a9392578b653958c14e19f81e0.patch create mode 100644 patches/2-28b2b299da00443c49e92d7f5fe4d4a2d0c1a557.patch create mode 100644 patches/3-8a31764a7b14c47cbd51abd25672d43aaba8b6b9.patch create mode 100644 patches/4-1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07.patch create mode 100644 patches/5-85c7368759f5fb53aa23e03c8cc27c2deb424b62.patch create mode 100644 patches/Fix-liking-with-libc-when-PIC-is-enabled.patch create mode 100644 patches/Fix-missing-crtbeginS.o-on-mipsel.patch create mode 100644 patches/armhf-tags.patch create mode 100644 patches/change-path-of-localization-files-to-fit-Debian-standar.patch create mode 100644 patches/change_fpmake_to_install_missing_package_examples.patch create mode 100644 patches/clean_man_pages.patch create mode 100644 patches/create-directory-before-copy-in-Makefile.fpc.patch create mode 100644 patches/disable_building_gnome1_and_gtk1.patch create mode 100644 patches/drop-jsminifier-from-build-as-we-strip-it.patch create mode 100644 patches/fix-FPCDIR-in-fpcmake.diff create mode 100644 patches/fix-IDE-GDB-support.patch create mode 100644 patches/fix-IDE-data-file-location.patch create mode 100644 patches/fix-encoding-of-localization-files-to-be-utf8.patch create mode 100644 patches/fix-samplecfg-tool.patch create mode 100644 patches/fix-spelling-errors-3.patch create mode 100644 patches/fix-units-path-to-be-multi-arch-safe.patch create mode 100644 patches/fix-utest-version-lists.patch create mode 100644 patches/fix_make_files_generation.patch create mode 100644 patches/fix_powerpc_ftbfs_with_new_glibc.patch create mode 100644 patches/fix_source_location_for_documentation.patch create mode 100644 patches/glibc2.34.patch create mode 100644 patches/honor_SOURCE_DATE_EPOCH_in_date.patch create mode 100644 patches/m68k-disable-FPU-inlining.patch create mode 100644 patches/ncurses6.patch create mode 100644 patches/pas2jni-cthreads.patch create mode 100644 patches/ppc64el-toc-fixes.patch create mode 100644 patches/prevent_date_in_fpcdocs.patch create mode 100644 patches/relpath.patch create mode 100644 patches/remove-depreciated-ncursus-variables-declaration.patch create mode 100644 patches/rename-instantfpc-to-ifpc.patch create mode 100644 patches/series create mode 100644 patches/use-bfd-explicitly.diff create mode 100644 patches/version.diff create mode 100644 po/POTFILES.in create mode 100644 po/cs.po create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/es.po create mode 100644 po/fr.po create mode 100644 po/hu.po create mode 100644 po/it.po create mode 100644 po/ja.po create mode 100644 po/nl.po create mode 100644 po/pl.po create mode 100644 po/pt.po create mode 100644 po/pt_BR.po create mode 100644 po/ru.po create mode 100644 po/sk.po create mode 100644 po/sv.po create mode 100644 po/templates.pot create mode 100755 rules create mode 100644 source/format create mode 100644 source/lintian-overrides create mode 100644 source/timestamps create mode 100644 tests/control create mode 100644 tests/ref_fail_amd64 create mode 100644 tests/ref_fail_arm64 create mode 100644 tests/ref_fail_armel create mode 100644 tests/ref_fail_armhf create mode 100644 tests/ref_fail_i386 create mode 100644 tests/ref_fail_ppc64el create mode 100755 tests/run-upstream-testsuite create mode 100644 upstream/metadata create mode 100644 watch diff --git a/README.Debian.in b/README.Debian.in new file mode 100644 index 00000000..c27575c4 --- /dev/null +++ b/README.Debian.in @@ -0,0 +1,26 @@ +The Free Pascal Compiler for Debian +- ----------------------------------- + +Only PDF docs are built as shipped. You may want to make the HTML files with +tex4ht by yourself and eventually adapt the doc-base file. + +To create a new config file for fpc (/etc/fpc.cfg) use the command: + /usr/lib/${DEB_HOST_MULTIARCH}/fpc/%{fpcversion}/samplecfg /usr/lib/fpc/%{fpcversion} +However, you should be aware that said file (/etc/fpc.cfg) is +declared as a conffile since version 1.0.2. + +And, yes - this is a i386/amd64/powerpc/sparc/arm only package currently. + + -- Varun Hiremath , Sat, 20 Jan 2007 01:28:28 +0530 + + +Debugging support +------------------------------------- + +As discussed in bug 528855 [1], fp-ide currently does not have debugging +support. We are still trying to define a proper solution, but for now it +just doesn't work. + +[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=528855 + + -- Paul Gevers Mon, 23 Sep 2013 21:20:16 +0200 diff --git a/TODO b/TODO new file mode 100644 index 00000000..6edda879 --- /dev/null +++ b/TODO @@ -0,0 +1,15 @@ +* Text in Help window tells you to download the documentation while it is + already packaged (in fp-docs-##). Preferably, the documentation is + automatically found, but if not, it should mention the packaging. + +* Add autopkgtest with mini programs that just require as little units as + possible such that it can be checked that the packages work as intended and + can be used to compile these simple programs. + +* Think about how to find the proper -dev packages to recommend (or suggest) + for the different fp-units-* packages + +* fpcmake building is broken as mentioned upstream + +* Check generated files with h2pas and see if we can regenerate during build + diff --git a/changelog b/changelog new file mode 100644 index 00000000..940ff203 --- /dev/null +++ b/changelog @@ -0,0 +1,2126 @@ +fpc (3.2.2+dfsg-20) unstable; urgency=medium + + * Fixed compiler internal error 2003042401 on mipsel. + This error occurs when compiling Lazarus on mipsel architecture. + + -- Abou Al Montacir Thu, 30 Mar 2023 21:31:30 +0200 + +fpc (3.2.2+dfsg-19) unstable; urgency=medium + + * Fixed missing crtbeginS.o on mipsel architecture. + Thanks to Peter Blackman + + -- Abou Al Montacir Fri, 17 Mar 2023 13:45:28 +0100 + +fpc (3.2.2+dfsg-18) unstable; urgency=medium + + * Revert "Removed strict dependency on GKT2 libraries." + This readds dependency on libgtk2.0-dev. (Closes: Bug#1026719) + * Fixed lintian overrides. + + -- Abou Al Montacir Sat, 07 Jan 2023 13:07:32 +0100 + +fpc (3.2.2+dfsg-17) unstable; urgency=medium + + * Removed some lintian errors and warnings. + + -- Abou Al Montacir Sun, 27 Nov 2022 20:50:54 +0100 + +fpc (3.2.2+dfsg-16) unstable; urgency=medium + + * Removed strict dependency on GKT2 libraries. (Closes: Bug#967348) + * Packaged new units and executable programs that were missing until now. + (Closes: Bug#1016914) + * Updated lintian overrides file to ignore debian/source/timestamps. + + -- Abou Al Montacir Sat, 19 Nov 2022 18:35:07 +0100 + +fpc (3.2.2+dfsg-15) unstable; urgency=medium + + * Team upload + * As per upstream issue #39542, regressions in + webtbs/tw9306a and webtbs/tw9306b are acceptable + + -- Graham Inggs Sat, 20 Aug 2022 12:31:18 +0000 + +fpc (3.2.2+dfsg-14) unstable; urgency=medium + + * Team upload + * Add patch from Fedora to fix linking errors on ppc64el + * Add patch from Fedora to fix pas2jni failing to run properly + * Filter -ffat-lto-objects from deb-build-fpc.cfg to avoid + '-f may not be used without -shared' link error + (Closes: #1015407) + + -- Graham Inggs Tue, 16 Aug 2022 10:47:13 +0000 + +fpc (3.2.2+dfsg-13) unstable; urgency=medium + + [ Paul Gevers ] + * fix-samplecfg-tool.patch: add missing backtick. + * tests: update references for glibc 2.34 + + [ Graham Inggs ] + * Update glibc2.34.patch for powerpc, mips* and m68k + + -- Paul Gevers Sat, 13 Aug 2022 20:26:50 +0200 + +fpc (3.2.2+dfsg-12) unstable; urgency=medium + + * Add glibc2.34.patch to adjust startup code for glibc2.34 (Closes: + #1016556) + + -- Paul Gevers Wed, 10 Aug 2022 07:42:49 +0200 + +fpc (3.2.2+dfsg-11) unstable; urgency=medium + + * Moved fpcmkcfg tool from fp-compiler to fp-units-rtl package. + This is required in order to generate fp IDE configuration files when + the fp-ide is installed without fp-compiler package. + * Generate fp IDE configuration file in /etc by post install script. + * Fixed IDE configuration files path list. (Closes: Bug#1011318) + + -- Abou Al Montacir Thu, 26 May 2022 18:47:05 +0200 + +fpc (3.2.2+dfsg-10) unstable; urgency=medium + + * Added a trigger to detect GCC version change and updated configuration. + (Closes: Bug#978040) + + -- Abou Al Montacir Sun, 22 May 2022 13:57:24 +0200 + +fpc (3.2.2+dfsg-9~bpo11+1) bullseye-backports; urgency=medium + + * Rebuild for bullseye-backports. + + -- Abou Al Montacir Mon, 21 Feb 2022 08:44:15 +0100 + +fpc (3.2.2+dfsg-9) unstable; urgency=medium + + * Upstream patch to fix FPU related internal compiler error on ppc64el. + + -- Abou Al Montacir Sat, 19 Feb 2022 10:42:00 +0100 + +fpc (3.2.2+dfsg-8~bpo11+1) bullseye-backports; urgency=medium + + * Rebuild for bullseye-backports. + + -- Abou Al Montacir Sat, 22 Jan 2022 19:00:56 +0100 + +fpc (3.2.2+dfsg-8) unstable; urgency=medium + + * Fixed upstream name and web address in copyright file. + * Removed redundant files files from copyright file. + * Removed already applied patches. Enabled one that was disabled by error. + * Fixed spell error in copyright file. + * Removed redundant lintian override rule. + + -- Abou Al Montacir Sat, 22 Jan 2022 16:32:26 +0100 + +fpc (3.2.2+dfsg-7) unstable; urgency=medium + + * Removed lintian warning about unknown file in Debian source sub folder. + Thanks to Peter Blackman + * Removed lintian warnings about superfluous file pattern in copyright file. + Thanks to Peter Blackman + * Bumped compat level to 11 and standards version to 4.6.0. + + -- Abou Al Montacir Fri, 21 Jan 2022 00:07:15 +0100 + +fpc (3.2.2+dfsg-6) unstable; urgency=medium + + * Revert "Updated timestamps for newly modified files." + * Revert "Imported upstream patch to fix FPU related internal compiler error." + (Closes: Bug#1003627) + + -- Abou Al Montacir Thu, 13 Jan 2022 21:54:24 +0100 + +fpc (3.2.2+dfsg-5) unstable; urgency=medium + + * Imported upstream patch to fix FPU related internal compiler error. + * Updated timestamps for newly modified files. + + -- Abou Al Montacir Thu, 30 Dec 2021 15:08:07 +0100 + +fpc (3.2.2+dfsg-4) unstable; urgency=medium + + * Updated list of expected failed tests. + Most are testes used to fail and do not fail anymore. + Some of them are new tests added by this release (i386:+1, ppc64:+1). + A new generics related test is also failing on non x86_64 platforms. + + -- Abou Al Montacir Sat, 30 Oct 2021 14:46:26 +0200 + +fpc (3.2.2+dfsg-3) unstable; urgency=medium + + * New upstream version 3.2.2+dfsg into unstable. + + -- Abou Al Montacir Sat, 23 Oct 2021 18:53:06 +0200 + +fpc (3.2.2+dfsg-2) experimental; urgency=medium + + * New upstream version 3.2.2+dfsg + + -- Abou Al Montacir Sat, 23 Oct 2021 16:25:32 +0200 + +fpc (3.2.2+dfsg-1) experimental; urgency=low + + * Fixed watch file. + * New upstream version 3.2.2+dfsg + * Updated patches with regards to issues that were fixed in new release. + * Updated patches with regards to new upstream release changes. + * Updated IDE source files path. + + -- Abou Al Montacir Sat, 19 Jun 2021 12:43:44 +0200 + +fpc (3.2.0+dfsg-13) unstable; urgency=medium + + * autopkgtest: update references for current state in testing + * autopkgtest: update references for glibc 2.32 + * autopkgtest: add reference file for ppc64el + + -- Paul Gevers Thu, 16 Sep 2021 15:41:58 +0200 + +fpc (3.2.0+dfsg-12) unstable; urgency=medium + + [ Graham Inggs ] + * Drop unnecessary build dependency on binutils + + [ Abou Al Montacir ] + * Disable FPU inlining on m68k. + Thanks to John Paul Adrian Glaubitz (Closes: Bug#980841) + + -- Abou Al Montacir Mon, 25 Jan 2021 22:36:28 +0100 + +fpc (3.2.0+dfsg-11) bullseye; urgency=medium + + * Add missing backslash in fp-compiler.postinst (Closes: #979850) + * Upload to bullseye since fp-compiler is not installable in unstable + + -- Graham Inggs Tue, 12 Jan 2021 11:45:42 +0000 + +fpc (3.2.0+dfsg-9) unstable; urgency=medium + + * Added unversioned links to fpcmkcfg and samplecfg tools. + Thanks to Сергей Фёдоров (Closes: Bug#975351) + + -- Abou Al Montacir Sun, 03 Jan 2021 17:27:29 +0100 + +fpc (3.2.0+dfsg-8) unstable; urgency=medium + + * Further updates to list of expected test failures on arm32/arm64 + + add ../packages/rtl-objpas/tests/testrunner.rtlobjpas on arm32/arm64 + + add webtbs/tw22992 on arm32 + + add webtbs/tw23185 on arm32 + + -- Peter Michael Green Sat, 22 Aug 2020 13:17:07 +0000 + +fpc (3.2.0+dfsg-7) unstable; urgency=medium + + * Update list of expected test failures on + arm32/arm64/i386 + + add test/cg/tm128 on arm32/i386 + + add test/tarray15 on arm32/arm64/i386 + + add test/tinlrange1 on arm32 + + add test/tinlrange3 on arm32 + + add test/tlib1b on arm32 + + add test/tlibrary2 on arm32 + + add test/tweaklib2 on arm32 + + add tbs/tb0643 on arm32/arm64 + + add webtbs/tw0876 on i386 + + add webtbs/tw12038 on arm32/arm64/i386 + + add webtbs/tw12704b on arm32 + + add webtbs/tw13628b on arm32 + + add webtbs/tw14958b on arm32 + + add webtbs/tw16263b on arm32 + + add webtbs/tw16949b on arm32 + + add webtbs/tw17904 on arm32/arm64/i386 + + add webtbs/tw22744b on arm32/arm64/i386 + + add webtbs/tw22992 on arm32 + + add webtbs/tw23185 on arm32 + + add webtbs/tw26481 on arm32/arm64/i386 + + add webtbs/tw2886 on arm32/arm64/i386 + + add webtbs/tw32671 on i386 + + add webtbs/tw36179 on arm32/arm64 + + add webtbs/tw3964b on arm32 + + add webtbs/tw6822c on arm32 + + add webtbs/tw7838b on arm32 + + add webtbs/tw8730c on arm32 + + add webtbs/tw8730d on arm32 + + add webtbs/tw9089c on arm32 + + add webtbs/tw9089d on arm32 + + add webtbf/tw18225b on i386 + + add webtbf/tw25862 on arm32/arm64 + + -- Peter Michael Green Fri, 21 Aug 2020 11:39:19 +0000 + +fpc (3.2.0+dfsg-6) unstable; urgency=medium + + * Make autopkgtest more verbose. + * Fix issue with autopkgtest trying to use a packaged fcl with a locally + built rtl by cleaning up the rtl that is built during makefile generation + (Closes: 968245) + * Fix version lists in utests.pp + * Make autopkgtest use unified diff to report changes in failures. + * Update list of expected test failures on amd64 + + add test/tarray15 + + add webtbs/tw12038 + + add webtbs/tw17904 + + add webtbs/tw22744b + + add webtbf/tw25862 + + add webtbs/tw26481 + + add webtbs/tw2886 + + add webtbs/tw29957 + + -- Peter Michael Green Tue, 18 Aug 2020 19:53:55 +0000 + +fpc (3.2.0+dfsg-5) unstable; urgency=medium + + * Disable optimizations when building for m68k. + + -- Abou Al Montacir Fri, 07 Aug 2020 17:24:16 +0200 + +fpc (3.2.0+dfsg-4) experimental; urgency=medium + + * Fixed liking with libc when PIC is enabled (x86_64 specific). + + -- Abou Al Montacir Tue, 04 Aug 2020 12:50:43 +0200 + +fpc (3.2.0+dfsg-3) experimental; urgency=medium + + * Fixed default value of units global dir based on base installation dir. + + -- Abou Al Montacir Mon, 03 Aug 2020 23:23:02 +0200 + +fpc (3.2.0+dfsg-2) experimental; urgency=medium + + * Fixed FPCDIR default value detection after FileExist behavior change. + + -- Abou Al Montacir Sun, 02 Aug 2020 19:55:39 +0200 + +fpc (3.2.0+dfsg-1) experimental; urgency=medium + + [ Debian Janitor ] + * Trim trailing whitespace. + Fixes: lintian: file-contains-trailing-whitespace + See-also: https://lintian.debian.org/tags/file-contains-trailing-whitespace.html + * Use secure copyright file specification URI. + Fixes: lintian: insecure-copyright-format-uri + See-also: https://lintian.debian.org/tags/insecure-copyright-format-uri.html + * Wrap long lines in changelog entries: 3.0.0+dfsg-8, 3.0.0+dfsg-4, 2.6.2-2. + Fixes: lintian: debian-changelog-line-too-long + See-also: https://lintian.debian.org/tags/debian-changelog-line-too-long.html + * Use secure URI in debian/watch. + Fixes: lintian: debian-watch-uses-insecure-uri + See-also: https://lintian.debian.org/tags/debian-watch-uses-insecure-uri.html + * Set upstream metadata fields: Archive, Repository. + Fixes: lintian: upstream-metadata-file-is-missing + See-also: https://lintian.debian.org/tags/upstream-metadata-file-is-missing.html + Fixes: lintian: upstream-metadata-missing-repository + See-also: https://lintian.debian.org/tags/upstream-metadata-missing-repository.html + * Fix day-of-week for changelog entries 2.6.2-1, 2.6.0-6, 2.6.0-1, 2.4.2-3, 2.4.2-1, 2.4.0-3, 2.4.0-2, 2.2.4-5, 2.2.4-4, 2.2.2-6, 2.2.2-5, 2.0.4-rc1, 1.0.4+1.0.6cvs20020228-1, 1.0.1-0. + Fixes: lintian: debian-changelog-has-wrong-day-of-week + See-also: https://lintian.debian.org/tags/debian-changelog-has-wrong-day-of-week.html + + -- Abou Al Montacir Sat, 06 Jun 2020 00:27:44 +0200 + +fpc (3.2.0~rc1+dfsg-3) experimental; urgency=medium + + * Support building on ppc64el. + Thanks to John Paul Adrian Glaubitz (Closes: #963623) + * Fix FTBFS on m68k + + -- Paul Gevers Thu, 25 Jun 2020 17:19:22 +0200 + +fpc (3.2.0~rc1+dfsg-2) experimental; urgency=medium + + [ Paul Gevers ] + * Drop fpcsrc/.gitignore, also from future upstream sources + * Don't install libffi on non-amd64 systems as it's not built there + + [ John Paul Adrian Glaubitz ] + * Enable building on sparc64 + + -- Paul Gevers Tue, 23 Jun 2020 21:44:29 +0200 + +fpc (3.2.0~rc1+dfsg-1) experimental; urgency=medium + + [ Paul Gevers ] + * New upstream release + - refresh and update patches + - refresh debian/control + - recreate d/s/timestamps because of new upstream + + [ Abou Al Montacir ] + * Fixed compilation of msg2inc required to build documentation. + * Fixed compilation of fpcmake to be done only once. + * Add new 3.2.0 units to their respect fp-unit Debian packages. + + -- Abou Al Montacir Thu, 11 Jun 2020 20:47:41 +0200 + +fpc (3.0.4+dfsg-23) unstable; urgency=medium + + * Fixed a bug causing fpdoc to fail silently. + * Fixed documentation causing fpdoc to crash. (Closes: Bug#939414) + + -- Abou Al Montacir Mon, 25 Nov 2019 22:51:22 +0100 + +fpc (3.0.4+dfsg-22) unstable; urgency=medium + + * debian/patches/arm64-select.patch + - Fix fpSelect with nil timestamp on aarch64 (closes: 888782) + * debian/patches/arm64-subsetreg-32.patch + - when optimising subsetreg moves for aarch64, take into account the fact + that the subsetreg itself can be 32 or 64 bit + - fixes "Incorrect record member value when returned from a function". + (closes: 895693) + + -- Peter Michael Green Thu, 24 Jan 2019 23:27:02 +0000 + +fpc (3.0.4+dfsg-21) unstable; urgency=medium + + [ Paul Gevers ] + * Drop Recommends: libggi2-dev as it was removed from Debian in 2012. + We should probably remove ggigraphs unit as well as it is useless + * Drop ancient Breaks/Replaces, add one missing + + [ Abou Al Montacir ] + * Moved compiler messages files to location expected by Lazarus. + The files are anyway architecture independent and it does not hurt + to have them in /usr/share. (Closes: Bug##902888) + + -- Abou Al Montacir Wed, 16 Jan 2019 10:14:10 +0100 + +fpc (3.0.4+dfsg-20) unstable; urgency=medium + + * debian/patches/fpc-r38400.patch: + - fix crash when hedgewars closes (LP: #1779648). + + -- Gianfranco Costamagna Mon, 02 Jul 2018 14:08:20 +0200 + +fpc (3.0.4+dfsg-19) unstable; urgency=medium + + [Graham Inggs] + * Fixed ppc suffix in fpcmake to be compatible with ppc executable name + On Motorola 68000, FPC builds compiler named ppc68k while + fpcmake looks for ppcm68k to set default FPCDIR value + See #892285 + + [Peter Michael Green] + * Move Grahams fpcmake m68k change into it's own patch fpcmake-m68k.patch + * Apply Sven Joachim's patch for ncurses6 (Closes: 898017) + * Add breaks libncursesw5-dev (<< 6.1+20180210) to fp-units-base + * Add note to debian/control about ncurses adjustments needed when + backporting. + + -- Peter Michael Green Sat, 12 May 2018 01:36:01 +0100 + +fpc (3.0.4+dfsg-18) unstable; urgency=medium + + * Remove dpkg-architecture calls to reduce build time and lintian warnings + * Changed Vcs-Git and Vcs-Browser to point to salsa.debian.org. + This removes lintian warnings about old repository links. + * Cleaned man page for fpcjres tool to be lintian warnings free. + * Fixed ppc suffix in fpcmake to be compatible with ppc executable name. + For arm64 architecture, FPC make files build compiler as ppca64 while + fpcmake looks for ppcxaarch64 to set default FPCDIR value. + Thanks to Graham Inggs (Closes: Bug#892285) + + -- Abou Al Montacir Sun, 22 Apr 2018 16:10:23 +0200 + +fpc (3.0.4+dfsg-17) unstable; urgency=medium + + * Fixed ppc suffix in fpcmake to be compatible with ppc executable name. + For x86_64 architecture, FPC make files build compiler as ppcx64 while + fpcmake looks for ppcx86_64 to set default FPCDIR value. + * Patched fpcmake to look for FPCDIR in Debian FPC sources location. + (Closes: Bug#892285) + + -- Abou Al Montacir Sat, 14 Apr 2018 18:08:39 +0200 + +fpc (3.0.4+dfsg-16) unstable; urgency=medium + + * [tests] Update autopkgtest reference files + + -- Paul Gevers Fri, 02 Mar 2018 09:13:21 +0100 + +fpc (3.0.4+dfsg-15) unstable; urgency=medium + + * Fixed FpMkUnit for ARM based architectures. (Closes: Bug#888697) + + -- Abou Al Montacir Sat, 03 Feb 2018 10:30:21 +0100 + +fpc (3.0.4+dfsg-14) unstable; urgency=medium + + * Fixed fpmkunit to use new MA compatible unit paths. + Thanks to Michalis Kamburelis for the hints. + (Closes: Bug#636088, Bug#887967, Bug#887575) + + -- Abou Al Montacir Mon, 22 Jan 2018 10:28:53 +0100 + +fpc (3.0.4+dfsg-13) unstable; urgency=medium + + * Fixed typo in change log file. + * Bumped standard version to 4.1.3. Use https in URLS. + * Fixed fp-utils_${VERSION} package dependencies to fix upgrade issues. + (Closes: Bug#886859) + * Fixed alternatives removal for package fp-compiler_${VERSION}. + (Closes: Bug#886926) + * Added missing man file of fp-fix-timestamp in package fp-utils. + Removes a lintian warning. + + -- Abou Al Montacir Fri, 12 Jan 2018 09:54:33 +0100 + +fpc (3.0.4+dfsg-12) unstable; urgency=medium + + * Changed fp-ide and fp-utils packages to be arch:all as suggested by + Multiarch hinter tool. + * Fixed man pages after executables renaming required by MA changes. + * Fix IDE GDB support by importing MI supoort from upstream trunk. + (Closes: Bug#528855) + + -- Abou Al Montacir Sun, 07 Jan 2018 13:37:01 +0100 + +fpc (3.0.4+dfsg-11) unstable; urgency=medium + + * Fixed upgrade of fp-utils from older version. (Closes: #885102) + + -- Abou Al Montacir Sat, 30 Dec 2017 21:14:32 +0100 + +fpc (3.0.4+dfsg-10) unstable; urgency=medium + + * Fixed upgrade of fp-utils from older version. (Closes: #885102) + * Fixed upstream test suite by generating missing configuration file. + + -- Abou Al Montacir Mon, 25 Dec 2017 20:30:59 +0100 + +fpc (3.0.4+dfsg-9) unstable; urgency=medium + + * Renamed binaries of fp-compiler to -* as it is forbidden by + policy to have sub-directories in /us/bin. + * Moved grab_vcsa from fp-compiler to fp-utils as this is a tool that is + not required by the compiler, but by video unit from fp-units-base. + * Fixed generation of make files for test suite, including sub directories. + + -- Abou Al Montacir Mon, 18 Dec 2017 23:48:31 +0100 + +fpc (3.0.4+dfsg-8) unstable; urgency=medium + + * Fixed generation of make files for test suite. + * Moved binaries of fp-compiler to /usr/bin/ to be MA compatible. + + -- Abou Al Montacir Sat, 16 Dec 2017 23:05:46 +0100 + +fpc (3.0.4+dfsg-7) unstable; urgency=medium + + * Upload to unstable MA related fixes, previously uploaded to exprimental. + + -- Abou Al Montacir Thu, 14 Dec 2017 10:27:15 +0100 + +fpc (3.0.4+dfsg-6) experimental; urgency=medium + + * Fixed issue in postinst/postrm scripts related to unknown env variable. + + -- Abou Al Montacir Thu, 14 Dec 2017 10:25:29 +0100 + +fpc (3.0.4+dfsg-5) experimental; urgency=medium + + * Fixed units installation path according to MA policy. + * Bump standards version to 4.1.2 (no changes) + + -- Abou Al Montacir Sat, 09 Dec 2017 00:33:46 +0100 + +fpc (3.0.4+dfsg-4) experimental; urgency=medium + + * Accelerated generation of make files. + * Fixed units installation path. + + -- Abou Al Montacir Mon, 04 Dec 2017 23:59:34 +0100 + +fpc (3.0.4+dfsg-3) experimental; urgency=medium + + * Install unit files to a multi-arch safe location. + + -- Abou Al Montacir Thu, 30 Nov 2017 22:36:25 +0100 + +fpc (3.0.4+dfsg-2) unstable; urgency=medium + + [ Adam Conrad ] + * fix_texpfncase_test.patch: Cherrypick upstream fix to texpfncase test. + (Closes: 875838) + + [ Abou Al Montacir ] + * Set Muti-Arch: foreign for fp-utils* and fp-ide*. + * Set Muti-Arch: same for fp-compiler*. + + -- Abou Al Montacir Sun, 12 Nov 2017 17:13:55 +0100 + +fpc (3.0.4+dfsg-1) unstable; urgency=medium + + * New upstream version (Closes: #875838) + * Refresh patches + * Add create-directory-before-copy-in-Makefile.fpc.patch to prevent + FTBFS + * Merge experimental package into unstable + + -- Paul Gevers Mon, 30 Oct 2017 20:32:33 +0100 + +fpc (3.0.4~rc1+dfsg-1) experimental; urgency=medium + + [ Abou Al Montacir ] + * Removed declaration of legacy ncursus variables. (Closes: #789091) + These variables are now internal and no more exported by new ncursus + libraries. + * Removed Multi-Arch: same from packages with Architecture: all. + * Set Multi-Arch: same for fp-units-* packages to allow installing on + a host system for cross compiling. + + [ Paul Gevers ] + * New upstream release RC candidate + * Refresh patches and drop those applied upstream + * Refresh d/copyright for changes + * Add drop-jsminifier-from-build-as-we-strip-it.patch as we strip an + additional file now and we need to exclude that from building + * Bump standards version to 4.1.0 (no changes) + * Remove Multi-Arch: same from fp-utils, fp-compiler and fp-ide + + -- Paul Gevers Thu, 24 Aug 2017 21:47:45 +0200 + +fpc (3.0.2+dfsg-6) unstable; urgency=medium + + * Removed declaration of legacy ncursus variables. (Closes: #789091) + These variables are now internal and no more exported by new ncursus + libraries. + * Removed Muti-Arch: same from packages with Architecture: all. + * Set Muti-Arch: same for fp-units-* packages to allow installing on + a host system for cross compiling. + * Set Muti-Arch: foreign for fp-docs* and fpc-source* to allow satisfying + dependency of other architectures using host architecture (all) package. + + -- Abou Al Montacir Sat, 07 Oct 2017 16:12:36 +0200 + +fpc (3.0.2+dfsg-5) unstable; urgency=medium + + * Drop kfreebsd patches for now, resurrect them from git when required + * Add fix_mips_mipsel_lazarus_FTBFS.patch to try to fix the lazarus + FTBFS failure on mips and mipsel + + -- Paul Gevers Mon, 07 Aug 2017 13:00:17 -0400 + +fpc (3.0.2+dfsg-4) unstable; urgency=medium + + * Upload to unstable + * Fix 86 vs 68 typo in manpage creation/clean for m68k (thanks ginggs) + * Bump standards to version 4.0.0 (no changes) + + -- Paul Gevers Sun, 09 Jul 2017 15:10:33 +0200 + +fpc (3.0.2+dfsg-3) experimental; urgency=medium + + * Add symlink in fpc-source to tree in fpc-source- (Closes: + #849416) + * Fix fp-units-gfx.install for linux-m68k, linux-mips and linux-mipsel + (Closes: #863589, #863746, #863807) + * Fix mips and mipsel target in d/rules (Closes: #863747, #863808) + * Generate manpages for all new architectures (Closes: #863737, #863748, + #863809) + + -- Paul Gevers Thu, 01 Jun 2017 22:24:07 +0200 + +fpc (3.0.2+dfsg-2) experimental; urgency=medium + + * [tests] Update reference files for results on autopkgtest.u.c + + -- Paul Gevers Sun, 09 Apr 2017 11:44:58 +0200 + +fpc (3.0.2+dfsg-1) experimental; urgency=medium + + * New upstream release + - Drop obsolete patches and update the rest + - Update d/copyright for removed and new files and new years + - Recreate d/s/timestamps because of new upstream + * New fpc packages go into fp-units-fcl and fp-units-net + * Add fix_tests_for_make_print_directory.patch to fix test suite + * [tests] Update reference files + + -- Paul Gevers Wed, 08 Mar 2017 20:13:08 +0100 + +fpc (3.0.0+dfsg-12) unstable; urgency=medium + + * Fix "[fp-units-rtl-3.0.0] Incorrect conversion from local time to + UTC". Backported fix from 3.0.2 (Closes: #864148) + + -- Abou Al Montacir Sat, 10 Jun 2017 19:13:48 +0200 + +fpc (3.0.0+dfsg-11) unstable; urgency=medium + + * Team upload + * Fix armhf vstr/vld offset (Closes: #852798) + + -- Graham Inggs Wed, 08 Feb 2017 11:53:35 +0200 + +fpc (3.0.0+dfsg-10) unstable; urgency=medium + + * Add Multi-Arch metadata (as suggested by the hinter on tracker.d.o) + * Strip current path from the configuration paths as stored in fpm files + because it results in unreproducible builds and is useless anyways + because the path doesn't exist in the packages. + * Update amd64 reference to enable Ubuntu to pass + * Fix typo in ppdep such that it now recognizes the {$ELSE} directive + (Closes: #845504) + * Drop Carlos Laviola from uploaders: thanks for all the fish + * Bump compat level to 10 + * Replace mysql/mariadb dev suggests to default-libmysqlclient-dev + * Enable bindnow in the linker flags + * Drop obsolete lintian overrides + * Fix some more spelling errors (thanks Lintian) + + -- Paul Gevers Mon, 12 Dec 2016 21:35:43 +0100 + +fpc (3.0.0+dfsg-9) unstable; urgency=medium + + * Drop Torsten Werner from uploaders: thanks for all the fish + * [tests] Fix autopkgtests as it always fails + + -- Paul Gevers Mon, 12 Sep 2016 20:48:12 +0200 + +fpc (3.0.0+dfsg-8) unstable; urgency=medium + + * add a further powerpc patch from upstream (hopefully really closes: + #826300). + + -- Peter Michael Green Sat, 3 Sep 2016 03:05:00 +0000 + +fpc (3.0.0+dfsg-7) unstable; urgency=medium + + [ Paul Gevers ] + * Now really bumb Standards to 3.9.8 (forgot control.in) + * Make output of fix-fp-timestamps update unique + * autopkgtest failed to run properly due to accidental removal of code + in 3.0.0+dfsg-5 and missing g++ + * Add fp-utils-# and fp-docs-# to the Depends of fpc to get all packages + installed + * Add fix_powerpc_ftbfs_with_new_glibc.patch to fix the FTBFS on powerpc + with glibc 2.23 (Closes: #826300) + + [ Peter Michael Green ] + * Add elf tag to mark hardfp binaries as such. (Closes: #695547) + * Add further-arm64-fixes.patch to fix IDE crash on arm64 (Closes: + #830906) + + -- Paul Gevers Mon, 22 Aug 2016 22:03:07 +0200 + +fpc (3.0.0+dfsg-6) unstable; urgency=medium + + * Fix FTBFS due to wrong logic for latex files, we only need to ship + fpc.sty and fakehtml.sty (the other files were never included in + build-arch only builds anyways) + + -- Paul Gevers Thu, 02 Jun 2016 21:38:47 +0200 + +fpc (3.0.0+dfsg-5) unstable; urgency=medium + + * Don't install latex style files that are already in + texlive-latex-recommended and more up-to-date there (Closes: #820445) + * Let fpc-source break/replace fpc-src from upstream (LP: #1568072) + * Update test suite: little rework + more reference files for different + architectures + * Add arm_UMULL_support_fix.patch to enable hedgewars to build with PIC + (Follow-up from #813452) + * Add fp-fix-timestamps to ease maintainers work to get reproducible + builds where timestamps in ppu files are concerned and use it + * Bump Standards to 3.9.8 (no changes) + * Update FSF address where applicable + * Fixed several spelling errors reported by Lintian + * Add multiple lintian overrides to trim down the list + * Add fp-units-gtk2 examples back + + -- Paul Gevers Wed, 01 Jun 2016 22:16:37 +0200 + +fpc (3.0.0+dfsg-4) unstable; urgency=medium + + [ Peter Michael Green ] + * modify + debian/patches/Keep-the-GOT-offset-in-a-virtual-register-for-i386-n.patch + (Closes: Bug#818663) for compatibility with fpc 3.0.0 to fix FTBFS on i386 + + move globtype from implementation uses to interface uses in hlcgcpu.pas + + remove "paras" parameter from thlcgcpu.a_call_name + + Add symconst and aasmcpu to implementation uses in hlcgcpu.pas + + -- Abou Al Montacir Tue, 22 Mar 2016 08:54:18 +0100 + +fpc (3.0.0+dfsg-3) unstable; urgency=medium + + [ Paul Gevers ] + * Add fix_ppc64s_prt0.as_as_shown_by_cge.patch to let castle-game-engine + build on ppc64 + * Test suite was failing on the old d/rules targets (need to generate + new reference data before it can be completely run succesfull) + * Change Vcs-* to https + * Fix up typo and missing dh-exec in d/control.in + * Move libtar from fp-units-misc to fp-units-base now that fpmkunit + depends on it and add appropriate versioned Breaks/Replaces. + * Bump Standards to 3.9.7 (no changes) + + [ Abou Al Montacir ] + * Back ported some commits from upstream trunk to fix PIC issues. + (Closes: Bug#813452) + + -- Paul Gevers Fri, 18 Mar 2016 08:48:55 +0100 + +fpc (3.0.0+dfsg-2) unstable; urgency=medium + + * Upload to unstable + * Make reverse dependent package more reproducible by adding + let_ppudump_honor_TZ_var.patch + * Add after_patch_arm64_systems.pas.patch (Closes: #807479) + * Fix i386 issue with duplicate files in multiple packages + * Move cairo units from gfx to gtk2 package (Closes: #810573) + * Switch to 'dpkg-parsechangelog --show-field' instead of bumping + build-depends on dpkg-dev to >=1.17.21. + + -- Paul Gevers Thu, 28 Jan 2016 20:04:04 +0100 + +fpc (3.0.0+dfsg-1) experimental; urgency=medium + + * New upstream release + * Reproducibility never ends: add honor_SOURCE_DATE_EPOCH_in_date.patch + to improve some timestamps in binaries + + -- Paul Gevers Fri, 27 Nov 2015 14:51:44 +0100 + +fpc (3.0.0~rc2+dfsg-3) experimental; urgency=medium + + * Make package finally build reproducible (hopefully) + * Add fpm files to the respective packages + * Update auto-pkg-tests with results from CI + runs on my amd64 system + * use debfix to create and dh_lintian to install lintian overrides + * Update testsuite for 3.0.0 layout + * Restructure the clean targets to allow time reduction if desired + * Reorganize d/rules to make sure the source is copied early + * Add fix_typo_in_ppc64.patch to allow ppc64 to build again and don't + install graph and opencl there as these units aren't build + + -- Paul Gevers Thu, 12 Nov 2015 20:35:17 +0100 + +fpc (3.0.0~rc2+dfsg-2) experimental; urgency=medium + + * The second Edmund Grimley Evans release: arm64 bootstrapped + (Closes: #784569) + - enable arm64 patches + * Another try to fix the FTBFS on armhf (missed this dh-exec issue) + + -- Paul Gevers Sat, 31 Oct 2015 11:16:23 +0100 + +fpc (3.0.0~rc2+dfsg-1) experimental; urgency=medium + + * New upstream release candidate + - Remove obsolete patch + - Update + refresh patches that require changes + * Fix FTBFS on powerpc (the previous fix was not complete) + * Fix FTBFS on armhf, the logic was not in the right place + * Add patches (but don't apply them yet) to support arm64, see + bug 784569 + * Simplify logic in *.install.in and d/rules for arch dependent + install by using dh-exec + + -- Paul Gevers Wed, 28 Oct 2015 19:40:13 +0100 + +fpc (3.0.0~rc1+dfsg-2) experimental; urgency=medium + + * The first Edmund Grimley Evans release (thanks for your work) + * Fix FTBFS on i386, powerpc and ppc64 with new patch: + fix_FTBFS_on_linux_not_amd64.patch (Closes: #800811) + * Fix FTBFS on armhf by not optimizing during the first cycles of + building the new compiler (it is suggested that our 2.6.4 armhf + compiler may have had bugs and upstream didn't support it) + + -- Paul Gevers Sat, 10 Oct 2015 21:06:43 +0200 + +fpc (3.0.0~rc1+dfsg-1) experimental; urgency=medium + + * New upstream release (Release candidate 1) + * Drop obsolete changes and refresh most other ones + * Include "upstream" patch from Abou to fix IDE data file location + * Include man pages for new binaries (forgotten upstream) + * Fix documentation build process (source location is wrong) + * Update d/moveexamples to also move documentation + * Add shlibs:Depends to packages containing binaries + * Distribute new units of the packages + * Update description of the multimedia unit and add libvlc-dev to + its Recommends + * Use fpcmake from the installed packages for now as building the + new fpcmake in the clean target is broken + * Several units aren't build on ARM anymore, so exclude them from + the installation + * Hopefully improve reproducible building by adding LC_ALL=C to the + documentation build line + * Convert d/copyright to machine readable format (what a hell) + + -- Paul Gevers Sun, 13 Sep 2015 20:44:48 +0200 + +fpc (2.6.4+dfsg-8) unstable; urgency=medium + + * Fix FTBFS, I missed two dependencies of fpgtk removed in the + previous upload (Closes: #795323) + * Bump dephelper compat to 9 (now matching in d/compat and d/control) + and update d/clean to fix the clean target + + -- Paul Gevers Fri, 14 Aug 2015 13:16:44 +0200 + +fpc (2.6.4+dfsg-7) unstable; urgency=medium + + * Fix path mistake in run-upstream-testsuite + * Add more locations with time stamps to the configure target + - Add patch to create fpmkunitsrc.inc in the right folder + * Minor clean-up of d/rules by moving to be deleted files to d/clean + * Wrap-and-sort d/control(|.in) + * Move libgtk2.0-dev back to Depends, but now of the gtk2 package + * Stop building and shipping gtk1 and gnome1 packages as the + corresponding libraries are removed more than 6 years ago from + Debian + * Add Hungarian translation for debconf from upstream SVN and make + sure that translations are always up-to-date in clean target + * Missed one timestamp locale in the previous upload + + -- Paul Gevers Mon, 10 Aug 2015 13:23:15 +0200 + +fpc (2.6.4+dfsg-6) unstable; urgency=medium + + * Fix typo in debian/tests/control which caused the autopkgtest to fail + * Improve the timestamp in d/rules to not depend on the timezone which + caused the build to fail reproducibility tests. + * Migrate maintainership to the Pascal Packaging Team + * Update TODO list + * Move -dev packages from Depends to Recommends in our unit packages + * Add Suggests to fp-units-db- + + -- Paul Gevers Sun, 31 May 2015 13:25:57 +0200 + +fpc (2.6.4+dfsg-5) unstable; urgency=medium + + [ José de Figueiredo ] + * Udated the Brazilian Portuguese translation of PO debconf. + (Closes: Bug#778442) + + [ Paul Gevers ] + * Add fpc-source to depends of fp-utils, fpcmake needs it. + * True to build reproducible + - Add patch to not have the timestamp in makefiles created by fpcmake + - Add patch to not include timestamp in fpdoc generated documentation + - Replace build time by Debian changelog time in binaries + - Replace build time by Debian changelog time in man page for fpc-depends + * Refresh patches with fuzz + * Add TODO list + * Add autopkgtest for the upstream testsuite + + -- Paul Gevers Mon, 25 May 2015 20:16:52 +0200 + +fpc (2.6.4+dfsg-4) unstable; urgency=low + + * Let "Select manually" be translatable in debconf questions and update + language files accordingly. + * Bump standards version to 3.9.6 (no changes) + * New/updated translations + - Danish (Joe Hansen) (Closes: #763984) + - Dutch (Paul Gevers) + - German (Chris Leick) (Closes: #763807) + - Italian (Beatrice Torracca) (Closes: #764934) + - Japanese (victory) + - Swedish (Martin Bagge / brother) (Closes: #763446) + + -- Paul Gevers Mon, 13 Oct 2014 21:16:54 +0200 + +fpc (2.6.4+dfsg-3) unstable; urgency=low + + [ Abou Al Montacir ] + * Added libgmp-dev to recommended packages list of fp-units-math in order to + avoid users getting lik errors about missing libgmp. (Closes: Bug#749418) + [ Michal Å imůnek ] + * Updated Czech translation of PO debconf. (Closes: Bug#751387) + + -- Abou Al Montacir Thu, 12 Jun 2014 21:01:47 +0200 + +fpc (2.6.4+dfsg-2) unstable; urgency=medium + + * Revert manpage change in previous upload + * Next time, in case of repack, also remove Windows dll files + * Fix fpc-abi version provided by fp-units-rtl-## (Closes: #746794) + + -- Paul Gevers Sat, 03 May 2014 18:25:46 +0200 + +fpc (2.6.4+dfsg-1) unstable; urgency=low + + [ Abou Al Montacir ] + * New upstream point release with many fixes to the 2.6.2 fixes branch. + - List of changes that may affect the behaviour of previously working + code, and how to cope with these changes is available online on + http://wiki.freepascal.org/User_Changes_2.6.4 + - List of reported bugs which have been fixed in this release is available + online on http://bugs.freepascal.org/changelog_page.php?version_id=315 + * Packages changes: + + Lots and lots fixes and improvements for fcl-db + + web and json packages synchronized. + + improvements to the chmcmd compiler. + + Several fixes for winunits (and winceunits) + * Docs changes: + + Many additions. + + fpjson documented. + * Fixed bug making fp-utils not installable in multiple versions. + * Moved removing alternatives from postrm script to prerm as is recommended. + * Bumped standard version to 3.9.5. + + [ Paul Gevers ] + * Update bug number in previous changelog entry + * Remove nearly obsolete bzip compression for binary packages + (See https://lists.debian.org/debian-devel/2014/01/msg00542.html) + * Fixed versioning of ptop.cfg and fpc.cfg manpage + * Add lintian override for two text documents it considers Flash files + * Repack source to strip fpcsrc/rtl/netwlibc/pre/libcpre.gcc.o + + -- Paul Gevers Sat, 19 Apr 2014 18:05:27 +0200 + +fpc (2.6.2-8) unstable; urgency=low + + [ Gianfranco Costamagna ] + * Backport upstream revision 22477 to fix a FTBFS. (Closes: Bug#733618) + + [ Abou Al Montacir ] + * Change path of localization files to fit Debian standard. + (Closes: Bug#733688) + * Fix encoding of German localization files to be UTF-8. + + -- Abou Al Montacir Mon, 20 Jan 2014 20:39:35 +0100 + +fpc (2.6.2-7) unstable; urgency=low + + [ Christian Perrier ] + * Update debian/control and debconf templates file from Debian translation + team. (Closes: Bug#725851) + * Update Russian translation (Yuri Kozlov). (Closes: Bug#729391) + * Update Danish translation (Joe Hansen). (Closes: Bug#729428) + * Update German translation (Chris Leick). (Closes: Bug#729841) + * Update Polish translation (Michał Kułach). (Closes: Bug#730064) + * Update Swedish translation (Martin Bagge / brother). (Closes: Bug#730186) + * Update Slovak translation (Slavko). (Closes: Bug#730303) + * Update French translation (David Prévot). (Closes: Bug#730514) + * Update Italian translation (Beatrice Torracca). (Closes: Bug#730579) + * Update Japanese translation (victory). (Closes: Bug#730607) + * Update Portuguese translation (Américo Monteiro). (Closes: Bug#730706) + * Update Spanish translation (Matias Bellone). (Closes: Bug#731767) + + [ Paul Gevers ] + * fp-docs, prevent loads of duplicate files, replace with symlinks + - Add Build-Depends-Indep on rdfind and symlinks + * Removed some dependencies in d/rules target to ease manual building + * lintian override for extra-license-file (it is a Pascal header) + * Allow $EXAMPLE_TEMP to be non-existent in d/moveexamples + * Remove fix-doc-build-with-fpdoc-2.6.0.diff (obsolete) + * Allow builds on all arches (will automatically fail on unsatified + build-depends when never bootstrapped on that arch before) + * Initial work for kfreebsd (not finished yet) + - Don't hardcode linux in d/rules + - Add find_iconv_in_libc_on_debian.patch to force use of libc for iconv + - Add kfreebsd-amd64_bootstrap.patch for freebsd target to set linker to + /lib/ld-kfreebsd-x86-64.so.1 and errno to __errno_location + - Add dont_build_fastcgi_fcl-web_and_fppkg_on_kfreebsd.patch to do exactly + that. + + -- Paul Gevers Sun, 15 Dec 2013 21:08:59 +0100 + +fpc (2.6.2-6) unstable; urgency=low + + [ Peter Michael Green ] + * Actually apply add-ppc64-support.diff (Closes: Bug#716813) + + [ Abou Al Montacir ] + * Removed dependency on svgalib which was removed from Debian. Users may + install it manually to link against it. (Closes: Bug#714025) + + [ Paul Gevers ] + * Fix clean target to run as any user and to not require configure target to + run. + * Update README.Debian to describe debugging situation (see bug 528855) and + remove useless information. + * d/control(.in) + - Remove deprecated DM-Upload-Allowed field + - Update Standards-Version (no changes needed) + - Add myself to uploaders + - Add recommends for *-dev packages for fp-units-gfx- + (Closes: #702689, LP: 1153007) + + -- Paul Gevers Mon, 07 Oct 2013 20:24:12 +0200 + +fpc (2.6.2-5) unstable; urgency=high + + * Add -f to rm statements introduced in last upload so they don't fail if + the files are not present. + + -- Peter Michael Green Wed, 24 Jul 2013 17:28:54 +0000 + +fpc (2.6.2-4) unstable; urgency=high + + * Remove the config files used to pass options to the compiler during the + build in clean target to produce clean source packages and to ensure that + they are generated correctly for each architecture. + + -- Peter Michael Green Wed, 24 Jul 2013 11:28:06 +0000 + +fpc (2.6.2-3) unstable; urgency=high + + [Abou Al Montacir] + * Added a new directive, CFGDIR, to configuration file allowing one to add a + directory to a list where included configuration files are searched. + * Define a default location, multi-arch compatible, for third party units, + which should be installed in /usr/lib/$fpctarget-gnu/fp-units-2.6.2/$pkg/. + Each fp-units package should install a configuration file called $pkg.cfg + in configuration directory /etc/fp-units-$fpcversion.cfg.d/$fpctarget/. + * Use compiler configuration file to pass debian custom compilaer flags. + * Pass "-z relro" to linker to remove lintian error. + * Restored ppc64 compiler man page. (Closes: Bug#716813) + + [Peter Michael Green] + * Use "FPMAKE_SKIP_CONFIG" rather than "FPCFPMAKE" to pass linker option + needed for building fpmake. This method unlike the previous one shouldn't + break crossbuilding. (though I don't know if crossbuilding works in + general) + * Change way patching is done for doc build to fix build with newer + versions of patch. + * Remove conflicts with binutils-gold (Closes: Bug#717651) + * Use ld.bfd explicitly (Helps with: Bug#624525) + * Use urgency high so that above binutils related changes hopefully get into + Testing before new binutils does. + + -- Peter Michael Green Tue, 23 Jul 2013 21:48:50 +0000 + +fpc (2.6.2-2) unstable; urgency=low + + [Abou Al Montacir] + * debian/rules + - Allow generating each autogenrated file separately on demand. + - Avoid changing content of hidden directory .pc as this is used by quilt + and changing its content may cause some tricky issues. + + [Peter Michael Green] + * debian/patches/armhf-build-with-2.6.0 + - fixup some conditionals in arm assembler to avoid using instrutions that + fpc 2.6.0 doesn't support when building the rtl with 2.6.0 (first stage) + * debian/rules + - Pass 'PPCFPMAKE=$PPCNEW -Fl/usr/lib/$(DEB_BUILD_MULTIARCH)' during + packages build so that fpmake links successfully. + - Pass 'OPT=-Fl/usr/lib/$(DEB_HOST_MULTIARCH)' during utils build so + fpdoc links successfully. + + -- Peter Michael Green Thu, 30 May 2013 11:16:27 +0000 + +fpc (2.6.2-1) unstable; urgency=low + + * New upstream point release with many fixes to the 2.6.0 fixes branch. + - List of changes that may affect the behaviour of previously working + code, and how to cope with these changes is available online on + http://wiki.freepascal.org/User_Changes_2.6.2 + - List of reported bugs which have been fixed in this release is available + online on http://bugs.freepascal.org/changelog_page.php?version_id=223 + - List of new features which have been added to this release is available + online on http://wiki.freepascal.org/FPC_New_Features_2.6.2 + * Compiler changes: + - Improvements and fixes for the ARM architecture + * Packages changes: + - New package fpindexer (indexing engine) + - Support for observer pattern added to fcl-base (and base classes in RTL) + - Lots and lots fixes and improvements for fcl-db + + Support for JSON dataset added among others + - Fixes and improvements for fcl-passrc (and fpdoc) + - Updates for PTCPas and gtk2 + - fpmkunit improvements (better support for future switch to fpmake) + - Several fixes for x11 + - Several fixes for winunits (and winceunits) + * Platforms specific changes: + - Improvements to the NativeNT target (newly introduced as alpha in 2.6.0) + - Many fixes for OpenBSD and NetBSD (considered in beta state now) + - Internal ELF writer supported for more BSD targets + - Fixes and improvements for gba and nds + * Added new tool relpath to compute relative path according to a given base + directory. + * Added new tool ifpc (Instant Free Pascal Compiler) for compiling and + running pascal scripts. + + -- Abou Al Montacir Tue, 07 May 2013 19:41:59 +0100 + +fpc (2.6.0-12) unstable; urgency=low + + [ Abou Al Montacir ] + * Fix lookup keys in debconf database. (Closes: Bug#706459) + * Fixed typo in variable name in post installation script for fp-compiler + package. + * Apply sed changes directly on new configuration file and update + alternatives later. Using sed -i on symbolic link seems to change it on + plain file introducing a regression. + * Fix lintian wraning about questions in debconf prompts. + [ Peter Michael Green ] + * Upload to unstable + + -- Peter Michael Green Sun, 5 May 2013 22:02:00 +0000 + +fpc (2.6.0-11) experimental; urgency=low + + * more powerpc64 fixes (Really closes: Bug#692893) + + set PPUSF to ppc64 in debian/rules. + + add manpage patch to series file. + + -- Peter Michael Green Tue, 30 Apr 2013 09:05:24 +0000 + +fpc (2.6.0-10) experimental; urgency=low + + [ Abou Al Montacir ] + * Fixed typo in French translation. (Closes: Bug#696536) + * Removed auto-generation of debian/control during build process as required + by policy. (Closes: Bug#704252) + * Detect when user refused to migrate to update-alternatives managed and + do not handle configuration files. (Closes: Bug#704251) + * Added debconf screens to let user select a default .rc MS Windows resourse + files compiler either from mingw32-binutils package or any others custom + installed the system. (Closes: UpstreamBug#23092) + [Hiroyuki Yamamoto] + * Added support for ppc64 architecture. (Closes: Bug#692893) + [ Peter Michael Green ] + * Don't remove fpc.*dpkg* the release team don't like it and + as far as I can tell it isn't needed. + + -- Abou Al Montacir Fri, 26 Apr 2013 18:59:00 +0100 + +fpc (2.6.0-9) unstable; urgency=low + + * Revert previous broken and unnessacerally intrustive fix for debian/control + issue. Replace it with a more targetted fix inspired by abou's and paul's + proposed patches. + + -- Peter Michael Green Sat, 13 Apr 2013 07:52:42 +0000 + +fpc (2.6.0-8) unstable; urgency=low + + * Removed auto-generation of debian/control during build process as required + by policy. (Closes: Bug#704252) + + -- Abou Al Montacir Tue, 26 Mar 2013 09:54:00 +0100 + +fpc (2.6.0-7) unstable; urgency=low + + * Proofread templates by debian-l10n-english list. (Closes: Bug#686038) + * Added Danish translation. (Closes: Bug#687069) + * Added Slovak translation. (Closes: Bug#687087) + * Added Portuguese translation. (Closes: Bug#687116) + * Added Russian translation. (Closes: Bug#687192) + * Added German translation. (Closes: Bug#687444) + * Added Polish translation. (Closes: Bug#687550) + * Added Czech translation. (Closes: Bug#687713) + * Added French translation. (Closes: Bug#687724) + * Added Italian translation. (Closes: Bug#687771) + * Added Japanese translation. (Closes: Bug#688143) + * Added Swedish translation. (Closes: Bug#688424) + * Added Spanish translation. (Closes: Bug#689468) + + -- Abou Al Montacir Thu, 04 Oct 2012 09:12:00 +0000 + +fpc (2.6.0-6) unstable; urgency=low + + * Removed error thrown when trying to build help index if the documentation + is installed on a read only file system and tries to store the index file + in current directory. (Closes: Bug#528863) + * Fixed postrm script to guarantee removal of backup configuration files + during purge operation. (Closes: Bug#668742) + + -- Abou Al Montacir Mon, 30 Jul 2012 19:22:00 +0000 + +fpc (2.6.0-5) unstable; urgency=low + + * Add patch to fix inverted exception masking on arm vfp (armhf). + This patch is needed for the armhf compiler to work on hardware that + supports vfp exception trapping. + + -- Peter Michael Green Sun, 29 Jul 2012 00:52:27 +0000 + +fpc (2.6.0-4) unstable; urgency=low + + [ Peter Michael Green ] + * Add myself to uploaders in control.in as well as control so that the build + process doesn't blow my changes away + [ Abou Al Montacir ] + * Moved mention to openal from fp-units-gfx description to fp-untis-multimedia + description. (Closes: Bug#679138) + + -- Peter Michael Green Fri, 06 Jul 2012 20:25:10 +0000 + +fpc (2.6.0-3) unstable; urgency=low + * Add myself to uploaders + * Add support for armhf (Closes: Bug#666264) + - debian/rules: + + Specify arm variant explicitly when cycling the compiler so that it is + possible to bootstrap with a starting compiler from another arm variant. + + Use DEB_*_ARCH_CPU to reduce the ammount of special casing we + require when setting CPU_SOURCE and CPU_TARGET. + - debian/control: add armhf to architecture list. + - debian/patches/armhf.diff: main changes for port, based on patch + submitted upstream with adjustments to backport to 2.6.0 + - debian/patches/regenerate_messages.diff: regenerate messages file + to add new message introduced by armhf.diff + - armhf-linker-path.diff: change dynamic linker path to reflect new + cross-distro agreement. + * fixups to clean target in debian/rules: + - Don't remove .pc since we aren't removing the patches anymore + (fixes issues where quilt doesn't think the patches are applied even + though in fact they are) + - Cleanup some files which seem to get left behind by + the upstream build/cleanup process. + - Cleanup install-source-stamp + - Cleanup various generated files in debian directory + * set CFG_FILE in postrm so that the rm command in purge actually + removes the configuration file. + -- Peter Michael Green Sat, 21 Apr 2012 13:13:00 +0100 + + +fpc (2.6.0-2) unstable; urgency=low + + * Added alternatives to handle fp (IDE) binary. (Closes: Bug#655626) + * Set priority according to version in fpc and fp-utils so that newer version + is automatically selected. + * Fix default FPCDIR value in fpcmake utility reading links recursively. + (Closes: Bug#662814) + * Checked conformance to policy 3.9.3 and updated standard version. + + -- Abou Al Montacir Wed, 28 Mar 2012 11:51:00 +0100 + +fpc (2.6.0-1) unstable; urgency=low + + * Changed build dependencies on gs-common to ghostscript as the first no more + exists. (Closes: Bug#649703) + * Configuration file is now built on the fly by the post installation script. + * New upstream major release with many features and new targets + - List of changes which may affect the behaviour of previously working + code, and how to cope with these changes is available online on + http://wiki.freepascal.org/User_Changes_2.6.0 for a list + - List of reported bugs which have been fixed in this release is available + online on http://bugs.freepascal.org/changelog_page.php + - List of new features which have been added to this release is available + online on http://wiki.freepascal.org/FPC_New_Features_2.6.0 + * New Platforms: + - iPhoneSimulator target + * Compiler changes: + - Many new language features: + + Objective-Pascal dialect, supported on all Mac OS X and iOS targets + + constref parameter modifier for "const by reference" + + Pascal boolean types with multiple sizes (boolean16/32/64) + + ISO 7185 language mode (except for I/O). Features amongst others: + . Nested procedure variables + . Non-local goto's + + Mac Pascal mode improvements + . Nested procedure variables + . Univ modifier + + Intrinsics + . sar (shift arithmetic right) + . bsf/bsr (bitscan forward/reverse) + + Delphi compatibility mode improvements + . Nested types, class variables and class local constants + . Advanced records syntax (no constructors yet) + . (for..in) Enumerators in records + . Class and record helpers + . Generic records, arrays and procedural types + . Delphi-compatibility of generics improved + . Scoped enumerations + . Custom messages for "deprecated" directive + . Ability to use "&" for escaping keywords + - New ARM code generator features + + ARM VFPv2 and VFPv3 floating point unit support + + Thumb-2 support + * Packages changes: + - Many improvements to the rtl + - Many improvements to the database units (fcl-db) + - Objective-Pascal interfaces to Foundation, AppKit, CoreData and WebCore + - OpenGL headers updated to OpenGL 4.0 + - Added bindings for libzorba + + -- Abou Al Montacir Tue, 27 Dec 2011 11:30:00 +0100 + +fpc (2.4.4-3) unstable; urgency=low + + * Added libsdl-mixer1.2-dev to dependency list of fp-units-multimedia. + * Fixed link issue related to multi-arch by adding arch path to /etc/fpc.cfg. + (Closes: Bug#636802) + * Moved resource compiler fpcres alternative rule to be slave of fpc instead + of being slave of fp-utils. (Closes: Bug#624361) + + -- Abou Al Montacir Tue, 18 Oct 2011 19:12:00 +0200 + +fpc (2.4.4-2) unstable; urgency=low + + * Moved resource compiler fpcres binary to fp-compiler as this part of the + compiler itself. (Closes: Bug#624361) + * Use plain sh for moveexample script. + * Applied patches from upstream to fix armel buildd crash. + * Packages fpc.sty and fakehtml.sty to the default latex directory as these + are required to compile fpdoc latex output. (Closes: Bug#628100) + + -- Abou Al Montacir Mon, 04 Jul 2011 18:10:00 +0200 + +fpc (2.4.4-1) unstable; urgency=low + + * New upstream release with many fixes and a few new features. + - Most library fixes from early June 2010 till March 2011. + + New lib in fp-untis-misc: libsee + + New libs in fp-untis-gfx: hermes, ptc + + New lib in fp-units-fcl: fcl-js + - Some compiler fixes, most relating to 64-bit. + - List of changes which may affect the behaviour of previously working + code, and how to cope with these changes is available online on + http://wiki.freepascal.org/User_Changes_2.4.4 + - List of reported bugs which have been fixed in this release is + available online on http://bugs.freepascal.org/changelog_page.php + * Packages: + - Many improvements to the XML units + - Many improvements to the database units. + + Specially sqlite got quite some fixes. + - Many improvements to the chm units. + + Including a command line CHM compiler + - New interface units: + + opencl + + lua + - Many improvements to fppkg and fpmake for another round of testing. + * Platforms: + - Fixes for multi-threading support in OS/2 RTL. + * Alternative system priority is now set on build time, if given, or + automatically depending on upstream version. + * Removed build dependency on quilt and bumped standard version to 3.9.2. + + -- Abou Al Montacir Mon, 23 May 2011 09:50:00 +0200 + +fpc (2.4.2-3) unstable; urgency=low + + * Added depency on binutils package and declared conflict with binutils-gold + as FPC does not work new binutils chain.(Closes:Bug#620815) + * Fixed various lintian warnings and notes. + * Removed dependency of fp-units-gfx on libsvga1-dev on architectures where + it does not exist. + * Moved fd2pascal from fp-units-gfx to fp-utils. + + -- Abou Al Montacir Wed, 06 Apr 2011 23:30:00 +0200 + +fpc (2.4.2-2) unstable; urgency=low + + * Test for dh_input exit status 30 as this is a normal exit status which just + informs that the question was not displayed because of its priority. + (Closes:Bug#620803) + + -- Abou Al Montacir Tue, 05 Apr 2011 17:14:00 +0200 + +fpc (2.4.2-1) unstable; urgency=low + + * New upstream release with many fixes and a few new features. + (Closes:Bug#606655) + - Most bugfixes in the RTL and packages before june 2010 have been merged. + - List of changes which may affect the behaviour of previously working + code, and how to cope with these changes is available online on + http://wiki.freepascal.org/User_Changes_2.4.2 + - List of reported bugs which have been fixed in this release is + available online on http://bugs.freepascal.org/changelog_page.php + * New Platforms: + - Long term bug in OS/2 implementation of unit Video finally fixed which + among others allows inclusion of the text-mode IDE (without debugger) + for this platform as part of the distribution again. + * Compiler changes: + - Support D2006+ FOR..IN, with some FPC specific enhancements. Refer to + http://wiki.freepascal.org/for-in_loop for more information + - Support for sealed and abstract classes. + * Packages changes: + - Many improvements to the XML units + - Many improvements to the database units + - Many improvements to the chm units + - Moved fpc-subst tool from fp-compiler package to fp-utils one + * Set 2.4.2 as default FPC version. + + -- Abou Al Montacir Wed, 09 Mar 2011 10:02:00 +0100 + +fpc (2.4.0-4) unstable; urgency=low + + * Unset 2.4.0 as default FPC version. + + -- Abou Al Montacir Mon, 07 Mar 2011 09:21:00 +0100 + +fpc (2.4.0-3) unstable; urgency=low + + * Added dependncy for fp-units-gfx to libsvga1-dev. (Closes:Bug#608834) + * Added support for multiple version coexistence in the same system. This will + allow installing multiple versions of FPC in the same system and choose a + default using update-alternatives. + * Use version in package names and provide old names as virtual packages + * Moved fpc-subst tool from fp-compiler package to fp-utils one + + -- Abou Al Montacir Thu, 17 Feb 2011 08:41:00 +0100 + +fpc (2.4.0-2) unstable; urgency=low + + [ Abou Al Montacir ] + * Fixed build dependencies on fp-compiler (>= 2.2.4-5). (Closes:Bug#570591) + * Added dependency on ${misc:Depends} as required for packages using + debhelper. + * Removed pre-dependency on dpkg (>= 1.10.24). + * Fixed spell errors removing lintian warning. + * Fixed dependencies of fp-units-math package. (Closes:Bug#567574) + * Bumped standard version to 3.8.4. + * Updated lintian override files. + [ Stefan Kisdaroczi ] + * Fixed Pred and Succ functions. (Closes: Bug#569023) + + -- Abou Al Montacir Wed, 03 Feb 2010 22:48:00 +0100 + +fpc (2.4.0-1) unstable; urgency=low + + * New upstream release with many fixes and new features offering a nice + collection of new functionality and bug fixes. + * New platforms: + - Mac OS X/PowerPC64 + - Mac OS X/x86_64 + - Mac OS X/ARM (iPhone) + * Compiler changes: + - Support for Delphi-style resource handling + - Whole-program optimization infrastructure, which initially supports + program devirtualization and unused virtual method removal + - Much faster compilation of units containing many type-sections + - The ability to suppress individual hints/warnings/notes + - Several improvements to the DWARF debug information generation + - Fixes to the generics support + - Fixes to the interface delegation (implements) support + - Improved cpu register allocation + - Improved ARM/EABI support + * RTL changes: + - Linearly scaling multi-threaded memory manager + - Support for (advisory) file locking on Unix-based platforms + - when using the SysUtils file creation/opening routines + - Support for ANSI ISO Extended Pascal ReadStr/WriteStr + - A UnicodeString type that, while not yet equivalent to Delphi 2009's + UnicodeString type, offers reference counted UnicodeString support on + the Windows, Linux, Mac OS X, FreeBSD and Beos/Haiku platforms. + * Packages changes: + - Many improvements to the XML units + - Many improvements to the database units + - Updated the common Mac OS X Pascal interfaces to r241, including + header a translation of the CFNetwork framework + - The zipper unit now works correctly on big endian platforms + * Added a patch fixing building documentation on Debian systems. + * Included quilt.make in rules file. (Closes: Bug#538552) + * Packaged news utility program (fpclasschart) poducing a class tree from + source files. + * Removed duplicate section field. + * Fixed fp-units-i386 package short description. + * Removed unneeded override rule. + * Added doc-base file for fp-compiler package. + * Fixed lintian warnings related to spell errors. + * Fixed upgrade breakage from 2.2.4-3 caused by moving files from fp-units-gfx + to fp-units-multimedia. (Closes: Bug#565167) + + -- Abou Al Montacir Sun, 13 Dec 2009 22:25:00 +0100 + +fpc (2.2.4-5) unstable; urgency=low + + * Added a new package fp-units-math for math development support. + + -- Abou Al Montacir Fri, 04 Dec 2009 21:11:00 +0100 + +fpc (2.2.4-4) unstable; urgency=low + + * Added support of armel arch to fpcmake from upstream. + * Adde documentation index file. (fixes linitan warning) + * Bumped standard version to 3.8.3. + * Added README.source. (fixes linitian warning) + * Added support for automatic cross-platform deb packaging. + * Updated fcl-xml from upstream to allow building next upstream release doc. + * Bumped fpc-abi to take in account new fcl-xml interface changes. + * Removed build dependency on libreadline5-dev as no more required. + + -- Abou Al Montacir Mon, 30 Nov 2009 19:03:00 +0100 + +fpc (2.2.4-3) unstable; urgency=low + + [ Abou Al Montacir ] + * Fixed compilation error on power PC. + + -- Abou Al Montacir Wed, 03 Jun 2009 12:44:00 +0200 + +fpc (2.2.4-2) unstable; urgency=low + + [ Stefan Kisdaroczi ] + * Fixed FindFirst and FindGetFileInfo functions. (Closes: Bug#528681) + + [ Abou Al Montacir ] + * Added lintian override rules for embedded-zlib + * Fixed wrong passing of function parameters for powerpc architecture. + (Closes: Bug#515035, Bug#511626) + + -- Abou Al Montacir Sat, 30 May 2009 17:46:00 +0200 + +fpc (2.2.4-1) unstable; urgency=low + + [ Abou Al Montacir ] + * new upstream release + - Added support for TIFF reading/writing in fcl-image + - Improvements and fixes in CHM support + - Fixed linking the gtk2-package with gtk versions above 2.13.4 + - Added support for CHM help files + * Remove patches that are now obsolete. + * Removed dependency from GTK1 as it was removed from Squeeze. + [ Paul Gevers ] + * Fixed typo in sysconst.pp. (Closes: Bug#519013) + + -- Abou Al Montacir Sat, 02 May 2009 16:40:30 +0200 + +fpc (2.2.2-8) unstable; urgency=low + + * Removed .pc directory in clean target to avoid a lintian warning. + * Moved chmcmd and chmls tools to fp-utils and added man files for them. + * Added Debian build version to compiler full version. + + -- Abou Al Montacir Tue, 16 Dec 2008 23:23:00 +0100 + +fpc (2.2.2-7) unstable; urgency=low + + [ Abou Al Montacir ] + * Patches were not applyed by patch system, fixed. (Closes: Bug#508415) + + -- Torsten Werner Mon, 15 Dec 2008 06:12:58 +0100 + +fpc (2.2.2-6) unstable; urgency=low + + * Remove auto-generated make files in clean target to avoid lintian warning + (Closes: Bug#508013). + * Removed gtk file system bindings as these no more exist in new gtk + libraries. (Closes: Bug#507520) + + -- Abou Al Montacir Thu, 04 Dec 2008 12:21:00 +0100 + +fpc (2.2.2-5) unstable; urgency=low + + * Added missing man pages to remove lintian warnings. + * Fixed bug in clean-patched target causing configuration files to be removed + before arch independent packages are build. + * Updated description of fp-docs package. (Closes: Bug#506065) + customizations. + * Fixed dependencies in rules file speeding package generation by avoiding + rebuilding binaries up to four times. + + -- Abou Al Montacir Tue, 18 Nov 2008 16:50:00 +0100 + +fpc (2.2.2-4) unstable; urgency=low + + [ Torsten Werner ] + * Update ABI version in fpc-depends automatically. + * Remove empty directories from binary package fpc-source. + + [ Abou Al Montacir ] + * Removed leading path when calling update-alternatives to remove a Lintian + error. + * Fixed clean target. + * Improved description of packages. (Closes: #498882) + + -- Abou Al Montacir Thu, 09 Oct 2008 23:29:00 +0200 + +fpc (2.2.2-3) unstable; urgency=low + + * Add *.fpc files to the binary package fpc-source. + + -- Torsten Werner Wed, 20 Aug 2008 01:07:06 +0200 + +fpc (2.2.2-2) unstable; urgency=low + + * Add patch manpages.diff that fixes various errors in the man pages. + * Switch from dpatch to quilt. + * Yak shaving to make lintian happy: remove unneeded files from binary + package fpc-source. + * Fix Provides: field of fp-unit-rtl. + + -- Torsten Werner Sun, 17 Aug 2008 15:10:22 +0200 + +fpc (2.2.2-1) unstable; urgency=low + + [ Abou Al Montacir ] + * new upstream release + - shlobj changes + - fix for wince library support + - fix for windows 64 bit support for >2GB memory + - Documentation was updated completely to conform to the actual state of + the compiler and RTL. + - Possible CodeGear Copyright infringements in the source were reworked + using cleanroom approach. + * Remove all patches that are now obsolete. + + [ Torsten Werner ] + * Bump up Standards-Version: 3.8.0 (no changes needed). + * Do not install extra license files. + * Fix some other lintian warnings. + + -- Torsten Werner Tue, 12 Aug 2008 16:55:14 +0200 + +fpc (2.2.0-dfsg1-9) unstable; urgency=low + + [ Torsten Werner ] + * Add Abou Al Montacir to Uploaders field. + + [ Abou Al Montacir ] + * Moved FPC sources into a version dependent directory from /usr/share/fpcsrc + to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC + release. + * Fixed far call issue in compiler preventing building huge binearies. + (closes: #477743) + * Updated building dependencies, recomennded and suggested packages. + * Moved fppkg to fp-utils as it is just a helper tool and is not required by + compiler. + + -- Abou Al Montacir Sat, 17 May 2008 17:12:11 +0200 + +fpc (2.2.0-dfsg1-8) unstable; urgency=low + + [ Abou Al Montacir ] + * Fixed build of fpc-source package cased by accidental remove of + fpc-source.install file during clean-patched target execution. + * Fixed Build-Depend clause (needs binutils instead of binutils-dev and no + need for libgpmg1-dev). + * Added man pages to the same packages including corresponding binaries. + * Removed from fpc-source code which isn't required by Lazarus code tool. + + -- Abou Al Montacir Thu, 08 May 2008 17:45:19 +0200 + +fpc (2.2.0-dfsg1-7) unstable; urgency=low + + [ Abou Al Montacir ] + * Added make files to source package. This required by fpcmake tool to succeed + cross platform compilation. + * Added man pages for fpcmkcfg, fpcsubst, fpcres, mkxmlrpc and rmcvsdir + binaries. + + -- Abou Al Montacir Wed, 30 Apr 2008 16:01:50 +0200 + +fpc (2.2.0-dfsg1-6) unstable; urgency=medium + + * Remove the patch 09_powerpc again because the bug is in libgdb-dev and + will be fixed there. + * Disable Build-Depends: libexpat1-dev, libgdb-dev because fpc is + incompatible to gdb 6.8. (Closes: #473955) + * Set urgency to medium because we are fixing a FTBFS bug only. + + -- Torsten Werner Sat, 29 Mar 2008 23:31:44 +0100 + +fpc (2.2.0-dfsg1-5) unstable; urgency=low + + [ Abou Al Montacir ] + * Applied fixes from upstream to packages/fcl-xml + + [ Torsten Werner ] + * Add a new patch 09_powerpc to make the package builds on powerpc + architecture. + + -- Torsten Werner Sat, 29 Mar 2008 10:39:26 +0100 + +fpc (2.2.0-dfsg1-4) unstable; urgency=low + + * Build fp-ide with debugger support. (Closes: #328701) + * Remove unneeded Build-Depends: findutils. + * Update Standards-Version: 3.7.3. + * Change Depends: mawk | awk. + * Clean up some lintian errors and warnings. + + -- Torsten Werner Sat, 15 Mar 2008 19:18:23 +0100 + +fpc (2.2.0-dfsg1-3) unstable; urgency=low + + * Add files matching *.inc to package fpc-source. + + -- Torsten Werner Sat, 29 Dec 2007 22:29:07 +0100 + +fpc (2.2.0-dfsg1-2) unstable; urgency=low + + [ Torsten Werner ] + * Set Architecture: all for fpc package. + * Fix bug in debian/rules: it's $(FPCVERSION) not $(FPC_VERSION). + (Closes: #457951) + + [ Abou Al Montacir ] + * New patch from upstream fixes non-deterministic register allocation on + sparc + * Modified rules to apply patches before building compiler + + -- Torsten Werner Sat, 29 Dec 2007 15:49:57 +0100 + +fpc (2.2.0-dfsg1-1) unstable; urgency=low + + * Remove all files matching *.o from upstream's tarball. + * Change fpc-source package: + - Do not copy directories installer and tests because they are not needed + by lazarus. + - Install only files matching *.pas and *.pp. + * Clean up the XXXVERSION cruft in debian/rules and debian/fixdeb. + * Update FSF address in debian/copyright. + + -- Torsten Werner Thu, 20 Dec 2007 18:46:55 +0100 + +fpc (2.2.0-3) unstable; urgency=low + + * Create binary package fpc-source again after having some discussion on + debian-devel. (Closes: #413805) + * Use bzip2 when creating binary packages and add + Pre-Depends: dpkg (>= 1.10.24). + * Add the fpc-depends tool. + + -- Torsten Werner Sun, 09 Dec 2007 22:35:01 +0100 + +fpc (2.2.0-2) unstable; urgency=low + + [ Abou Al Montacir ] + * Added dbase to fcl-db packaged units for arch other than i386. + * Fixed build issue for sparc and powerpc arch. + + -- Torsten Werner Fri, 07 Dec 2007 09:22:17 +0100 + +fpc (2.2.0-1) unstable; urgency=low + + [ Carlos Laviola ] + * New upstream release. (Closes: #442206) + * Added arm as a supported arch. (Closes: #408693) + * fp-units-gfx depends on libggi-dev. (Closes: #423659) + * fp-ide bugs fixed in the new version. (Closes: #423099, #423601, #423602) + * general cleanup on debian/{rules,control,...} + + [ Torsten Werner ] + * Complete debian/copyright. + * Add debian/watch and get-orig-source target in debian/rules. + * Remove *.dll, *.exe, and *.log from upstream tarball. + + -- Torsten Werner Fri, 23 Nov 2007 20:30:45 +0100 + +fpc (2.0.4-5) unstable; urgency=low + + * Fixed Build-Depends. + * Add myself to Uploaders in debian/control. + * Make sure that the sources are really patched before building them. + * Build unit 'libc' on powerpc too. + + -- Torsten Werner Sat, 27 Jan 2007 20:08:50 +0100 + +fpc (2.0.4-4) unstable; urgency=low + + * debian/rules: Separate out the documentation build into build-doc to + stop the documentations from building on binary-arch builds resulting + in FTBFS. + * Add Index value in debian/fp-docs.doc-base (Closes: #407715) + + -- Varun Hiremath Sun, 21 Jan 2007 20:49:43 +0530 + +fpc (2.0.4-3) unstable; urgency=medium + + * Added dpatch as a build dependency. (Closes: #407594) + + -- Carlos Laviola Sun, 21 Jan 2007 17:08:58 -0200 + +fpc (2.0.4-2) unstable; urgency=low + + * New release fixes Bug: "fp-compiler: miscompiles multilevel + if-statement" (Closes: #403586) + * Provide html docs (Closes: #150150) + + debian/rules: Set DOCTYPE=html and use CONVERTER=hevea + + debian/control: Add hevea to Build-Depends + + -- Varun Hiremath Tue, 16 Jan 2007 21:53:01 +0530 + +fpc (2.0.4-1) unstable; urgency=low + + [ Abou Al Montacir ] + * New release (Closes: #383055) + + [ Torsten Werner ] + * Fix bugs in debian/fp-compiler.pre*.in. + * Updated debian/control to use variables provides by newer versions of + dpkg. + * Add XS-X-Vcs-Svn header to debian/control. + * Add german po files from Holger Wansing. (Closes: #348408, #346247) + * Remove unneeded debian/fp-compiler.conffiles. + * Fixed debian/changelog (lintian error). + * Changed Build-Depends: gawk | awk. + + [ Varun Hiremath ] + * Bump Standards version to 3.7.2 + * Add Homepage in debian/control file. + * Add fp-units-gtk2 missing dependencies (Closes: #337990) + + -- Torsten Werner Sun, 14 Jan 2007 11:40:59 +0100 + +fpc (2.0.4-rc3) unstable; urgency=low + + * New release candidate + + -- Abou Al Montacir Sun, 06 Aug 2006 19:00:00 +0200 + +fpc (2.0.4-rc2) unstable; urgency=low + + * New release candidate + + -- Abou Al Montacir Tue, 18 Jul 2006 21:23:26 +0200 + +fpc (2.0.4-rc1) unstable; urgency=low + + * New release + + -- Peter Vreman Fri, 07 Jul 2006 12:00:00 +0100 + +fpc (2.0.0-4) unstable; urgency=low + + * debian/control.in: add amd64 to the Architecture field. + + -- Carlos Laviola Fri, 9 Sep 2005 18:38:26 -0300 + +fpc (2.0.0-3) unstable; urgency=medium + + * Created a prerm and preinst for fp-compiler, as /usr/bin/fpc needs to + be removed from the list of 'pc' alternatives. (Closes: #311436) + * Added amd64 to the architecture list. (Closes: #315220) + + -- Carlos Laviola Fri, 2 Sep 2005 10:27:21 -0300 + +fpc (2.0.0-2) unstable; urgency=low + + * debian/fp-compiler.postinst.in: forgot to reapply the patch that + correctly creates the slave link to pc(1). (Closes: #310907) + + -- Carlos Laviola Mon, 30 May 2005 11:59:10 -0300 + +fpc (2.0.0-1) unstable; urgency=low + + * As I couldn't upload 1.9.8 on all supported architectures before 2.0.0 + was released, I'm rehashing its changelog now. + * New upstream release. + Bugs fixed on CVS before 1.9.8: + * man/man1/fpc.1: -OPn changed to -Opn in rev 1.8 (Closes: #255960) + * debian/fp-compiler.postinst.in: fixed in rev 1.5 (Closes: #269853) + Bugs fixed on CVS before 1.9.6: + * rtl/unix/crt.pp: fixed in rev 1.20 (Closes: #216060) + * rtl/i386/strings.inc: fixed in rev 1.16 (Closes: #288955) + * compiler/nadd.pas: fixed in rev 1.126 (Closes: #297881) + * debian/control: Added missing build dependencies on libgpmg1-dev and + libncurses5-dev and set save_size at build time, which finally makes + the package build without manual intervention. (Closes: #304633) + + -- Carlos Laviola Fri, 20 May 2005 19:07:00 -0300 + +fpc (1.9.6-2) unstable; urgency=low + + * debian/control: Oops -- fp-units-fv had the wrong description. + + -- Carlos Laviola Fri, 14 Jan 2005 13:15:50 -0200 + +fpc (1.9.6-1) unstable; urgency=low + + * New upstream release. + * debian/control: Added build dependency on libgpmg1-dev. + + -- Carlos Laviola Fri, 31 Dec 2004 21:16:25 -0200 + +fpc (1.9.4-5) unstable; urgency=low + + * fp-compiler: needs ld, adding dependency on binutils. (Closes: #265265) + + -- Carlos Laviola Thu, 12 Aug 2004 16:29:37 -0300 + +fpc (1.9.4-4) unstable; urgency=low + + * debian/control.in: Oops, forgot to update the Build-Deps for this file, + which generates debian/control per se. (Closes: #263942) + + -- Carlos Laviola Sun, 8 Aug 2004 22:12:41 -0300 + +fpc (1.9.4-3) unstable; urgency=low + + * Package needs fpcmake to build pretty much everything, so we need to + build-dep on fp-utils. Thanks to Daniel Schepler for finding the bug + and for Jurij Smakov's aid. (Closes: #263942) + * debian/README.Debian: removes mentions to old problems with tetex, fixes + spelling mistakes and other minor issues. + + -- Carlos Laviola Fri, 6 Aug 2004 19:46:51 -0300 + +fpc (1.9.4-2) unstable; urgency=low + + * The following fixes are the work of Marco van de Voort from CVS HEAD: + - man/man1/ppc386.1: typo fix. (Closes: #255960) + - rtl/unix/crt.pp: gotoxy/XY2Ansi fixes from. + (Closes: #216057, #216060) + - docs/linuxex, docs/dosex, docs/refex: various examples ported to + fpc 1.9.x's new API. + + -- Carlos Laviola Tue, 20 Jul 2004 15:12:05 -0300 + +fpc (1.9.4-1) unstable; urgency=low + + * This release is partly the work of Peter Vreman . + * Acknowledging NMU. (Closes: #221316) + * Made the description for the units packages more informative. + (Closes: #209518, #209581, #209613) + * Applied some patches from Marco van de Voort to CVS HEAD that fixed + compiling the documentation on powerpc with some adaptations of mine. + + -- Carlos Laviola Sat, 17 Jul 2004 21:53:03 -0300 + +fpc (1.0.10-1.2) unstable; urgency=low + + * NMU + * debian/control: Also had to remove build dependency on latex2html here + (Closes: #221316) + + -- Roland Stigge Thu, 12 Feb 2004 10:27:20 +0100 + +fpc (1.0.10-1.1) unstable; urgency=low + + * NMU + * debian/control.in: Removed Build-Depends: latex2html which moved to + non-free (Closes: #221316) + + -- Roland Stigge Sat, 20 Dec 2003 20:45:41 +0100 + +fpc (1.0.10-1) unstable; urgency=low + + * New upstream release. + * Acknowledging Amaya's NMU. Thanks for the hand. (Closes: #141439) + * Package dependency lists corrected. (Closes: #84863, #155158) + * Example compiles correctly now. (Closes: #174371) + * Fixed vanishing fpc(1) manpage if gpc is installed. (Closes: #136283) + * Fixed manpage error. (Closes: #191695) + * Spelling mistakes are gone. (Closes: #124637, #124638) + * Both bugs (doc-base-file-references-usr-doc and debian-changelog-file- + contains-obsolete-user-emacs-settings, in lintian tags) were corrected + long ago. (Closes: #127092) + * Upstream have added the AddDisk function. (Closes: #103163) + + -- Carlos Laviola Sat, 2 Aug 2003 04:35:51 -0300 + +fpc (1.0.6-2) unstable; urgency=low + + * NMU for Debcamp BSP. + * Apply a very silly patch (Closes: #141439), which was RC. The PDF file now + builds. + * Updated versioned-build-depends-on-debhelper. + + -- Amaya Rodrigo Sastre Sat, 12 Jul 2003 17:58:50 +0200 + +fpc (1.0.6-1) unstable; urgency=low + + * New upstream version. (Closes: #154199) + + -- Carlos Laviola Sat, 10 Aug 2002 04:26:15 -0300 + +fpc (1.0.4+1.0.6cvs20020228-1) unstable; urgency=low + + * New upstream version. + + -- Peter Vreman Fri, 01 Mar 2002 11:01:50 +0100 + +fpc (1.0.4-2) unstable; urgency=low + + * New maintainer. + * debian/README.Debian: Added a note on building 'pdflatex.fmt', which is + needed by pdflatex, in order to build the documentation in PDF format. + * debian/control: added latex2html, dvipdfm and tetex-extra to the + build-deps list. + + -- Carlos Laviola Wed, 29 Aug 2001 23:15:17 -0300 + +fpc (1.0.4-1) unstable; urgency=low + + * New upstream version. + + -- Ulf Jaenicke-Roessler Tue, 2 Jan 2001 11:01:50 +0100 + +fpc (1.0.3-0.20001206.1) unstable; urgency=low + + * Snapshot release from CVS 2000/12/06. + * Fixes internal compiler error on (buggy) appearance of + array of Date (Closes:#60720). + * ppc386 can be called more intuitively as fpc (Closes:#74810). + * Help option '-h' is (somewhat) more propagated than '-?' + (Closes:#74811). Furthermore, help is displayed when fpc + is called without any parameter. + * Package supports alternatives now, in order to be used as + "Pascal compiler" (pc) from Makefile(s) (Closes:#76615). + + -- Ulf Jaenicke-Roessler Wed, 6 Dec 2000 11:29:28 +0100 + +fpc (1.0.2-1) unstable; urgency=low + + * New upstream version. + * Maintainer field changed. + * Bug#60720 had already been fixed in the development tree some + time ago after the last upload (hence, this Closes: #60720). + + -- Ulf Jaenicke-Roessler Fri, 13 Oct 2000 13:11:34 +0200 + +fpc (1.0.1-0.20000811.1) unstable; urgency=low + + * Built for `official' upload. CVS as of 2000/08/11 - NMU. + * Update to latest version, thus Closes: #56873. + * Removes /usr/bin/ppc386 link upon package removal. Closes: #64403. + * This upload also Closes: #68801. + * Added Build-Depends. Hmmm, 'fp-compiler' is somehow like `the chicken + and the egg' story... + + -- Ulf Jaenicke-Roessler Fri, 11 Aug 2000 22:49:37 +0200 + +fpc (1.0.1-0) unstable; urgency=low + + * New Upstream Release + + -- Peter Vreman Fri, 09 Jun 2000 12:00:00 +0200 + +fpc (0.99.13-19991013-4) unstable; urgency=low + + * Fixed bashism in samplecfg (Closes: Bug#50636) + * Changed source-arch to 'i386' (Closes: Bug#50438) + + -- Mika Fischer Sat, 20 Nov 1999 22:18:11 +0100 + +fpc (0.99.13-19991013-3) unstable; urgency=low + + * Fixed bug which overwrote existing config files during an update + (Closes: Bug#50278) + + -- Mika Fischer Tue, 16 Nov 1999 23:57:36 +0100 + +fpc (0.99.13-19991013-2) unstable; urgency=low + + * Fixed bug in debian/rules (Fixes: #50096) + + -- Mika Fischer Sat, 13 Nov 1999 20:31:20 +0100 + +fpc (0.99.13-19991013-1) unstable; urgency=low + + * Removed fp-fv due to licensing issues. + + -- Mika Fischer Wed, 13 Oct 1999 19:33:30 +0200 + +fpc (0.99.13-19991005-1) unstable; urgency=low + + * New maintainer + + -- Mika Fischer Wed, 13 Oct 1999 19:33:13 +0200 + +fpc (0.99.13-19991001-1) unstable; urgency=low + + * New maintainer + * Updated to policy 3.0.1 + + -- Joseph Carter Tue, 27 Jul 1999 18:05:05 -0700 + +fpc (0.99.12b-1) unstable; urgency=low + + * New Upstream Release + + -- Peter Vreman Thu, 10 Jun 1999 12:00:00 +0200 + +fpc (0.99.12a-1) unstable; urgency=low + + * Initial Release + + -- Peter Vreman Thu, 10 Jun 1999 12:00:00 +0200 diff --git a/clean b/clean new file mode 100644 index 00000000..96a557b9 --- /dev/null +++ b/clean @@ -0,0 +1,37 @@ +debian/*.config +debian/*.doc-base +debian/*.docs +debian/*.examples +debian/*.files +debian/*.*.install +debian/fp-*.links +debian/*.*.lintian-overrides +debian/*.*.manpages +debian/*.postinst +debian/*.postrm +debian/*.preinst +debian/*.prerm +debian/*.templates +debian/README*.Debian +debian/dirs +debian/docs +debian/fpc-depends +debian/fpc-depends-*.1 +debian/fp-fix-timestamps.1 +install/man/man1/ppc68k.1 +install/man/man1/ppca64.1 +install/man/man1/ppcmips.1 +install/man/man1/ppcmipsel.1 +install/man/man1/ppcppc64.1 +fpcdocs/fpdoc.haux +fpcdocs/prog.haux +fpcdocs/ref.haux +fpcdocs/ref.hind +fpcdocs/tree.xml +fpcdocs/user.haux +fpcsrc/compiler/msgtxt.inc +fpcsrc/compiler/utils/msg2inc +fpcsrc/compiler/version.inc +fpcsrc/packages/gdbint/src/gdbver.inc +fpcsrc/utils/fpcm/fpcmake.inc +fpcsrc/utils/fpdoc/intl/*.mo diff --git a/compat b/compat new file mode 100644 index 00000000..b4de3947 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +11 diff --git a/control b/control new file mode 100644 index 00000000..f792582c --- /dev/null +++ b/control @@ -0,0 +1,951 @@ +Source: fpc +Section: devel +Priority: optional +Maintainer: Pascal Packaging Team +Uploaders: + Abou Al Montacir , + Paul Gevers , + Peter Michael Green , +Standards-Version: 4.6.0 +Build-Depends: + debhelper (>= 11~), + dh-exec (>=0.22), + fp-compiler, + fp-units-base, + fp-units-fcl, + fp-utils, + ghostscript, + libncurses-dev, + mawk | awk, + po-debconf, + txt2man, +Build-Depends-Indep: + hevea, + rdfind, + symlinks +Vcs-Git: https://salsa.debian.org/pascal-team/fpc +Vcs-Browser: https://salsa.debian.org/pascal-team/fpc +Homepage: https://www.freepascal.org/ + +Package: fpc-3.2.2 +Architecture: all +Depends: + fp-compiler-3.2.2 (>= ${binary:Version}), + fp-ide-3.2.2 (>= ${binary:Version}), + fp-units-base-3.2.2 (>= ${binary:Version}), + fp-units-db-3.2.2 (>= ${binary:Version}), + fp-units-fcl-3.2.2 (>= ${binary:Version}), + fp-units-fv-3.2.2 (>= ${binary:Version}), + fp-units-gfx-3.2.2 (>= ${binary:Version}), + fp-units-gtk2-3.2.2 (>= ${binary:Version}), + fp-units-math-3.2.2 (>= ${binary:Version}), + fp-units-misc-3.2.2 (>= ${binary:Version}), + fp-units-multimedia-3.2.2 (>= ${binary:Version}), + fp-units-net-3.2.2 (>= ${binary:Version}), + fp-units-rtl-3.2.2 (>= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils-3.2.2 +Suggests: + fp-docs-3.2.2 (>= ${source:Upstream-Version}), + lazarus +Provides: + fpc +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - SDK-3.2.2 suite + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This metapackage pulls in all the FPC packages provided for this + architecture. Experienced users may instead prefer to install the particular + packages they require by hand. + +Package: fpc-source-3.2.2 +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fpc-source +Breaks: + fpc-src +Replaces: + fpc-src +Description: Free Pascal - SDK source code + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal's own source code. It is meant to be used by + the Lazarus IDE. + +Package: fp-compiler-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + binutils, + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils-3.2.2 (>= ${binary:Version}) +Suggests: + fp-docs-3.2.2 (>= ${source:Upstream-Version}), +Provides: + fp-compiler +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - compiler + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This package contains the command line compiler. + +Package: fp-ide-3.2.2 +Architecture: any +Multi-Arch: foreign +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils-3.2.2 (>= ${binary:Version}) +Suggests: + fp-docs-3.2.2 (>= ${source:Upstream-Version}) +Provides: + fp-ide +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - IDE + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This package contains the Integrated Development Environment (IDE). The IDE + has an internal compiler. + +Package: fp-utils-3.2.2 +Architecture: any +Multi-Arch: foreign +Depends: + fpc-source-3.2.2, + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-compiler-3.2.2 (= ${binary:Version}) +Provides: + fp-utils +Breaks: + fp-compiler-3.2.2 (<= 3.0.4+dfsg-11), + fpc (<= 3.2.2+dfsg-0), +Replaces: + fp-compiler-3.2.2 (<= 3.0.4+dfsg-11), + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - utilities + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains some handy utilities for use with the Free Pascal + Compiler: + * data2inc convert binary/text data to include files; + * fpcmake create Makefile from Makefile.fpc; + * h2pas convert .h files to Pascal units; + * plex/pyacc Pascal Lex and Yacc implementations; + * ppdep create a dependency file for use with Makefiles; + * ppudump dump the information stored in a .ppu (unit) file; + * ppufiles show needed files for units; + * ppumove place multiple units in a shared library; + * ptop beautify source. + +Package: fp-docs-3.2.2 +Section: doc +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${shlibs:Depends}, +Provides: + fp-docs +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - documentation + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package provides documentation for the Free Pascal Compiler in HTML + format. + +Package: fp-units-rtl-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-compiler-3.2.2 (= ${binary:Version}) +Provides: + fp-units-rtl, + fpc-abi-3.2.2 +Breaks: + fpc (<= 3.2.2+dfsg-0), + fp-compiler-3.2.2 (<= 3.2.2+dfsg-10) +Replaces: + fpc (<= 3.2.2+dfsg-0), + fp-compiler-3.2.2 (<= 3.2.2+dfsg-10) +Description: Free Pascal - runtime libraries + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the RunTime Libraries for the Free Pascal Compiler. + +Package: fp-units-base-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: + uuid-dev +Provides: + fp-units-base +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - base units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units for common libraries (some of which + are also required by the Free Component Library): NCurses, X11 (Xlib, + Xutil), and ZLib. + +Package: fp-units-fcl-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-base-3.2.2 (= ${binary:Version}), + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-fcl +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - Free Component Library + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the Free Component Library for the Free Pascal Compiler. + +Package: fp-units-fv-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-fv +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - Free Vision units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the Free Vision units for the Free Pascal Compiler + (which provide a framework for developing text user interfaces). + +Package: fp-units-gtk2-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-fcl-3.2.2 (= ${binary:Version}), + fp-units-rtl-3.2.2 (= ${binary:Version}), + libgtk2.0-dev, + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-gtk2 +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - GTK+ 2.x units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units and examples to create + programs with GTK+ 2.x. + +Package: fp-units-db-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: + firebird-dev, + freetds-dev, + libgdbm-dev, + default-libmysqlclient-dev, + libpq-dev, + libsqlite3-dev, + pxlib-dev, + unixodbc-dev +Provides: + fp-units-db +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - database-library units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units with bindings for GDBM, Interbase, + MySQL, PostgreSQL, ODBC, Oracle, and SQLite. + +Package: fp-units-gfx-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-base-3.2.2 (= ${binary:Version}), + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-gfx +Recommends: + libcairo2-dev, + libforms-dev, + libgd-dev, + libgl1-mesa-dev, + libgraphviz-dev, + libpng-dev, + libxxf86dga-dev, + libxxf86vm-dev +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - graphics-library units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units with bindings for cairo, forms, ggi, + graph, libgd, libpng, opengl, and svgalib. + . + SVGALib is no longer packaged by Debian and should be installed manually by + users who want to link against it. + +Package: fp-units-net-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-net +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - networking units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units for creating network tools: D-Bus, + httpd-1.3, httpd-2.0, httpd-2.2, ldap, libasync, libcurl, netdb, openssl, + and pcap. + +Package: fp-units-math-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + libgmp-dev +Provides: + fp-units-math +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - math units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal math interfacing units for: + * gmp (the GNU Multiple Precision arithmetic library); + * numlib (numerical computing); + * proj4 (cartographic projections); + * symbolic (symbolic computing). + +#note: when backporting to stretch or earlier disable ncurses6.patch +#and then change the libncursesw5-dev breaks to >= 6.1+20180210 +Package: fp-units-misc-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-misc +Breaks: + fpc (<= 3.2.2+dfsg-0), + libncursesw5-dev (<< 6.1+20180210) +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - miscellaneous units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains miscellaneous Free Pascal units: fppkg (the FPC + packaging system), PasZLib (a Pascal-only zlib implementation), and Utmp. + +Package: fp-units-multimedia-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + a52dec-dev, + libdts-dev, + libmad0-dev, + libmodplug-dev, + libogg-dev, + libsdl-mixer1.2-dev, + libvorbis-dev, + libvlc-dev +Provides: + fp-units-multimedia +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - multimedia units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal multimedia units: a52, dts, mad, modplug, + oggvorbis, openal, and vlc. + +Package: fp-units-i386-3.2.2 +Architecture: i386 +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-i386 +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - Kylix compatibility units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the deprecated Free Pascal libc unit for the i386 + architecture (used for compatibility with Borland's Kylix). + +Package: fp-units-wasm-3.2.2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-wasm +Breaks: + fpc (<= 3.2.2+dfsg-0), +Replaces: + fpc (<= 3.2.2+dfsg-0), +Description: Free Pascal - Web assmebly support units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal web assembly support units: pas2js, + utils-pas2js, webidl ... + +Package: fpc +Architecture: all +Depends: + fpc-3.2.2 (= ${binary:Version}), + fp-docs-3.2.2, + fp-utils-3.2.2, + ${misc:Depends} +Description: Free Pascal - SDK suite dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the metapackage pulling in all the FPC packages provided for this + architecture. Experienced users may instead prefer to install the particular + packages they require by hand. + +Package: fpc-source +Architecture: all +Multi-Arch: foreign +Depends: + fpc-source-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - SDK source code dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal's own source code. It is meant to be used by + the Lazarus IDE. + +Package: fp-compiler +Architecture: any +Multi-Arch: same +Depends: + fp-compiler-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - compiler dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the package containing the command line compiler. + +Package: fp-ide +Architecture: all +Multi-Arch: foreign +Depends: + fp-ide-3.2.2 (>= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - IDE dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the package containing the Integrated Development Environment (IDE). The IDE + has an internal compiler. + +Package: fp-utils +Architecture: all +Multi-Arch: foreign +Depends: + fp-utils-3.2.2 (>= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - utilities dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing some handy utilities for use with the Free Pascal + Compiler: + * data2inc convert binary/text data to include files; + * fpcmake create Makefile from Makefile.fpc; + * h2pas convert .h files to Pascal units; + * plex/pyacc Pascal Lex and Yacc implementations; + * ppdep create a dependency file for use with Makefiles; + * ppudump dump the information stored in a .ppu (unit) file; + * ppufiles show needed files for units; + * ppumove place multiple units in a shared library; + * ptop beautify source. + +Package: fp-docs +Section: doc +Architecture: all +Multi-Arch: foreign +Depends: + fp-docs-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - documentation dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing documentation for the Free Pascal Compiler in HTML + format. + +Package: fp-units-rtl +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - runtime libraries dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the RunTime Libraries for the Free Pascal Compiler. + +Package: fp-units-base +Architecture: any +Multi-Arch: same +Depends: + fp-units-base-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - base units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units for common libraries (some of which + are also required by the Free Component Library): NCurses, X11 (Xlib, + Xutil), and ZLib. + +Package: fp-units-fcl +Architecture: any +Multi-Arch: same +Depends: + fp-units-fcl-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Free Component Library dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Component Library for the Free Pascal Compiler. + +Package: fp-units-fv +Architecture: any +Multi-Arch: same +Depends: + fp-units-fv-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Free Vision units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Vision units for the Free Pascal Compiler + (which provide a framework for developing text user interfaces). + +Package: fp-units-gtk2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-gtk2-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - GTK+ 2.x units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units and examples to create + programs with GTK+ 2.x. + +Package: fp-units-db +Architecture: any +Multi-Arch: same +Depends: + fp-units-db-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - database-library units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units with bindings for GDBM, Interbase, + MySQL, PostgreSQL, ODBC, Oracle, and SQLite. + +Package: fp-units-gfx +Architecture: any +Multi-Arch: same +Depends: + fp-units-gfx-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - graphics-library units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units with bindings for cairo, forms, ggi, + graph, libgd, libpng, opengl, and svgalib. + . + SVGALib is no longer packaged by Debian and should be installed manually by + users who want to link against it. + +Package: fp-units-net +Architecture: any +Multi-Arch: same +Depends: + fp-units-net-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - networking units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units for creating network tools: D-Bus, + httpd-1.3, httpd-2.0, httpd-2.2, ldap, libasync, libcurl, netdb, openssl, + and pcap. + +Package: fp-units-math +Architecture: any +Multi-Arch: same +Depends: + fp-units-math-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - math units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal math interfacing units for: + * gmp (the GNU Multiple Precision arithmetic library); + * numlib (numerical computing); + * proj4 (cartographic projections); + * symbolic (symbolic computing). + +Package: fp-units-misc +Architecture: any +Multi-Arch: same +Depends: + fp-units-misc-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - miscellaneous units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing miscellaneous Free Pascal units: fppkg (the FPC + packaging system), PasZLib (a Pascal-only zlib implementation), and Utmp. + +Package: fp-units-multimedia +Architecture: any +Multi-Arch: same +Depends: + fp-units-multimedia-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - multimedia units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal multimedia units: a52, dts, mad, modplug, + oggvorbis, openal, and vlc. + +Package: fp-units-i386 +Architecture: i386 +Depends: + fp-units-i386-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Kylix compatibility units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the deprecated Free Pascal libc unit for the i386 + architecture (used for compatibility with Borland's Kylix). + +Package: fp-units-wasm +Architecture: any +Multi-Arch: same +Depends: + fp-units-wasm-3.2.2 (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Web assmebly support units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Pascal web assembly support units: pas2js, + utils-pas2js, webidl ... diff --git a/control.in b/control.in new file mode 100644 index 00000000..bacb767f --- /dev/null +++ b/control.in @@ -0,0 +1,951 @@ +Source: fpc +Section: devel +Priority: optional +Maintainer: Pascal Packaging Team +Uploaders: + Abou Al Montacir , + Paul Gevers , + Peter Michael Green , +Standards-Version: 4.6.0 +Build-Depends: + debhelper (>= 10~), + dh-exec (>=0.22), + fp-compiler, + fp-units-base, + fp-units-fcl, + fp-utils, + ghostscript, + libncurses-dev, + mawk | awk, + po-debconf, + txt2man, +Build-Depends-Indep: + hevea, + rdfind, + symlinks +Vcs-Git: https://salsa.debian.org/pascal-team/fpc +Vcs-Browser: https://salsa.debian.org/pascal-team/fpc +Homepage: https://www.freepascal.org/ + +Package: fpc${PACKAGESUFFIX} +Architecture: all +Depends: + fp-compiler${PACKAGESUFFIX} (>= ${binary:Version}), + fp-ide${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-base${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-db${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-fcl${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-fv${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-gfx${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-gtk2${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-math${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-misc${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-multimedia${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-net${PACKAGESUFFIX} (>= ${binary:Version}), + fp-units-rtl${PACKAGESUFFIX} (>= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils${PACKAGESUFFIX} +Suggests: + fp-docs${PACKAGESUFFIX} (>= ${source:Upstream-Version}), + lazarus +Provides: + fpc +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - SDK${PACKAGESUFFIX} suite + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This metapackage pulls in all the FPC packages provided for this + architecture. Experienced users may instead prefer to install the particular + packages they require by hand. + +Package: fpc-source${PACKAGESUFFIX} +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fpc-source +Breaks: + fpc-src +Replaces: + fpc-src +Description: Free Pascal - SDK source code + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal's own source code. It is meant to be used by + the Lazarus IDE. + +Package: fp-compiler${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + binutils, + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils${PACKAGESUFFIX} (>= ${binary:Version}) +Suggests: + fp-docs${PACKAGESUFFIX} (>= ${source:Upstream-Version}), +Provides: + fp-compiler +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - compiler + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This package contains the command line compiler. + +Package: fp-ide${PACKAGESUFFIX} +Architecture: any +Multi-Arch: foreign +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-utils${PACKAGESUFFIX} (>= ${binary:Version}) +Suggests: + fp-docs${PACKAGESUFFIX} (>= ${source:Upstream-Version}) +Provides: + fp-ide +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - IDE + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This package contains the Integrated Development Environment (IDE). The IDE + has an internal compiler. + +Package: fp-utils${PACKAGESUFFIX} +Architecture: any +Multi-Arch: foreign +Depends: + fpc-source${PACKAGESUFFIX}, + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-compiler${PACKAGESUFFIX} (= ${binary:Version}) +Provides: + fp-utils +Breaks: + fp-compiler${PACKAGESUFFIX} (<= 3.0.4+dfsg-11), + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fp-compiler${PACKAGESUFFIX} (<= 3.0.4+dfsg-11), + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - utilities + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains some handy utilities for use with the Free Pascal + Compiler: + * data2inc convert binary/text data to include files; + * fpcmake create Makefile from Makefile.fpc; + * h2pas convert .h files to Pascal units; + * plex/pyacc Pascal Lex and Yacc implementations; + * ppdep create a dependency file for use with Makefiles; + * ppudump dump the information stored in a .ppu (unit) file; + * ppufiles show needed files for units; + * ppumove place multiple units in a shared library; + * ptop beautify source. + +Package: fp-docs${PACKAGESUFFIX} +Section: doc +Architecture: all +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${shlibs:Depends}, +Provides: + fp-docs +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - documentation + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package provides documentation for the Free Pascal Compiler in HTML + format. + +Package: fp-units-rtl${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + fp-compiler${PACKAGESUFFIX} (= ${binary:Version}) +Provides: + fp-units-rtl, + fpc-abi${PACKAGESUFFIX} +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), + fp-compiler${PACKAGESUFFIX} (<= 3.2.2+dfsg-10) +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), + fp-compiler${PACKAGESUFFIX} (<= 3.2.2+dfsg-10) +Description: Free Pascal - runtime libraries + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the RunTime Libraries for the Free Pascal Compiler. + +Package: fp-units-base${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: + uuid-dev +Provides: + fp-units-base +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - base units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units for common libraries (some of which + are also required by the Free Component Library): NCurses, X11 (Xlib, + Xutil), and ZLib. + +Package: fp-units-fcl${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-base${PACKAGESUFFIX} (= ${binary:Version}), + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-fcl +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - Free Component Library + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the Free Component Library for the Free Pascal Compiler. + +Package: fp-units-fv${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-fv +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - Free Vision units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the Free Vision units for the Free Pascal Compiler + (which provide a framework for developing text user interfaces). + +Package: fp-units-gtk2${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-fcl${PACKAGESUFFIX} (= ${binary:Version}), + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + libgtk2.0-dev, + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-gtk2 +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - GTK+ 2.x units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units and examples to create + programs with GTK+ 2.x. + +Package: fp-units-db${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Suggests: + firebird-dev, + freetds-dev, + libgdbm-dev, + default-libmysqlclient-dev, + libpq-dev, + libsqlite3-dev, + pxlib-dev, + unixodbc-dev +Provides: + fp-units-db +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - database-library units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units with bindings for GDBM, Interbase, + MySQL, PostgreSQL, ODBC, Oracle, and SQLite. + +Package: fp-units-gfx${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-base${PACKAGESUFFIX} (= ${binary:Version}), + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-gfx +Recommends: + libcairo2-dev, + libforms-dev, + libgd-dev, + libgl1-mesa-dev, + libgraphviz-dev, + libpng-dev, + libxxf86dga-dev, + libxxf86vm-dev +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - graphics-library units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units with bindings for cairo, forms, ggi, + graph, libgd, libpng, opengl, and svgalib. + . + SVGALib is no longer packaged by Debian and should be installed manually by + users who want to link against it. + +Package: fp-units-net${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-net +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - networking units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal units for creating network tools: D-Bus, + httpd-1.3, httpd-2.0, httpd-2.2, ldap, libasync, libcurl, netdb, openssl, + and pcap. + +Package: fp-units-math${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + libgmp-dev +Provides: + fp-units-math +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - math units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal math interfacing units for: + * gmp (the GNU Multiple Precision arithmetic library); + * numlib (numerical computing); + * proj4 (cartographic projections); + * symbolic (symbolic computing). + +#note: when backporting to stretch or earlier disable ncurses6.patch +#and then change the libncursesw5-dev breaks to >= 6.1+20180210 +Package: fp-units-misc${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-misc +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), + libncursesw5-dev (<< 6.1+20180210) +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - miscellaneous units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains miscellaneous Free Pascal units: fppkg (the FPC + packaging system), PasZLib (a Pascal-only zlib implementation), and Utmp. + +Package: fp-units-multimedia${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Recommends: + a52dec-dev, + libdts-dev, + libmad0-dev, + libmodplug-dev, + libogg-dev, + libsdl-mixer1.2-dev, + libvorbis-dev, + libvlc-dev +Provides: + fp-units-multimedia +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - multimedia units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal multimedia units: a52, dts, mad, modplug, + oggvorbis, openal, and vlc. + +Package: fp-units-i386${PACKAGESUFFIX} +Architecture: i386 +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-i386 +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - Kylix compatibility units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains the deprecated Free Pascal libc unit for the i386 + architecture (used for compatibility with Borland's Kylix). + +Package: fp-units-wasm${PACKAGESUFFIX} +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Provides: + fp-units-wasm +Breaks: + fpc (<= ${UPSTREAM_VERSION}-0), +Replaces: + fpc (<= ${UPSTREAM_VERSION}-0), +Description: Free Pascal - Web assmebly support units + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This package contains Free Pascal web assembly support units: pas2js, + utils-pas2js, webidl ... + +Package: fpc +Architecture: all +Depends: + fpc${PACKAGESUFFIX} (= ${binary:Version}), + fp-docs${PACKAGESUFFIX}, + fp-utils${PACKAGESUFFIX}, + ${misc:Depends} +Description: Free Pascal - SDK suite dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the metapackage pulling in all the FPC packages provided for this + architecture. Experienced users may instead prefer to install the particular + packages they require by hand. + +Package: fpc-source +Architecture: all +Multi-Arch: foreign +Depends: + fpc-source${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - SDK source code dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal's own source code. It is meant to be used by + the Lazarus IDE. + +Package: fp-compiler +Architecture: any +Multi-Arch: same +Depends: + fp-compiler${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - compiler dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the package containing the command line compiler. + +Package: fp-ide +Architecture: all +Multi-Arch: foreign +Depends: + fp-ide${PACKAGESUFFIX} (>= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - IDE dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + Extensions have been added to the language, such as function overloading, + creation and linking of shared libraries, and Delphi language extensions + including classes, exceptions, ANSI strings, and open arrays. + . + This dependency package always depends on the latest available version of + the package containing the Integrated Development Environment (IDE). The IDE + has an internal compiler. + +Package: fp-utils +Architecture: all +Multi-Arch: foreign +Depends: + fp-utils${PACKAGESUFFIX} (>= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - utilities dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing some handy utilities for use with the Free Pascal + Compiler: + * data2inc convert binary/text data to include files; + * fpcmake create Makefile from Makefile.fpc; + * h2pas convert .h files to Pascal units; + * plex/pyacc Pascal Lex and Yacc implementations; + * ppdep create a dependency file for use with Makefiles; + * ppudump dump the information stored in a .ppu (unit) file; + * ppufiles show needed files for units; + * ppumove place multiple units in a shared library; + * ptop beautify source. + +Package: fp-docs +Section: doc +Architecture: all +Multi-Arch: foreign +Depends: + fp-docs${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - documentation dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing documentation for the Free Pascal Compiler in HTML + format. + +Package: fp-units-rtl +Architecture: any +Multi-Arch: same +Depends: + fp-units-rtl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - runtime libraries dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the RunTime Libraries for the Free Pascal Compiler. + +Package: fp-units-base +Architecture: any +Multi-Arch: same +Depends: + fp-units-base${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - base units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units for common libraries (some of which + are also required by the Free Component Library): NCurses, X11 (Xlib, + Xutil), and ZLib. + +Package: fp-units-fcl +Architecture: any +Multi-Arch: same +Depends: + fp-units-fcl${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Free Component Library dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Component Library for the Free Pascal Compiler. + +Package: fp-units-fv +Architecture: any +Multi-Arch: same +Depends: + fp-units-fv${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Free Vision units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Vision units for the Free Pascal Compiler + (which provide a framework for developing text user interfaces). + +Package: fp-units-gtk2 +Architecture: any +Multi-Arch: same +Depends: + fp-units-gtk2${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - GTK+ 2.x units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units and examples to create + programs with GTK+ 2.x. + +Package: fp-units-db +Architecture: any +Multi-Arch: same +Depends: + fp-units-db${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - database-library units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units with bindings for GDBM, Interbase, + MySQL, PostgreSQL, ODBC, Oracle, and SQLite. + +Package: fp-units-gfx +Architecture: any +Multi-Arch: same +Depends: + fp-units-gfx${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - graphics-library units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units with bindings for cairo, forms, ggi, + graph, libgd, libpng, opengl, and svgalib. + . + SVGALib is no longer packaged by Debian and should be installed manually by + users who want to link against it. + +Package: fp-units-net +Architecture: any +Multi-Arch: same +Depends: + fp-units-net${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - networking units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal units for creating network tools: D-Bus, + httpd-1.3, httpd-2.0, httpd-2.2, ldap, libasync, libcurl, netdb, openssl, + and pcap. + +Package: fp-units-math +Architecture: any +Multi-Arch: same +Depends: + fp-units-math${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - math units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal math interfacing units for: + * gmp (the GNU Multiple Precision arithmetic library); + * numlib (numerical computing); + * proj4 (cartographic projections); + * symbolic (symbolic computing). + +Package: fp-units-misc +Architecture: any +Multi-Arch: same +Depends: + fp-units-misc${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - miscellaneous units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing miscellaneous Free Pascal units: fppkg (the FPC + packaging system), PasZLib (a Pascal-only zlib implementation), and Utmp. + +Package: fp-units-multimedia +Architecture: any +Multi-Arch: same +Depends: + fp-units-multimedia${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - multimedia units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing Free Pascal multimedia units: a52, dts, mad, modplug, + oggvorbis, openal, and vlc. + +Package: fp-units-i386 +Architecture: i386 +Depends: + fp-units-i386${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Kylix compatibility units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the deprecated Free Pascal libc unit for the i386 + architecture (used for compatibility with Borland's Kylix). + +Package: fp-units-wasm +Architecture: any +Multi-Arch: same +Depends: + fp-units-wasm${PACKAGESUFFIX} (= ${binary:Version}), + ${misc:Depends} +Description: Free Pascal - Web assmebly support units dependency package + 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, along with a platform-independent class-based + Free Component Library (FCL) adding many Delphi extensions and interfacing + with many popular open source libraries. + . + This dependency package always depends on the latest available version of + the package containing the Free Pascal web assembly support units: pas2js, + utils-pas2js, webidl ... diff --git a/copyright b/copyright new file mode 100644 index 00000000..e5856fbe --- /dev/null +++ b/copyright @@ -0,0 +1,1996 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: Free Pascal Compiler +Source: + https://freepascal.org/ + . + The upstream source has been repacked to remove non-distributable files: + fpcsrc/rtl/netwlibc/pre/libcpre.gcc.o and + fpcsrc/packages/fcl-js/src/jsminifier.pp. Because repacking needed to be done + anyways, also other precompiled files and generated Makefiles were removed, in + order to save considerable amounts of disk space. The Makefiles can be + recreated by running the make-files target in debian/rules, i.e.: $ + debian/rules make-files +Comment: + The original description of upstream's view on the licenses can be found in + install/doc/readme.txt in the section called license. The text from there is + given below. Mind that some items that are discussed are stripped from + the Debian source tar ball. + . + . + The compiler and most utilities and executables distributed in this package + fall under the GPL, for more information read the file COPYING.v2. + . + Some specific utilities and programs come under the license described in + COPYING.v3, COPYING.DJ, COPYING.EMX, COPYING.RSX and licensez.ip. + . + FPC for JVM comes with some third party tools which are convered by + the following licenses: + - jasmin.jar comes under the license described in jasminli.txt + - bcel-6.0-SNAPSHOT.jar comes under the Apache 2.0 license, described by + apache2.txt + . + Some of the licenses of the third party tools require to make the source + available. If you cannot find the sources or information where to find + them for a certain tool under such a license included into the FPC + distribution, please contact us through the contact details given + at http://www.freepascal.org/moreinfo.var and we will provide you + the sources or information where to find them. + . + The documentation, unless otherwise noted, is distributed as free + text, and is distributed under the GNU Library General Public + License as found in file COPYING. + . + The runtime library, package libraries, free component library, and + other libraries which are used to create executables by the compiler + come under a modified GNU Library General Public license. Additional + information about the library license is found in COPYING.FPC. + . + License conditions for DPMI provider for GO32v2 version (CWSDPMI.EXE) + can be found in cwsdpmi.txt, sources and/or binary updates may be + downloaded from http://clio.rice.edu/cwsdpmi/. + . + The DOS version (go32v2) contains some binaries of DJGPP. You can obtain + the full DJGPP package at: http://www.delorie.com/djgpp/ + . + NOTE: OS/2 version of the installer uses the library UNZIP32.DLL from + Info-ZIP. Info-ZIP's software (Zip, UnZip and related utilities) + is free and can be obtained as source code or executables from + Internet/WWW sites, including http://www.info-zip.org. + +Files: * +Copyright: + 1990-2000 Albert Graef + 1993-1998 Stefan Zeiger + 1996 Berend de Boer + 1996 Simon Tatham + 1998-2002 Berczi Gabor + 1998-2002 Daniel Mantione + 1998-2002 Eberhard Mattes + 1998-2002 Michael van Canneyt + 1998-2002 Pavel + 1998-2007 Pierre Muller + 1998-2008 Carl Eric Codere + 1998-2014 Mazen NEIFER + 1998-2012 David Zhang + 1998-2012 Peter Vreman + 1998-2012 the Free Pascal team + 1998-2017 Florian Klaempfl + 1998-2014 Jonas Maebe + 1998-2014 the Free Pascal development team + 1999-2000 Aaron Holtzman + 1999-2002 Thomas Schatzl + 2000 International Business Machines Corp. + 2000-2002 Marco van de Voort + 2000-2002 Michel Lespinasse + 2000-2003 Underbit Technologies, Inc + 2001-2002 Pavel + 2002-2003 CodeFactory AB + 2002-2006 Red Hat Inc + 2002-2007 Daniel Mantione + 2003 Wiktor Sywula + 2003 Yuri Prokushev + 2004 Gildas Bazin + 2005-2012 Jeppe Johansen + 2006 Graeme Geldenhuys + 2006 Ivo Steinmann + 2007 contributors of the Free Pascal Compiler + 2008 Giulio Bernardi + 2008 the Free Pascal Compiler team + 2008-2008 Olivier Coursière + 2009 Sven Barth + 2009-2010 Dmitry Boyarintsev + 2011 Armin Diehl + 2011 Francesco Lombardi + 2011 Mattias Gaertner + 2012 Sergei Gorelkin + 2013 Yury Sidorov + 2014 Nikolay Nikolov +License: GPL-2+ + +Files: debian/* +Copyright: + 1999-2006 Peter Vreman + 1999 Mika Fischer + 2000-2001 Ulf Jaenicke-Roessler + 2001-2007 Carlos Laviola + 2003 Amaya Rodrigo Sastre + 2003-2004 Roland Stigge + 2006-2022 Abou Al Montacir + 2007 Varun Hiremath + 2007-2008 Torsten Werner + 2009-2017 Paul Gevers + 2012-2013 Peter Michael Green +License: GPL-2+ + +Files: + demo/freebsd/demo_kqueue.pas + demo/freebsd/demo_sendfile.pas + demo/freebsd/sysmousetest.pas + demo/graph/fpctris.pp + demo/graph/gameunit.pp + demo/graph/mandel.pp + demo/graph/samegame.pp + demo/lister/flist.pas + demo/lister/lister.pas + demo/modex/voxel.pp + demo/morphos/ahitest.pas + demo/morphos/asltest.pas + demo/morphos/getvolumes.pas + demo/morphos/muidemo.pas + demo/morphos/muidemo2.pas + demo/morphos/openlib.pas + demo/morphos/process.pas + demo/morphos/window.pas + demo/netware/check.pp + demo/os2/basicpm.pas + demo/os2/getctry.pas + demo/text/blackbox.pp + demo/text/eratos.pp + demo/text/hello.pp + demo/text/lines.pp + demo/text/magic.pp + demo/text/qsort.pp + demo/unix/cgibmp.pp + demo/wince/testemu/w32rapi.pp + demo/wince/testemu/wcetemu.pp + demo/wince/testemu/wcetrun.pp + fpcdocs/Makefile.fpc + fpcdocs/htmwrite8859.pp + fpcdocs/makehtm.pp + fpcsrc/compiler/aarch64/cpuinfo.pas + fpcsrc/compiler/arm/cpuinfo.pas + fpcsrc/compiler/avr/cpuinfo.pas + fpcsrc/compiler/ccharset.pas + fpcsrc/compiler/compinnr.pas + fpcsrc/compiler/generic/cpuinfo.pas + fpcsrc/compiler/jvm/cpuinfo.pas + fpcsrc/compiler/m68k/cpuinfo.pas + fpcsrc/compiler/mips/cpuinfo.pas + fpcsrc/compiler/powerpc/cpuinfo.pas + fpcsrc/compiler/powerpc64/cpuinfo.pas + fpcsrc/compiler/utils/dummyas.pp + fpcsrc/compiler/utils/fixlog.pp + fpcsrc/compiler/utils/fixnasm.pp + fpcsrc/compiler/utils/mk68kreg.pp + fpcsrc/compiler/utils/mka64ins.pp + fpcsrc/compiler/utils/mka64reg.pp + fpcsrc/compiler/utils/mkarmins.pp + fpcsrc/compiler/utils/mkarmreg.pp + fpcsrc/compiler/utils/mkavrreg.pp + fpcsrc/compiler/utils/mkia64reg.pp + fpcsrc/compiler/utils/mkjvmreg.pp + fpcsrc/compiler/utils/mkmpsreg.pp + fpcsrc/compiler/utils/mkppcreg.pp + fpcsrc/compiler/utils/mkspreg.pp + fpcsrc/compiler/utils/mkx86ins.pp + fpcsrc/compiler/utils/mkx86reg.pp + fpcsrc/compiler/utils/msg2inc.pp + fpcsrc/compiler/utils/msgdif.pp + fpcsrc/installer/install.pas + fpcsrc/installer/insthelp.pas + fpcsrc/installer/scroll.pas + fpcsrc/installer/writeidx.pas + fpcsrc/packages/* + fpcsrc/rtl/* + fpcsrc/tests/test/packages/bzip2/tbzip2streamtest.pp + fpcsrc/tests/test/packages/hash/tmdtest.pp + fpcsrc/tests/test/units/dos/tfexpand.pp + fpcsrc/tests/test/units/dos/tfsearch.pp + fpcsrc/tests/test/units/sysutils/tfexpand2.pp + fpcsrc/tests/tstunits/popuperr.pp + fpcsrc/tests/tstunits/win32err.pp + fpcsrc/tests/utils/bench.pp + fpcsrc/tests/utils/dbconfig.pp + fpcsrc/tests/utils/dbdigest.pp + fpcsrc/tests/utils/digest.pp + fpcsrc/tests/utils/dotest.pp + fpcsrc/tests/utils/fpts2junit.pp + fpcsrc/tests/utils/libtar.pas + fpcsrc/tests/utils/prepup.pp + fpcsrc/tests/utils/redir.pp + fpcsrc/tests/utils/testfail.pp + fpcsrc/tests/utils/teststr.pp + fpcsrc/tests/utils/tresults.pp + fpcsrc/tests/webtbs/tw19610.pp + fpcsrc/utils/bin2obj.pp + fpcsrc/utils/creumap.pp + fpcsrc/utils/data2inc.pp + fpcsrc/utils/debugsvr/console/debugserver.pp + fpcsrc/utils/debugsvr/dbugintf.pp + fpcsrc/utils/debugsvr/debugserverintf.pp + fpcsrc/utils/debugsvr/gtk/bitmapdata.pp + fpcsrc/utils/debugsvr/gtk/debugserver.pp + fpcsrc/utils/debugsvr/gtk/frmabout.pp + fpcsrc/utils/debugsvr/gtk/frmmain.pp + fpcsrc/utils/debugsvr/msgintf.pp + fpcsrc/utils/debugsvr/speeddebug.pp + fpcsrc/utils/debugsvr/testdebug.pp + fpcsrc/utils/fpcm/fpcmake.pp + fpcsrc/utils/fpcm/fpcmdic.pp + fpcsrc/utils/fpcm/fpcmmain.pp + fpcsrc/utils/fpcm/fpcmpkg.pp + fpcsrc/utils/fpcm/fpcmwr.pp + fpcsrc/utils/fpcmkcfg/fpcmkcfg.pp + fpcsrc/utils/fpdoc/sh_pas.pp + fpcsrc/utils/fpmc/fpmc.pp + fpcsrc/utils/fpmc/frmabout.pp + fpcsrc/utils/fpmc/msgcomp.pp + fpcsrc/utils/fpmc/readmsg.pp + fpcsrc/utils/fppkg/examples/rep2xml.lpr + fpcsrc/utils/fppkg/examples/testrep.pp + fpcsrc/utils/grab_vcsa.pp + fpcsrc/utils/mkinsadd.pp + fpcsrc/utils/pas2js/dist/rtl.js + fpcsrc/utils/pas2js/pas2js.pp + fpcsrc/utils/pas2ut/pas2ut.pp + fpcsrc/utils/ppdep.pp + fpcsrc/utils/ptop.pp + fpcsrc/utils/ptopu.pp + fpcsrc/utils/rstconv.pp + fpcsrc/utils/usubst.pp + install/cross/aswrapper.pas +Copyright: + 1986-1987 William S. Hawes + 1987 Digital Equipment Corporation, Maynard, Massachusetts + 1987-1998 The Open Group + 1988 Jef Poskanzer + 1989-1991 Free Software Foundation, Inc + 1990 Regents of the University of Michigan + 1991 J. John Sprenger + 1991-1989 Carnegie Mellon University + 1991-1998 Thomas G. Lane + 1991-2000 Silicon Graphics, Inc + 1991-2005 Oracle Corporation + 1992 Andreas Neumann (NEUDELSoft) + 1992 Borland International + 1992 T.Schmid + 1992-1993 NeXT Computer, Inc + 1993-1997 Stefan Stuntz + 1993-2017 Free Pascal team + 1993-2014 Florian Klaempfl + 1994 BetaSoft + 1994-1997 Martin Blom + 1994-2005 Symbian Software Ltd + 1995 Andreas Tetzl + 1995 Jon Tombs + 1995 XFree86 Inc + 1995-1998 3Com Corporation or its subsidiaries ("3Com") + 1995-1998 Jean-loup Gailly + 1995-1998 Mark Adler + 1996-1998 Alexander Kneer + 1996-1998 Jacques Nomssi Nzali + 1996-1998 Tobias Abt + 1996-1998 phase5 digital products + 1996-2000 Berczi Gabor + 1996-2000 Leon de Boer + 1996-2000 Richard Koerber + 1996-2005 Peter Vreman + 1996-2009 Marco van de Voort + 1996-2017 Michael Van Canneyt + 1997 Balazs Scheidler + 1997-1998 Gertjan Schouten + 1997-2000 Daniel Mantione + 1997-2000 TEK neoscientists + 1997-2000 University of Cambridge + 1997-2008 the Daniel Mantione + 1997-2014 the Free Pascal development team + 1998 Christian Nentwich + 1998 Gilles Vollant + 1998 Jacques Nomssi Nzali + 1998-2002 Dirk Stöcker + 1998-2003 Nils Sjöholm + 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA + 1998-2009 Pierre Muller + 1999 Sebastian Guenther + 1999-2000 Daniel Mantione + 1999-2000 Eberhard Mattes + 1999-2004 Karoly Balogh (aka Charlie/INQ) + 1999-2000 Pavel Ozerski + 1999-2000 Ramon Bosque + 1999-2000 Thomas Schatzl + 1999-2000 Tomas Hajny + 1999-2002 Carl-Eric Codere + 1999-2004 Andrey V. Sorokin, St.Petersburg, Russia + 1999-2007 Several contributors + 1999-2008 Pavel Ozerski + 1999-2009 David Zhang + 1999-2009 ImageMagick Studio LLC, a non-profit organization + 1999-2012 Jonas Maebe + 1999-2014 Joost van der Sluis + 1999-2014 Maciej Izak + 2000 Casey Duncan + 2000 Compaq Computer Corporation + 2000 Jacques Nomssi Nzali + 2000 Satanic Dreams Software + 2000-2001 madded2 + 2000-2004 Free Pascal core team + 2000-2006 Stefan Heymann + 2001 Keith Packard + 2001 Tramontana Co + 2001-2006 Stefan Heymann + 2001-2011 Armin Diehl + 2001-2017 Nikolay Nikolov (nickysn@users.sourceforge.net) + 2002 Daniel Mantione + 2002 Grzegorz Kraszewski + 2002 Hewlett Packard, Inc + 2002-2003 The MorphOS Development Team + 2002-2004 Yuri Prokushev + 2002-2012 Sergei Gorelkin + 2002-2015 Tomas Hajny + 2003-2004 Olle Raab + 2004 Jazarsoft + 2004-2005 Karoly Balogh for Genesi S.a.r.l. + 2004-2015 Karoly Balogh + 2005 Daniel Mantione + 2005 Soren Ager + 2005-2006 Ales Katona + 2005-2006 Thomas Schatzl + 2005-2007 Hexis BV + 2005-2008 NVIDIA Corporation + 2005-2010 Giulio Bernardi + 2006-2011 Francesco Lombardi + 2006-2011 Ivo Steinmann + 2007 contributors of the Free Pascal Compiler + 2008 Andreas Jakobsche + 2009 Jan Mercl + 2009-2010 Dmitry Boyarintsev + 2009-2012 Paul Ishenin + 2009-2012 Sven Barth + 2010-2016 Graeme Geldenhuys + 2010 Jasper Lievisse Adriaanse + 2010 Olivier Coursière + 2011 Marcus Sackrow + 2012 Reinier Olislagers + 2012-2015 Inoussa OUEDRAOGO + 2013 Denis Volodarsky + 2015 Gilson Nunes + 2015 Joao Morais + 2015 Silvio Clecio + 2015 Ondrej Pokorny + 2015 Yury Sidorov + 2017 Mattias Gaertner +License: LGPL-2.1+ with staticLink exception + +Files: fpcsrc/packages/libmicrohttpd/examples* +Copyright: + 2007-2015 Christian Grothoff +License: LGPL-2.1+ + +Files: + fpcsrc/packages/httpd13/src/* + fpcsrc/packages/httpd20/src/* + fpcsrc/packages/httpd22/src/* + fpcsrc/packages/httpd24/src/* + fpcsrc/packages/zorba/src/* +Copyright: + Apache Software Foundation (ASF) + 2006-2008 The FLWOR Foundation + 2009 Ivo Steinmann +License: Apache-2 + +Files: + fpcsrc/packages/openssl/src/openssl.pas + fpcsrc/tests/test/cg/obj/stdint.h +Copyright: + 1999-2005 Lukas Gebauer + 2005 Paul Hsieh +License: BSD-3-clause + +Files: fpcsrc/rtl/solaris/x86_64/start.inc +Copyright: + 2007 Sun Microsystems, Inc + 2009 Pierre Muller +License: CDDL-1 and LGPL-2.1+ with staticLink exception + +Files: + fpcsrc/packages/libndsfpc/src/dswifi/inc/dswifi7.inc + fpcsrc/packages/libndsfpc/src/dswifi/inc/dswifi9.inc + fpcsrc/packages/libndsfpc/src/dswifi/inc/netdb.inc + fpcsrc/packages/libndsfpc/src/dswifi/inc/netinet/in.inc + fpcsrc/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc + fpcsrc/packages/libndsfpc/src/dswifi/inc/sys/socket.inc + fpcsrc/packages/ncurses/src/eti.inc + fpcsrc/packages/proj4/src/proj.pas + fpcsrc/packages/x11/src/xfixes.pp + fpcsrc/packages/x11/src/xfixeswire.inc + fpcsrc/packages/x11/src/xge.pp + fpcsrc/packages/x11/src/xi2.pp + fpcsrc/packages/x11/src/xinput2.pp + fpcsrc/packages/xforms/src/cursorfont.inc +Copyright: + 1987 X Consortium + 1998 Free Software Foundation, Inc. + 2001-2008 Frank Warmerdam + 2005-2006 Stephen Stair + 2006 Francesco Lombardi + 2006 Oracle and/or its affiliates + 2007-2008 Peter Hutterer + 2009 Ivo Steinmann + 2009-2011 Red Hat, Inc. +License: expat + +Files: fpcsrc/packages/x11/src/xinput.pp +Copyright: + 1989 Hewlett-Packard Company, Palo Alto, California. + 1989-1998 The Open Group +License: expat and mit-HP + +License: mit-HP + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Hewlett-Packard not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + . + HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + +Files: + fpcsrc/packages/opengles/src/gles20.pas +Copyright: + 2007-2009 The Khronos Group Inc. +License: expat and expat-like + +Files: + fpcsrc/rtl/go32v2/emu387.pp + fpcsrc/rtl/go32v2/exit16.asm + fpcsrc/rtl/go32v2/fpu.as + fpcsrc/rtl/go32v2/sbrk16.asm + fpcsrc/rtl/go32v2/v2prt0.as + fpcsrc/utils/dxegen/coff.pp + fpcsrc/utils/dxegen/dxegen.pp +Copyright: + 1994-1995 DJ Delorie + 1995 Charles Sandmann + 2001 Marco van de Voort +License: GPL-djd + +Files: fpcsrc/utils/mksymbian/*.pas +Copyright: 2006-2007 Felipe Monteiro de Carvalho +License: GPL-2-fmc + +Files: + fpcsrc/utils/javapp/src/fpc/tools/javapp/AttrData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/ClassData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/Constants.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/CPX2.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/CPX.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/FieldData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/InnerClassData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/JavapEnvironment.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/JavapPrinter.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/LineNumData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/LocVarData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/Main.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/MethodData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/RuntimeConstants.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/StackMapData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/StackMapTableData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/Tables.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/TrapData.java + fpcsrc/utils/javapp/src/fpc/tools/javapp/TypeSignature.java +Copyright: + 2002-2006 Oracle and/or its affiliates + 2011 Jonas Maebe +License: GPL-2-oracle + +Files: + fpcsrc/packages/libgbafpc/src/maxmod/inc/maxmod.inc + fpcsrc/packages/libgbafpc/src/maxmod/inc/mm_types.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/mm_mas.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/maxmod.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/mm_types.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/mm_msl.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/maxmod9.inc + fpcsrc/packages/libndsfpc/src/maxmod/inc/maxmod7.inc +Copyright: 2008 Mukunda Johnson +License: ISC + +Files: + fpcdocs/fcl.tex + fpcdocs/fpc-hevea.tex + fpcdocs/fpc-html.tex + fpcdocs/fpdoc.tex + fpcdocs/ide.tex + fpcdocs/internal.tex + fpcdocs/msmouse.tex + fpcdocs/onechap.tex + fpcdocs/prog.tex + fpcdocs/ref.tex + fpcdocs/rtl.tex + fpcdocs/units.tex + fpcdocs/user.tex + fpcsrc/packages/chm/src/* + fpcsrc/packages/fcl-db/src/sqldb/sqlite/sqlite3backup.pas + fpcsrc/packages/fcl-db/src/sqlite/customsqliteds.pas + fpcsrc/packages/fcl-db/src/sqlite/sqlite3ds.pas + fpcsrc/packages/fcl-db/src/sqlite/sqliteds.pas + fpcsrc/packages/fcl-fpcunit/src/consoletestrunner.pas + fpcsrc/packages/fcl-image/src/fpreadjpeg.pas + fpcsrc/packages/fcl-image/src/fpreadpcx.pas + fpcsrc/packages/fcl-image/src/fpwritejpeg.pas + fpcsrc/packages/fcl-image/src/fpwritepcx.pas + fpcsrc/packages/fuse/src/fuse.pas + fpcsrc/packages/graph/src/inc/graph.tex + fpcsrc/packages/gtk2/src/atk/atk.inc + fpcsrc/packages/gtk2/src/atk/atk.pas + fpcsrc/packages/gtk2/src/glib/glib2.pas + fpcsrc/packages/gtk2/src/glib/gparamspecs.inc + fpcsrc/packages/gtk2/src/glib/gtypemodule.inc + fpcsrc/packages/gtk2/src/gtkext/gtkstatusiconh.inc + fpcsrc/packages/gtk2/src/gtk+/gdk/gdk2.pas + fpcsrc/packages/gtk2/src/gtk+/gdk/gdki18n.inc + fpcsrc/packages/gtk2/src/gtk+/gdk/gdkprivate.inc + fpcsrc/packages/gtk2/src/gtk+/gdk-pixbuf/gdk2pixbuf.pas + fpcsrc/packages/gtk2/src/gtk+/gtk/gtk2.pas + fpcsrc/packages/gtk2/src/gtk+/gtk/gtkhsv.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtkimmodule.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtkkeyhash.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtktextdisplay.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtktextutil.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtkthemes.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtktreedatalist.inc + fpcsrc/packages/gtk2/src/gtk+/gtk/gtkwindow-decorate.inc + fpcsrc/packages/gtk2/src/gtkhtml/gtkhtml.pas + fpcsrc/packages/gtk2/src/libglade/libglade2.pas + fpcsrc/packages/gtk2/src/pangocairo/pangocairo.pas + fpcsrc/packages/gtk2/src/pango/pango.pas + fpcsrc/packages/gtk2/src/pango/pangoutils.pas + fpcsrc/packages/libgbafpc/src/gba/fade.inc + fpcsrc/packages/libgbafpc/src/gba/gba_affine.inc + fpcsrc/packages/libgbafpc/src/gba/gba_base.inc + fpcsrc/packages/libgbafpc/src/gba/gba_compression.inc + fpcsrc/packages/libgbafpc/src/gba/gba_console.inc + fpcsrc/packages/libgbafpc/src/gba/gba_dma.inc + fpcsrc/packages/libgbafpc/src/gba/gba_input.inc + fpcsrc/packages/libgbafpc/src/gba/gba_interrupt.inc + fpcsrc/packages/libgbafpc/src/gba/gba_multiboot.inc + fpcsrc/packages/libgbafpc/src/gba/gba_sio.inc + fpcsrc/packages/libgbafpc/src/gba/gba_sound.inc + fpcsrc/packages/libgbafpc/src/gba/gba_sprites.inc + fpcsrc/packages/libgbafpc/src/gba/gba_systemcalls.inc + fpcsrc/packages/libgbafpc/src/gba/gba_timers.inc + fpcsrc/packages/libgbafpc/src/gba/gba_types.inc + fpcsrc/packages/libgbafpc/src/gba/gba_video.inc + fpcsrc/packages/libgbafpc/src/gba/mappy.inc + fpcsrc/packages/libgbafpc/src/gba/mbv2.inc + fpcsrc/packages/libgbafpc/src/gba/pcx.inc + fpcsrc/packages/librsvg/src/rsvg.pas + fpcsrc/packages/openal/src/alh.inc + fpcsrc/packages/os2units/src/clkdll.pas + fpcsrc/packages/os2units/src/ftpapi.pas + fpcsrc/packages/os2units/src/hwvideo.pas + fpcsrc/packages/os2units/src/mciapi.pas + fpcsrc/packages/os2units/src/mcidrv.pas + fpcsrc/packages/os2units/src/mci.pas + fpcsrc/packages/os2units/src/mmbase.pas + fpcsrc/packages/os2units/src/mmio.pas + fpcsrc/packages/os2units/src/som.pas + fpcsrc/packages/os2units/src/sw.pas + fpcsrc/packages/winunits-base/src/typelib.pas + fpcsrc/rtl/inc/flt_conv.inc + fpcsrc/rtl/inc/flt_core.inc + fpcsrc/rtl/sparc/setjumph.inc + fpcsrc/rtl/wince/wininc/base.inc + fpcsrc/rtl/wince/wininc/defines.inc + fpcsrc/rtl/wince/wininc/errors.inc + fpcsrc/rtl/wince/wininc/messages.inc + fpcsrc/rtl/wince/wininc/struct.inc + fpcsrc/rtl/win/wininc/ascdef.inc + fpcsrc/rtl/win/wininc/ascfun.inc + fpcsrc/rtl/win/wininc/base.inc + fpcsrc/rtl/win/wininc/defines.inc + fpcsrc/rtl/win/wininc/errors.inc + fpcsrc/rtl/win/wininc/func.inc + fpcsrc/rtl/win/wininc/messages.inc + fpcsrc/rtl/win/wininc/struct.inc + fpcsrc/rtl/win/wininc/unidef.inc + fpcsrc/rtl/win/wininc/unifun.inc + install/binw32/windres.h +Copyright: + 1990-1996 International Business Machines Corporation + 1991-1999 Free Software Foundation, Inc + 1992-1994 The Regents of the University of California + 1994-2001 Sun Microsystems, Inc + 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + 1997 Antony T Curtis + 1997 Michael Van Canneyt + 1997-2002 the Free Pascal development team + 1997-2001 Tim Janik + 1997-2004 Red Hat, Inc + 1998-2002 James Henstridge + 1998-2014 Florian Klaempfl + 1999 Red Hat Software + 1999-2000 authors + 2000 Anders Carlsson + 2000 CodeFactory AB + 2000 Eazel, Inc + 2000 Jonas Borgström + 2000 Jonathan Blandford + 2000-2002 Jonas Maebe + 2001-2007 Miklos Szeredi + 2002 Andry Svirgunov + 2002 Matthew T. Russotto + 2002 Mark Eckstein + 2002 Valery Gaynullin + 2002 Red Hat Inc + 2002-2005 Yuri Prokushev + 2003-2005 Mattias Gaertner + 2003 Sun Microsystems, Inc + 2003-2006 Dave Murphy + 2004-2007 Luiz Américo Pereira Câmara + 2005 Olaf Leidinger + 2005-2010 Andrew Haines + 2006 Francesco Lombardi + 2006 Vincent Snijders + 2007 Laurent Jacques + 2008 Danny Milosavljevic + 2009 Ivo Steinmann + 2009 Michael A. Green + 2012 Ludo Brands + 2013 Max Nazhalov +License: LGPL-2+ + +Files: fpcsrc/packages/chm/src/paslzxcomp.pas +Copyright: + 2002 Matthew T. Russotto + 2005 Andrew Haines +License: LGPL-2.1 + +Files: + fpcsrc/packages/gtk2/src/gtkglext/g*kglext.pas + fpcsrc/packages/libgbafpc/src/gba/gba_helper.inc + fpcsrc/packages/libgbafpc/src/gba/helper.inc + fpcsrc/packages/matroska/src/matroska.pas +Copyright: + 1998 Glenn Fielder (gaffer@gaffer.org) + 1998 Intel Corporation + 1999 Jonathan Matthew (jmatthew@uq.net.au) + 2002-2003 Steve Lhomme + 2002-2004 Naofumi Yasufuku + 2005 Michalis Kamburelis + 2006 Francesco Lombardi + 2006 Ivo Steinmann +License: LGPL-2.1+ + +Files: fpcsrc/packages/hash/src/md5.pp +Copyright: 1991-1992 RSA Data Security, Inc. +License: RSA + +Files: + fpcsrc/packages/sdl/src/jedi-sdl.inc + fpcsrc/packages/sdl/src/logger.pas + fpcsrc/packages/sdl/src/sdl.pas + fpcsrc/packages/sdl/src/sdl_image.pas + fpcsrc/packages/sdl/src/sdl_mixer.pas + fpcsrc/packages/sdl/src/sdl_net.pas + fpcsrc/packages/sdl/src/sdl_ttf.pas + fpcsrc/packages/sdl/src/sdlutils.pas + fpcsrc/packages/sdl/src/smpeg.pas +Copyright: + 1997-2004 Sam Lantinga + 2000-2004 Dominqiue Louis + 2000-2007 Prof. Abimbola Olowofoyeku + 2000-2001 Tom Jones +License: MPL-1.1 + +Files: fpcsrc/packages/winunits-jedi/src/* +Copyright: + 1983-2003 Microsoft Corporation + 1998 Luk Vermeulen + 1999-2005 Marcel van Brakel + 1995-1999 Citrix Systems Inc. + 1996 the University of Southern California + 2000 Rudy Velthuis + 2001-2005 Oliver Schneider (assarbad) + 1999-2001 Wayne Sherman + 2004-2005 Robert Marquardt +Comment: The files don't mention which version of the LGPL they mean. Most + files and copyright statements are from a time before LGPL-3 was written. The + text mentions "Lesser General Public License" and link to the lesser license + on the GNU website, which is now (2015.09.07) LGPL-3. Therefore I conclude it + is LGPL-2.1+. +License: MPL-1.1 or LGPL-2.1+ + +Files: fpcsrc/packages/winunits-jedi/src/jwalpmapi.pas +Copyright: + 1995-2001 Microsoft Corporation + 1999-2001 Marcel van Brakel +License: MPL-1.1 or LGPL-2.1+, and SC + +Files: + fpcsrc/packages/libgbafpc/src/gba/boyscout.inc + fpcsrc/packages/libndsfpc/src/fat/fat.inc + fpcsrc/packages/libndsfpc/src/fat/gbfs.inc + fpcsrc/packages/libndsfpc/src/nds/arm9/keyboard.inc + fpcsrc/packages/libndsfpc/src/nds/ipc.inc + fpcsrc/packages/libndsfpc/src/nds/nds.inc + fpcsrc/packages/openal/examples/wavopenal.pas + fpcsrc/packages/paszlib/src/zbase.pas + fpcsrc/rtl/i386/fastmove.inc +Copyright: + 1995-1998 Jean-loup Gailly + 1995-1998 Mark Adler + 1998 Jacques Nomssi Nzali + 2001 Willem Kokke + 2002-2004 Damian Yerrick + 2004 John O'Harrow + 2005 Christer Andersson + 2005 Dave Murphy (WinterMute) + 2005 Jason Rogers (dovoto) + 2006 Francesco Lombardi + 2010 Dmitry Boyarintsev +License: Zlib + +Files: + fpcsrc/packages/x11/src/deckeysym.pp + fpcsrc/packages/x11/src/hpkeysym.pp +Copyright: 1988-1991 by Digital Equipment Corporation, Maynard, Massachusetts + 1988-1998 The Open Group +License: DEC and Open + +Files: + fpcsrc/packages/x11/src/sunkeysym.pp +Copyright: 1991 Oracle and/or its affiliates + 1991-1998 The Open Group +License: Expat and Open + +Files: + fpcsrc/rtl/i386/math.inc + fpcsrc/rtl/x86_64/math.inc +Copyright: + 1999-2005 the Free Pascal development team + 2009-2013 Wolfgang Ehrhardt +License: Zlib and LGPL-2.1+ with staticLink exception + +Files: fpcsrc/rtl/inc/genmath.inc +Copyright: + Copyright Abandoned, 1987, Fred Fish + 1992 Odent Jean Philippe + 1997 Carl Eric Codere + 1993 Sun Microsystems, Inc. + 2013 Wolfgang Ehrhardt + 1999-2007 Several contributors +License: Zlib and LGPL-2.1+ with staticLink exception and abandoned and mention and sun + +Files: + fpcsrc/compiler/macho.pas + fpcsrc/packages/httpd20/src/apriconv/apr_iconv.inc + fpcsrc/packages/httpd22/src/apriconv/apr_iconv.inc + fpcsrc/packages/ptc/src/win32/directx/p_dinput.pp + fpcsrc/packages/pthreads/src/pthrhaiku.inc + fpcsrc/packages/pthreads/src/pthrbsd.inc + fpcsrc/packages/pthreads/src/pthrbeos.inc + fpcsrc/packages/univint/src/* + fpcsrc/rtl/darwin/errno.inc + fpcsrc/rtl/darwin/ppcgen/sig_ppc.inc + fpcsrc/rtl/darwin/signal.inc + fpcsrc/rtl/darwin/sysctlh.inc + fpcsrc/rtl/darwin/termios.inc + fpcsrc/rtl/darwin/x86/sig_x86.inc + fpcsrc/rtl/openbsd/sysctlh.inc +Copyright: Not applicable +License: public-domain + The header of these files suggests that they are under a non-DFSG license, + i.e. the Apple APSL V1.1 or V2 license or the BSD with advertizing + clause. However, the Debian Pascal team claims that these files are merely + interface files, only defining data types. There is no instruction code. It is + exactly equivalent to a C header file for any library that does not include + any function definition. + . + It is our understanding that this kind of interfacing file is not covered by + intellectual property as long as the interface itself is publicly available. + +Files: fpcsrc/packages/gtk2/examples/gtkglext/gears.pas +Copyright: Not applicable +License: public-domain-2 + This codepage information is based on what is documented at + 1. http://wiki.whatwg.org/wiki/Web_Encodings + 2. http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx + . + This file only uses bare facts and API information from the above pages + rather than descriptions or code, neither of which are copyrightable. + +License: abandoned + This previously copyrighted work has been placed into the + public domain by the author (Fred Fish) and may be freely used + for any purpose, private or commercial. I would appreciate + it, as a courtesy, if this notice is left in all copies and + derivative works. Thank you, and enjoy... + . + The author makes no warranty of any kind with respect to this + product and explicitly disclaims any implied warranties of + merchantability or fitness for any particular purpose. + +License: Apache-2 + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the complete text of the Apache License, + Version 2.0 can be found in '/usr/share/common-licenses/Apache-2.0'. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must not misrepresent the orignal + source in the documentation and/or other materials provided + with the distribution. + . + The names of the authors not its contributors may be used to + endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +License: CDDL-1 + The contents of this file are subject to the terms of the + Common Development and Distribution License (the "License"). + You may not use this file except in compliance with the License. + . + You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + or http://www.opensolaris.org/os/licensing. + See the License for the specific language governing permissions + and limitations under the License. + . + . + The content of the CDDL license: + . + COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) + Version 1.0 + . + 1. Definitions. + . + 1.1. “Contributor” means each individual or entity that creates or contributes + to the creation of Modifications. + . + 1.2. “Contributor Version” means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the Modifications made + by that particular Contributor. + . + 1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, + or (c) the combination of files containing Original Software with files + containing Modifications, in each case including portions thereof. + . + 1.4. “Executable” means the Covered Software in any form other than Source + Code. + . + 1.5. “Initial Developer” means the individual or entity that first makes + Original Software available under this License. + . + 1.6. “Larger Work” means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + . + 1.7. “License” means this document. + . + 1.8. “Licensable” means having the right to grant, to the maximum extent + possible, whether at the time of the initial grant or subsequently acquired, + any and all of the rights conveyed herein. + . + 1.9. “Modifications” means the Source Code and Executable form of any of the + following: + . + A. Any file that results from an addition to, deletion from or modification of + the contents of a file containing Original Software or previous Modifications; + . + B. Any new file that contains any part of the Original Software or previous + Modification; or + . + C. Any new file that is contributed or otherwise made available under the + terms of this License. + . + 1.10. “Original Software” means the Source Code and Executable form of + computer software code that is originally released under this License. + . + 1.11. “Patent Claims” means any patent claim(s), now owned or hereafter + acquired, including without limitation, method, process, and apparatus claims, + in any patent Licensable by grantor. + . + 1.12. “Source Code” means (a) the common form of computer software code in + which modifications are made and (b) associated documentation included in or + with such code. + . + 1.13. “You” (or “Your”) means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. For legal + entities, “You” includes any entity which controls, is controlled by, or is + under common control with You. For purposes of this definition, “control” + means (a) the power, direct or indirect, to cause the direction or management + of such entity, whether by contract or otherwise, or (b) ownership of more + than fifty percent (50%) of the outstanding shares or beneficial ownership of + such entity. + . + 2. License Grants. + . + 2.1. The Initial Developer Grant. Conditioned upon Your compliance with + Section 3.1 below and subject to third party intellectual property claims, the + Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive + license: + . + (a) under intellectual property rights (other than patent or trademark) + Licensable by Initial Developer, to use, reproduce, modify, display, perform, + sublicense and distribute the Original Software (or portions thereof), with or + without Modifications, and/or as part of a Larger Work; and + . + (b) under Patent Claims infringed by the making, using or selling of Original + Software, to make, have made, use, practice, sell, and offer for sale, and/or + otherwise dispose of the Original Software (or portions thereof). + . + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date + Initial Developer first distributes or otherwise makes the Original Software + available to a third party under the terms of this License. + . + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) + for code that You delete from the Original Software, or (2) for infringements + caused by: (i) the modification of the Original Software, or (ii) the + combination of the Original Software with other software or devices. + . + 2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 + below and subject to third party intellectual property claims, each + Contributor hereby grants You a world-wide, royalty-free, non-exclusive + license: + . + (a) under intellectual property rights (other than patent or trademark) + Licensable by Contributor to use, reproduce, modify, display, perform, + sublicense and distribute the Modifications created by such Contributor (or + portions thereof), either on an unmodified basis, with other Modifications, as + Covered Software and/or as part of a Larger Work; and + . + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in combination with + its Contributor Version (or portions of such combination), to make, use, sell, + offer for sale, have made, and/or otherwise dispose of: (1) Modifications made + by that Contributor (or portions thereof); and (2) the combination of + Modifications made by that Contributor with its Contributor Version (or + portions of such combination). + . + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the + date Contributor first distributes or otherwise makes the Modifications + available to a third party. + . + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) + for any code that Contributor has deleted from the Contributor Version; (2) + for infringements caused by: (i) third party modifications of Contributor + Version, or (ii) the combination of Modifications made by that Contributor + with other software (except as part of the Contributor Version) or other + devices; or (3) under Patent Claims infringed by Covered Software in the + absence of Modifications made by that Contributor. + . + 3. Distribution Obligations. + . + 3.1. Availability of Source Code. Any Covered Software that You distribute or + otherwise make available in Executable form must also be made available in + Source Code form and that Source Code form must be distributed only under the + terms of this License. You must include a copy of this License with every copy + of the Source Code form of the Covered Software You distribute or otherwise + make available. You must inform recipients of any such Covered Software in + Executable form as to how they can obtain such Covered Software in Source Code + form in a reasonable manner on or through a medium customarily used for + software exchange. + . + 3.2. Modifications. The Modifications that You create or to which You + contribute are governed by the terms of this License. You represent that You + believe Your Modifications are Your original creation(s) and/or You have + sufficient rights to grant the rights conveyed by this License. + . + 3.3. Required Notices. You must include a notice in each of Your + Modifications that identifies You as the Contributor of the Modification. You + may not remove or alter any copyright, patent or trademark notices contained + within the Covered Software, or any notices of licensing or any descriptive + text giving attribution to any Contributor or the Initial Developer. + . + 3.4. Application of Additional Terms. You may not offer or impose any terms + on any Covered Software in Source Code form that alters or restricts the + applicable version of this License or the recipients’ rights hereunder. You + may choose to offer, and to charge a fee for, warranty, support, indemnity or + liability obligations to one or more recipients of Covered Software. However, + you may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity or liability obligation is offered by You alone, + and You hereby agree to indemnify the Initial Developer and every Contributor + for any liability incurred by the Initial Developer or such Contributor as a + result of warranty, support, indemnity or liability terms You offer. + . + 3.5. Distribution of Executable Versions. You may distribute the Executable + form of the Covered Software under the terms of this License or under the + terms of a license of Your choice, which may contain terms different from this + License, provided that You are in compliance with the terms of this License + and that the license for the Executable form does not attempt to limit or + alter the recipient’s rights in the Source Code form from the rights set forth + in this License. If You distribute the Covered Software in Executable form + under a different license, You must make it absolutely clear that any terms + which differ from this License are offered by You alone, not by the Initial + Developer or Contributor. You hereby agree to indemnify the Initial Developer + and every Contributor for any liability incurred by the Initial Developer or + such Contributor as a result of any such terms You offer. + . + 3.6. Larger Works. You may create a Larger Work by combining Covered Software + with other code not governed by the terms of this License and distribute the + Larger Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Software. + . + 4. Versions of the License. + . + 4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and + may publish revised and/or new versions of this License from time to + time. Each version will be given a distinguishing version number. Except as + provided in Section 4.3, no one other than the license steward has the right + to modify this License. + . + 4.2. Effect of New Versions. You may always continue to use, distribute or + otherwise make the Covered Software available under the terms of the version + of the License under which You originally received the Covered Software. If + the Initial Developer includes a notice in the Original Software prohibiting + it from being distributed or otherwise made available under any subsequent + version of the License, You must distribute and make the Covered Software + available under the terms of the version of the License under which You + originally received the Covered Software. Otherwise, You may also choose to + use, distribute or otherwise make the Covered Software available under the + terms of any subsequent version of the License published by the license + steward. + . + 4.3. Modified Versions. When You are an Initial Developer and You want to + create a new license for Your Original Software, You may create and use a + modified version of this License if You: (a) rename the license and remove any + references to the name of the license steward (except to note that the license + differs from this License); and (b) otherwise make it clear that the license + contains terms which differ from this License. + . + 5. DISCLAIMER OF WARRANTY. + . + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, + MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK + AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD + ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL + DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN + ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED + HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + . + 6. TERMINATION. + . + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure such + breach within 30 days of becoming aware of the breach. Provisions which, by + their nature, must remain in effect beyond the termination of this License + shall survive. + . + 6.2. If You assert a patent infringement claim (excluding declaratory judgment + actions) against Initial Developer or a Contributor (the Initial Developer or + Contributor against whom You assert such claim is referred to as + “Participant”) alleging that the Participant Software (meaning the Contributor + Version where the Participant is a Contributor or the Original Software where + the Participant is the Initial Developer) directly or indirectly infringes any + patent, then any and all rights granted directly or indirectly to You by such + Participant, the Initial Developer (if the Initial Developer is not the + Participant) and all Contributors under Sections 2.1 and/or 2.2 of this + License shall, upon 60 days notice from Participant terminate prospectively + and automatically at the expiration of such 60 day notice period, unless if + within such 60 day period You withdraw Your claim with respect to the + Participant Software against such Participant either unilaterally or pursuant + to a written agreement with Participant. + . + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user + licenses that have been validly granted by You or any distributor hereunder + prior to termination (excluding licenses granted to You by any distributor) + shall survive termination. + . + 7. LIMITATION OF LIABILITY. + . + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING + NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY + OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF + ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, + COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR + LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH + DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH + OR PERSONAL INJURY RESULTING FROM SUCH PARTY’S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS + EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + . + 8. U.S. GOVERNMENT END USERS. + . + The Covered Software is a “commercial item,” as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as + that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial + computer software documentation” as such terms are used in 48 C.F.R. 12.212 + (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered + Software with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software under this + License. + . + 9. MISCELLANEOUS. + . + This License represents the complete agreement concerning subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. This License shall be governed by the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction’s conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys’ fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or regulation which + provides that the language of a contract shall be construed against the + drafter shall not apply to this License. You agree that You alone are + responsible for compliance with the United States export administration + regulations (and the export control laws and regulation of any other + countries) when You use, distribute or otherwise make available any Covered + Software. + . + 10. RESPONSIBILITY FOR CLAIMS. + . + As between Initial Developer and the Contributors, each party is responsible + for claims and damages arising, directly or indirectly, out of its utilization + of rights under this License and You agree to work with Initial Developer and + Contributors to distribute such responsibility on an equitable basis. Nothing + herein is intended or shall be deemed to constitute any admission of liability. + +License: DEC + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies and that + both that copyright notice and this permission notice appear in + supporting documentation, and that the name of Digital not be + used in advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + . + DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING + ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL + DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR + ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + SOFTWARE. + +License: expat + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + +License: expat-like + GLESv2 part: + . + This document is licensed under the SGI Free Software B License Version + 2.0. For details, see http://oss.sgi.com/projects/FreeB/ + . + SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) + Copyright (C) [dates of first publication] Silicon Graphics, Inc. All Rights + Reserved. + . + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice including the dates of first publication and either + this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ + shall be included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + . + Except as contained in this notice, the name of Silicon Graphics, Inc. shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization from Silicon + Graphics, Inc + +License: GPL-djd + This document is Copyright (C) DJ Delorie and may be distributed + verbatim, but changing it is not allowed. + . + Source code copyright DJ Delorie is distributed under the terms of the + GNU General Public Licence, with the following exceptions: + . + * Any existing copyright or authorship information in any given source + file must remain intact. If you modify a source file, a notice to that + effect must be added to the authorship information in the source file. + . + * binaries provided in djgpp may be distributed without sources ONLY if + the recipient is given sufficient information to obtain a copy of djgpp + themselves. This primarily applies to go32.exe, emu387, stub.exe, and + the graphics drivers. + . + * modified versions of the binaries provided in djgpp must be + distributed under the terms of the GPL. + . + * objects and libraries linked into an application may be distributed + without sources. + +License: GPL-2-fmc + This file is part of MkSymbian build tool. + . + MkSymbian is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License version 2 as published by the Free + Software Foundation. + . + MkSymbian 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 General Public License for more details. + . + Please note that the General Public License version 2 does not permit + incorporating MkSymbian into proprietary programs. + . + On Debian systems, the complete text of version 2 of the GNU General + Public License can be found in '/usr/share/common-licenses/GPL-2'. + +License: GPL-2-oracle + This code is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License version 2 only, as + published by the Free Software Foundation. Oracle designates this + particular file as subject to the "Classpath" exception as provided + by Oracle in the LICENSE file that accompanied this code. + . + This code 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 General Public License + version 2 for more details (a copy is included in the LICENSE file that + accompanied this code). + . + You should have received a copy of the GNU General Public License version + 2 along with this work; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + . + Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + or visit www.oracle.com if you need additional information or have any + questions. + . + On Debian systems, the complete text of version 2 of the GNU General + Public License can be found in '/usr/share/common-licenses/GPL-2'. + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 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 General Public License for more details. + . + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + . + On Debian systems, the complete text of version 2 of the GNU General + Public License can be found in '/usr/share/common-licenses/GPL-2'. + +License: ISC + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: LGPL-2+ + . + On Debian systems, the complete text of version 2 of the GNU Lesser + General Public License can be found in '/usr/share/common-licenses/LGPL-2'. + +License: LGPL-2.1 + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; version 2.1 only + . + 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 Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of version 2.1 of the GNU Lesser + General Public License can be found in '/usr/share/common-licenses/LGPL-2.1'. + +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library 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 + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of version 2.1 of the GNU Lesser + General Public License can be found in '/usr/share/common-licenses/LGPL-2.1'. + +License: LGPL-2.1+ with staticLink exception + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version + with the following modification: + . + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + . + This library 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 + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of version 2.1 of the GNU Lesser + General Public License can be found in '/usr/share/common-licenses/LGPL-2.1'. + +License: mention + The source can be modified as long as my name appears and some + notes explaining the modifications done are included in the file. + +License: MPL-1.1 + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ + . + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for + the specific language governing rights and limitations under the License. + . + MOZILLA PUBLIC LICENSE + Version 1.1 + . + --------------- + . + 1. Definitions. + . + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + . + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + . + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + . + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + . + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + . + 1.5. "Executable" means Covered Code in any form other than Source + Code. + . + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + . + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + . + 1.8. "License" means this document. + . + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + . + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + . + B. Any new file that contains any part of the Original Code or + previous Modifications. + . + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + . + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + . + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + . + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + . + 2. Source Code License. + . + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + . + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + . + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + . + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + . + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + . + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + . + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + . + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + . + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + . + 3. Distribution Obligations. + . + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + . + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + . + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + . + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + . + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + . + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + . + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + . + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + . + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + . + 4. Inability to Comply Due to Statute or Regulation. + . + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + . + 5. Application of this License. + . + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + . + 6. Versions of the License. + . + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + . + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + . + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + . + 7. DISCLAIMER OF WARRANTY. + . + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + . + 8. TERMINATION. + . + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + . + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declaratory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + . + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + . + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + . + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + . + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + . + 9. LIMITATION OF LIABILITY. + . + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + . + 10. U.S. GOVERNMENT END USERS. + . + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + . + 11. MISCELLANEOUS. + . + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + . + 12. RESPONSIBILITY FOR CLAIMS. + . + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + . + 13. MULTIPLE-LICENSED CODE. + . + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the MPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + . + EXHIBIT A -Mozilla Public License. + . + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + . + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + . + The Original Code is ______________________________________. + . + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + . + Contributor(s): ______________________________________. + . + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + . + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + +License: Open + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + . + Except as contained in this notice, the name of The Open Group shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from The Open Group. + +License: RSA + License to copy and use this software is granted provided that it + is identified as the "RSA Data Security, Inc. MD5 Message-Digest + Algorithm" in all material mentioning or referencing this software + or this function. + . + License is also granted to make and use derivative works provided + that such works are identified as "derived from the RSA Data + Security, Inc. MD5 Message-Digest Algorithm" in all material + mentioning or referencing the derived work. + . + RSA Data Security, Inc. makes no representations concerning either + the merchantability of this software or the suitability of this + software for any particular purpose. It is provided "as is" + without express or implied warranty of any kind. + . + These notices must be retained in any copies of any part of this + documentation and/or software. + +License: SC + Permission to use, copy, modify, and distribute this software and its + documentation in source and binary forms for any purpose and without + fee is hereby granted, provided that both the above copyright notice + and this permission notice appear in all copies, and that any + documentation, advertising materials, and other materials related to + such distribution and use acknowledge that the software was developed + in part by the University of Southern California, Information + Sciences Institute. The name of the University may not be used to + endorse or promote products derived from this software without + specific prior written permission. + . + THE UNIVERSITY OF SOUTHERN CALIFORNIA makes no representations about + the suitability of this software for any purpose. THIS SOFTWARE IS + PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + . + Other copyrights might apply to parts of this software and are so + noted when applicable. + +License: sun + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +License: Zlib + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + . + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + . + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + . + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + . + 3. This notice may not be removed or altered from any source + distribution. diff --git a/fixdeb b/fixdeb new file mode 100755 index 00000000..5ba67650 --- /dev/null +++ b/fixdeb @@ -0,0 +1,57 @@ +#!/bin/bash +# +# Create debian files from *.in files +# + +set -e + +usage() +{ + echo 'Usage : DEB_SUBST_= ... DEB_SUBST_= fixdeb [-sc|--gen-control] [file1.in] ... [filen.in]' + echo ' Changes environment variables with their values. The variables to be' + echo ' changed should be exported prefixed with DEB_SUBST_' + echo ' --gen-control: do not skip generating control file, by default it will be ignored' + echo ' = space separated list to debian files templates' + echo + echo ' List of defined variables' + set | grep '^DEB_SUBST_' + exit 1 +} + +true ${DEB_SUBST_PACKAGEVERSION:=$(dpkg-parsechangelog | sed -ne's,^Version: \(.*\),\1,p')} +true ${DEB_SUBST_VERSION:=$(echo $DEB_SUBST_PACKAGEVERSION | sed -ne's,^\([0-9.]*\).*,\1,p')} +true ${DEB_SUBST_DEBVERSION:=$(echo $DEB_SUBST_PACKAGEVERSION | awk -F '-' '{ print $NF }')} +true ${DEB_SUBST_UPSTREAM_VERSION:=$(echo ${DEB_SUBST_PACKAGEVERSION} | cut -f 1 -d -)} +true ${DEB_SUBST_UPSTREAM_MAIN_VERSION:=$(echo ${DEB_SUBST_UPSTREAM_VERSION} | sed -e 's/^\([0-9\.]*\).*/\1/')} +true ${DEB_SUBST_PACKAGESUFFIX:=-${DEB_SUBST_UPSTREAM_MAIN_VERSION}} +true ${DEB_SUBST_PRIORITY:=$(($(echo ${DEB_SUBST_VERSION}.0.0.0.0 | sed -e 's@\([0-9]\)\+\.\([0-9]\)\+\.\([0-9]\+\)\.\([0-9]\+\).*@((\1*100+\2)*100+\3)*100+\4@')))} +true ${DEB_SUBST_TARGET:=$(dpkg-architecture -qDEB_BUILD_ARCH)-$(dpkg-architecture -qDEB_BUILD_ARCH_OS)} + +if test ${1} = '--gen-control' +then + echo ========== Genrating debian/control as per explicit request ========== + gen_control=true + shift +else + gen_control=false +fi +if test $# -lt 1 +then + usage +fi + +echo 'List of defined variables' +set | grep '^DEB_SUBST_' +SUBST_CMD=$(set | sed -n -e 's/^DEB_SUBST_\([A-Z_]\+\)=\(.*\)/-e s@\${\1}@\2@g/p') + +for i in $* +do + f=$(basename ${i} .in) + if ${gen_control} || test ${f} != 'control' + then + d=$(dirname ${i}) + o=${d}/${f/./${DEB_SUBST_PACKAGESUFFIX}.} + echo " * Generating ${o}" + sed ${SUBST_CMD} ${i} > ${o} + fi +done diff --git a/fp-compiler.config.in b/fp-compiler.config.in new file mode 100644 index 00000000..5eb7cb56 --- /dev/null +++ b/fp-compiler.config.in @@ -0,0 +1,34 @@ +#! /bin/sh + +set -e + +# Load debconf +. /usr/share/debconf/confmodule + +CFG_FILE='/etc/fpc.cfg' +CFG_PRIORITY=$(echo ${VERSION} | sed -e 's/\.//g') +if test -f "${CFG_FILE}" && ! test -L "${CFG_FILE}" +then + db_input high fp-compiler/rename_cfg || test $? -eq 30 +fi +WINDRES_BINS=$(find '/usr/bin' -maxdepth 1 -mindepth 1 -executable -name "*windres*" -printf "%p, ") +# The last comma needs to be stripped because the template already has it +db_subst fp-compiler/windres-select choices ${WINDRES_BINS%, } +db_metaget fp-compiler/windres-select choices +# The last entry of the template now has "Select manually" but let's not hardcode +# it here. It should remain the last item though. +MANUAL_SELECT_MESSAGE="${RET##*, }" +db_input low fp-compiler/windres-select || test $? -eq 30 +db_go +db_get fp-compiler/windres-select +if test "${RET}" = "${MANUAL_SELECT_MESSAGE}" +then + db_input low fp-compiler/windres || test $? -eq 30 +else + WINDRES_BIN=${RET} + db_set fp-compiler/windres "${WINDRES_BIN}" +fi +db_go + +# Debhelper code +#DEBHELPER# diff --git a/fp-compiler.doc-base.in b/fp-compiler.doc-base.in new file mode 100644 index 00000000..f6549652 --- /dev/null +++ b/fp-compiler.doc-base.in @@ -0,0 +1,10 @@ +Document: fp-compiler${PACKAGESUFFIX} +Title: Free Pascal FAQ +Author: Michael van Canneyt +Abstract: Frequnetly Asked Questions about the Free Pascal Compiler. + . +Section: Programming + +Format: html +Files: /usr/share/doc/fp-compiler/${VERSION}/* +Index: /usr/share/doc/fp-compiler/${VERSION}/faq.html diff --git a/fp-compiler.install.in b/fp-compiler.install.in new file mode 100644 index 00000000..b5384519 --- /dev/null +++ b/fp-compiler.install.in @@ -0,0 +1,8 @@ +#! /usr/bin/dh-exec +usr/bin/fpc-depends-${VERSION} +usr/bin/${DEB_HOST_MULTIARCH}-fpc-${VERSION} +usr/bin/${DEB_HOST_MULTIARCH}-fpcres-${VERSION} +usr/lib/${DEB_HOST_MULTIARCH}/fpc/${VERSION}/msg +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/${PPCBIN} +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/samplecfg +usr/share/doc/fp-compiler [!freebsd-any] diff --git a/fp-compiler.links.in b/fp-compiler.links.in new file mode 100644 index 00000000..d5fc15cc --- /dev/null +++ b/fp-compiler.links.in @@ -0,0 +1,4 @@ +/usr/lib/${DEB_HOST_MULTIARCH}/fpc/${VERSION}/${PPCBIN} /usr/bin/${PPCBIN}-${VERSION} +/usr/share/man/man1/fpc-${VERSION}.1.gz /usr/share/man/man1/${DEB_HOST_MULTIARCH}-fpc-${VERSION}.1.gz +/usr/share/man/man1/fpcmkcfg-${VERSION}.1.gz /usr/share/man/man1/${DEB_HOST_MULTIARCH}-fpcmkcfg-${VERSION}.1.gz +/usr/share/man/man1/fpcres-${VERSION}.1.gz /usr/share/man/man1/${DEB_HOST_MULTIARCH}-fpcres-${VERSION}.1.gz diff --git a/fp-compiler.lintian-overrides b/fp-compiler.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-compiler.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-compiler.lintian-overrides.in b/fp-compiler.lintian-overrides.in new file mode 100644 index 00000000..a9c313e8 --- /dev/null +++ b/fp-compiler.lintian-overrides.in @@ -0,0 +1,8 @@ +# Free pascal binaries are often statically linked. +# The Free Pascal Compiler does not properly support linking. Please +# see BTS #472304. +statically-linked-binary +# Spelling error in upstream license text +spelling-error-in-copyright orignal original +# Many source files are in national encoding. +fp-compiler${PACKAGESUFFIX}: national-encoding *.msg diff --git a/fp-compiler.manpages.in b/fp-compiler.manpages.in new file mode 100644 index 00000000..5932fb53 --- /dev/null +++ b/fp-compiler.manpages.in @@ -0,0 +1,6 @@ +debian/fpc-depends-${VERSION}.1 +debian/tmp/usr/man/man1/fpc-${VERSION}.1 +debian/tmp/usr/man/man1/fpcmkcfg-${VERSION}.1 +debian/tmp/usr/man/man1/fpcres-${VERSION}.1 +debian/tmp/usr/man/man1/${PPCBIN}-${VERSION}.1 +debian/tmp/usr/man/man5/fpc-${VERSION}.cfg.5 diff --git a/fp-compiler.postinst.in b/fp-compiler.postinst.in new file mode 100644 index 00000000..9985f734 --- /dev/null +++ b/fp-compiler.postinst.in @@ -0,0 +1,99 @@ +#! /bin/sh + +set -e + +# Load debconf +. /usr/share/debconf/confmodule + +CFG_PATH='/etc/fpc.cfg' +PKG_CFG_PATH="/etc/fpc-${VERSION}.cfg" +LIB_DIR="/usr/lib/${DEB_HOST_MULTIARCH}/fpc" +MAN_DIR="/usr/share/man/man1" +MKCFG="/usr/bin/${DEB_HOST_MULTIARCH}-fpcmkcfg-${VERSION}" + +# Debhelper code +#DEBHELPER# + +USER_HAS_ENABLED_NEW_CONF="test -L ${CFG_PATH} -o ! -e ${CFG_PATH}" + +if ! ${USER_HAS_ENABLED_NEW_CONF} +then + db_get fp-compiler/rename_cfg + if test "${RET}" = "true" -a -e ${CFG_PATH} + then + mv "${CFG_PATH}" "${CFG_PATH}.bak" + fi +fi + +# Create new compiler configuration file +${MKCFG} -0 -d "basepath=${LIB_DIR}/\$fpcversion" -o "${PKG_CFG_PATH}" +# Add multiarch path to /etc/fpc.cfg so executables linked against libc can be corectly linked +echo '# multiarch library search path' >> ${PKG_CFG_PATH} +echo '-Fl/usr/lib/$fpctarget-*' >> ${PKG_CFG_PATH} +# Define a default location, multi-arch compatible, for third party units. +cat >> ${PKG_CFG_PATH} <&2 + exit 1 + ;; +esac + +if test -n ${WINDRES_BIN} +then + db_get fp-compiler/windres + if test -n "${RET}" + then + WINDRES_BIN=${RET} + fi +fi +sed -e '\@# MS Windows .rc resource compiler@d' -e '\@-FC@d' -i ${PKG_CFG_PATH} +if test -n "${WINDRES_BIN}" +then + echo '# MS Windows .rc resource compiler' >> ${PKG_CFG_PATH} + echo "-FC${WINDRES_BIN}" >> ${PKG_CFG_PATH} +fi + +# add alternatives +update-alternatives \ + --install /usr/bin/fpc fpc /usr/bin/${DEB_HOST_MULTIARCH}-fpc-${VERSION} ${PRIORITY} \ + --slave /usr/bin/${PPCBIN} ${PPCBIN} ${LIB_DIR}/${VERSION}/${PPCBIN} \ + --slave /usr/bin/fpc-depends fpc-depends /usr/bin/fpc-depends-${VERSION} \ + --slave /usr/bin/fpcres fpcres /usr/bin/${DEB_HOST_MULTIARCH}-fpcres-${VERSION} \ + --slave /usr/bin/fpcmkcfg fpcmkcfg /usr/bin/${DEB_HOST_MULTIARCH}-fpcmkcfg-${VERSION} \ + --slave /usr/bin/samplecfg samplecfg /usr/lib/${DEB_HOST_MULTIARCH}/fpc/${VERSION}/samplecfg \ + --slave ${MAN_DIR}/${PPCBIN}.1.gz ${PPCBIN}.1.gz ${MAN_DIR}/${PPCBIN}-${VERSION}.1.gz \ + --slave ${MAN_DIR}/fpc.1.gz fpc.1.gz ${MAN_DIR}/fpc-${VERSION}.1.gz \ + --slave ${MAN_DIR}/fpc-depends.1.gz fpc-depends.1.gz ${MAN_DIR}/fpc-depends-${VERSION}.1.gz \ + --slave ${MAN_DIR}/fpcres.1.gz fpcres.1.gz ${MAN_DIR}/fpcres-${VERSION}.1.gz \ + --slave ${MAN_DIR}/fpcmkcfg.1.gz fpcmkcfg.1.gz ${MAN_DIR}/fpcmkcfg-${VERSION}.1.gz +# Configuration file is a special case as it is backward compatible and is +# likely to be handled as a special alternative pointing to the latest release +if ${USER_HAS_ENABLED_NEW_CONF} +then + update-alternatives \ + --install ${CFG_PATH} fpc.cfg ${PKG_CFG_PATH} ${PRIORITY} +fi +# Replace legacy/gnu pascal compilers +update-alternatives \ + --install /usr/bin/pc pc /usr/bin/fpc 20 \ + --slave ${MAN_DIR}/pc.1.gz pc.1.gz ${MAN_DIR}/fpc.1.gz diff --git a/fp-compiler.postrm.in b/fp-compiler.postrm.in new file mode 100644 index 00000000..5199a598 --- /dev/null +++ b/fp-compiler.postrm.in @@ -0,0 +1,16 @@ +#! /bin/sh + +set -e + +ACTION=$1 + +CFG_FILE="/etc/fpc-${VERSION}" + +# Debhelper code +#DEBHELPER# + +if test "${ACTION}" = "purge" +then + rm -f "${CFG_FILE}".cfg + rm -f "${CFG_FILE}".bak +fi diff --git a/fp-compiler.prerm.in b/fp-compiler.prerm.in new file mode 100644 index 00000000..ff4c725e --- /dev/null +++ b/fp-compiler.prerm.in @@ -0,0 +1,11 @@ +#! /bin/sh + +set -e + +# remove alternative +update-alternatives --remove fpc /usr/bin/${DEB_HOST_MULTIARCH}-fpc-${VERSION} +update-alternatives --remove fpc.cfg /etc/fpc-${VERSION}.cfg +update-alternatives --remove pc /usr/bin/fpc-${VERSION} + +# Debhelper code +#DEBHELPER# diff --git a/fp-compiler.templates.in b/fp-compiler.templates.in new file mode 100644 index 00000000..7cfa337b --- /dev/null +++ b/fp-compiler.templates.in @@ -0,0 +1,60 @@ +# These templates have been reviewed by the debian-l10n-english +# team +# +# If modifications/additions/rewording are needed, please ask +# debian-l10n-english@lists.debian.org for advice. +# +# Even minor modifications require translation updates and such +# changes should be coordinated with translators and reviewers. + +Template: fp-compiler/rename_cfg +Type: boolean +Default: true +_Description: Rename "/etc/fpc.cfg" to "/etc/fpc.cfg.bak"? + FPC now supports having multiple versions installed on the same system. + The update-alternatives command can be used to set a default version for + * fpc (the compiler); + * fpc.cfg (the configuration file); + * fp-utils (the helper tools). + . + Whatever version you may choose as default, the configuration files are + always backward compatible, so it should always be safe to use the latest + version. + . + In order to use the alternatives system on the system wide FPC configuration + file you must accept renaming "/etc/fpc.cfg"; otherwise you will need to + manage this manually by yourself. + +Template: fp-compiler/windres-select +Type: select +# This string should be in sync with the translation in the description +#flag:translate:2 +__Choices: ${choices}, Select manually +Default: Select manually +#flag:comment:4 +# "Select manually" should be in sync with the text elsewhere in the +# translation +_Description: Default MS Windows .rc resource compiler: + FPC supports compiling programs that embed resources as MS Windows + .rc-format files on all platforms where the MinGW windres tool is available. + . + In order to be able to compile projects using .rc files, you need first to + manually install the package mingw32-binutils. mingw32-binutils is suggested + by fp-compiler but not pulled in automatically. + . + If you want to enter a custom .rc file compiler that does not appear in this + list or if you simply want to disable this feature, please select + "Select manually". + +Template: fp-compiler/windres +Type: string +Default: +_Description: Default MS Windows .rc resource compiler: + FPC supports compiling programs that embed resources as MS Windows + .rc-format files on all platforms where the MinGW windres tool is available. + . + In order to be able to compile projects using .rc files, you need first to + manually install the package mingw32-binutils. mingw32-binutils is suggested + by fp-compiler but not pulled in automatically. + . + If you don't want to use a default .rc file compiler, leave this blank. diff --git a/fp-compiler.triggers.in b/fp-compiler.triggers.in new file mode 100644 index 00000000..9c874624 --- /dev/null +++ b/fp-compiler.triggers.in @@ -0,0 +1 @@ +interest-noawait /usr/lib/gcc diff --git a/fp-docs.doc-base.in b/fp-docs.doc-base.in new file mode 100644 index 00000000..edcf3d95 --- /dev/null +++ b/fp-docs.doc-base.in @@ -0,0 +1,10 @@ +Document: fpc-docs${PACKAGESUFFIX} +Title: Free Pascal Documentation +Author: Michael van Canneyt +Abstract: Documentation for the Free Pascal Compiler. + . +Section: Programming + +Format: html +Files: /usr/share/doc/fp-docs/${VERSION}/* +Index: /usr/share/doc/fp-docs/${VERSION}/fpctoc.html diff --git a/fp-docs.install.in b/fp-docs.install.in new file mode 100644 index 00000000..d3f6e031 --- /dev/null +++ b/fp-docs.install.in @@ -0,0 +1,2 @@ +#! /usr/bin/dh-exec +usr/share/doc/fp-docs [!freebsd-any] diff --git a/fp-docs.lintian-overrides b/fp-docs.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-docs.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-docs.lintian-overrides.in b/fp-docs.lintian-overrides.in new file mode 100644 index 00000000..19e4473b --- /dev/null +++ b/fp-docs.lintian-overrides.in @@ -0,0 +1,4 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original +# Many files are in national encoding. +fp-docs${PACKAGESUFFIX}: national-encoding *.ans diff --git a/fp-fix-timestamps b/fp-fix-timestamps new file mode 100755 index 00000000..bf1000cd --- /dev/null +++ b/fp-fix-timestamps @@ -0,0 +1,98 @@ +#!/bin/sh + +# This script is meant to be used by source packages in the Free Pascal stack +# in Debian and derivatives. The aim of this script is to fix the timestamps of +# patched files (with respect to upstream) that would otherwise end up changing +# the timestamp stored in ppu files. This timestamp in ppu files has two +# issues: 1) it deteriorates reproducible builds. 2) reverse dependent packages +# that also build ppu files may believe that the source has changed and either +# require recompilation of the source or at least require recalculation all the +# time. +# +# See also: https://wiki.debian.org/ReproducibleBuilds/TimestampsInPPUGeneratedByFPC + +set -e + +myTmpFile=$(mktemp) +myNewRef=$(mktemp) +myOldRefSorted=$(mktemp) +ReferenceFile=debian/source/timestamps + +trap 'rm $myTmpFile $myNewRef $myOldRefSorted' 0 + +if [ ! -f debian/source/format ] ; then + echo "debian/source/format not found: $0 only works if it can check the Debian source format." + return 1 +fi + +if [ "$(cat debian/source/format)" != "3.0 (quilt)" ] ; then + echo "debian/source/format is not 3.0 (quilt): $0 doesn't know how to proceed." + return 1 +fi + +checkAgainstRef(){ + diff -q $myOldRefSorted $myNewRef > /dev/null +} + +makeNewRef(){ + now="$(date --iso-8601='minutes' --universal)" + if [ -f $ReferenceFile ] ; then + cat $ReferenceFile | LC_ALL=C.UTF-8 sort > $myOldRefSorted + fi + for FILE in $fpcFiles ; do + FILE=${FILE#*/} + existingFile="$(grep $FILE $myOldRefSorted || true)" + if [ -z "$existingFile" ] ; then + echo "$FILE $now" >> $myTmpFile + else + echo "$existingFile" >> $myTmpFile + fi + done + cat $myTmpFile | LC_ALL=C.UTF-8 sort | uniq > $myNewRef +} + +updateRef(){ + if [ ! -d "$(dirname $ReferenceFile)" ] ; then + mkdir "$(dirname $ReferenceFile)" + fi + cat $myNewRef > $ReferenceFile +} + +# We need something smarter for commented out patches I guess. Warning, +# checking d/p/series alone is not enough, see man dpkg-source. Maybe what can +# be done is that we use dpkg-parsechangelog to extract the date of the +# packaging and in the check option verify that those files are actually newer +# than that. Unfortunately, that also depends on the way-of-working. +fpcFiles="$(rgrep "^+++" debian/patches | awk '{print $2}' | grep -e "\.pas$" -e "\.inc$" -e "\.pp$" | sort | uniq)" + +if [ -z "$fpcFiles" ] ; then + echo "Nothing to do as no patched Free Pascal source files were found." + return 0 +fi + +makeNewRef + +case $1 in + check) + if checkAgainstRef ; then + echo "Reference file up-to-date" + else + echo "Reference file needs updating" + return 1 + fi + ;; + update) + if ! checkAgainstRef ; then + updateRef + else + echo "No update needed" + fi + ;; + touch) + awk '{system("touch " $1 " -d" $2)}' $ReferenceFile + ;; + *) + echo "No input arguments given" + return 1 + ;; +esac diff --git a/fp-fix-timestamps.txt b/fp-fix-timestamps.txt new file mode 100644 index 00000000..45247343 --- /dev/null +++ b/fp-fix-timestamps.txt @@ -0,0 +1,44 @@ +NAME +fp-fix-timestamps - helper script for the Free Pascal stack in Debian + +SYNOPSIS +fp-fix-timestamps check|update|touch + +DESCRIPTION + +fp-fix-timestamps is meant to be used by Debian source packages in the Free +Pascal stack. The primary location for use is the debian/rules file. The aim of +this script is to fix the timestamps of patched files (with respect to +upstream) that would otherwise end up changing the timestamp stored in ppu +files. + +This timestamp in ppu files has two issues: + +1. It deteriorates reproducible builds. + +2. Reverse dependent packages that also build ppu files may believe that the +source has changed and either require recompilation of the source or at least +require recalculation all the time. + +Currently this script supports three operations. + +1. touch: The main operation is to touch the files that are listed in +debian/source/timestamps to the associated timestamps (in that same file). + +2. check: When the situation is simple and the only changes in the package to +the source come from patches, the check option can be used to verify that the +list in debian/source/timestamps is still up-to-date in the sense that all +files touched by patches are listed and that all files listed are touched by +patches. + +3. update: Similar to check, but also update the debian/source/timestamps file. + +When the maintainer scripts modify a source file outside of the patches, the +maintainer is free to add those files manually to the timestamps file, but then +the check and update options don't work as expected anymore. + +SEE ALSO +https://wiki.debian.org/ReproducibleBuilds/TimestampsInPPUGeneratedByFPC + +AUTHOR +Paul Gevers diff --git a/fp-ide.install.in b/fp-ide.install.in new file mode 100644 index 00000000..42b18f94 --- /dev/null +++ b/fp-ide.install.in @@ -0,0 +1,5 @@ +#! /usr/bin/dh-exec +usr/bin/fp-* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/ide +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/fpmkinst/*/ide.fpm +usr/share/doc/fp-ide [!freebsd-any] diff --git a/fp-ide.lintian-overrides b/fp-ide.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-ide.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-ide.lintian-overrides.in b/fp-ide.lintian-overrides.in new file mode 100644 index 00000000..df760fe8 --- /dev/null +++ b/fp-ide.lintian-overrides.in @@ -0,0 +1,4 @@ +# Free pascal binaries are often statically linked. +fp-ide${PACKAGESUFFIX}: statically-linked-binary +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-ide.manpages.in b/fp-ide.manpages.in new file mode 100644 index 00000000..a75880e3 --- /dev/null +++ b/fp-ide.manpages.in @@ -0,0 +1 @@ +debian/tmp/usr/man/man1/fp-${VERSION}.1 diff --git a/fp-ide.postinst.in b/fp-ide.postinst.in new file mode 100644 index 00000000..2bc5e07a --- /dev/null +++ b/fp-ide.postinst.in @@ -0,0 +1,27 @@ +#! /bin/sh + +set -e + +# Load debconf +. /usr/share/debconf/confmodule + +CFG_PATH='/etc/fp.cfg' +PKG_CFG_PATH="/etc/fp-${VERSION}.cfg" +LIB_DIR="/usr/lib/${DEB_HOST_MULTIARCH}/fpc" +MKCFG="/usr/bin/${DEB_HOST_MULTIARCH}-fpcmkcfg-${VERSION}" + +# Debhelper code +#DEBHELPER# + +if test -e ${CFG_PATH} +then + mv "${CFG_PATH}" "${CFG_PATH}.`date -Is`.bak" +fi + +# Create new IDE configuration file +${MKCFG} -p -1 -d "basepath=${LIB_DIR}/\$fpcversion" -o "${PKG_CFG_PATH}" + +# add alternatives +update-alternatives \ + --install /usr/bin/fp fp /usr/bin/fp-${VERSION} ${PRIORITY} \ + --slave "${CFG_PATH}" fp.cfg "${PKG_CFG_PATH}" \ diff --git a/fp-ide.prerm.in b/fp-ide.prerm.in new file mode 100644 index 00000000..31582321 --- /dev/null +++ b/fp-ide.prerm.in @@ -0,0 +1,9 @@ +#! /bin/sh + +set -e + +# remove alternative +update-alternatives --remove fp /usr/bin/fp-${VERSION} + +# Debhelper code +#DEBHELPER# diff --git a/fp-units-base.install.in b/fp-units-base.install.in new file mode 100644 index 00000000..b35c8e6c --- /dev/null +++ b/fp-units-base.install.in @@ -0,0 +1,13 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fpmkunit* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/hash* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libtar* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/ncurses* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/pasjpeg* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/paszlib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/regexpr* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/tplylib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libusb* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/uuid* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/x11* +usr/share/doc/fp-units-base [!freebsd-any] diff --git a/fp-units-base.lintian-overrides b/fp-units-base.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-base.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-base.lintian-overrides.in b/fp-units-base.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-base.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-db.install.in b/fp-units-db.install.in new file mode 100644 index 00000000..ed5351d2 --- /dev/null +++ b/fp-units-db.install.in @@ -0,0 +1,12 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/dblib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/gdbm* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/ibase* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/mysql* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/odata* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/odbc* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/oracle* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/postgres* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/pxlib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/sqlite* +usr/share/doc/fp-units-db [!freebsd-any] diff --git a/fp-units-db.lintian-overrides b/fp-units-db.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-db.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-db.lintian-overrides.in b/fp-units-db.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-db.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-fcl.install.in b/fp-units-fcl.install.in new file mode 100644 index 00000000..81958558 --- /dev/null +++ b/fp-units-fcl.install.in @@ -0,0 +1,23 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-async* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-base* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-db* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-extra* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-fpcunit* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-image* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-js* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-json* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-net* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-passrc* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-pdf* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-process* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-registry* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-report* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-res* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-sdo* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-sound* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-stl* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-web* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fcl-xml* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/vcl-compat* +usr/share/doc/fp-units-fcl [!freebsd-any] diff --git a/fp-units-fcl.lintian-overrides b/fp-units-fcl.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-fcl.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-fcl.lintian-overrides.in b/fp-units-fcl.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-fcl.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-fv.install.in b/fp-units-fv.install.in new file mode 100644 index 00000000..13dc9a76 --- /dev/null +++ b/fp-units-fv.install.in @@ -0,0 +1,3 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fv* +usr/share/doc/fp-units-fv [!freebsd-any] diff --git a/fp-units-fv.lintian-overrides b/fp-units-fv.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-fv.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-fv.lintian-overrides.in b/fp-units-fv.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-fv.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-gfx.install.in b/fp-units-gfx.install.in new file mode 100644 index 00000000..7d3bf1c2 --- /dev/null +++ b/fp-units-gfx.install.in @@ -0,0 +1,16 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/ggi* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/graph* [!linux-arm64 !linux-armel !linux-armhf !linux-m68k !linux-mips !linux-mipsel !linux-ppc64 !linux-ppc64el !linux-sparc64] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/hermes* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/imagemagick* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libfontconfig* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libgd* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libpng* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/opencl* [!freebsd-any !linux-arm64 !linux-armel !linux-armhf !linux-m68k !linux-mips !linux-mipsel !linux-powerpc !linux-ppc64 !linux-ppc64el !linux-sparc64] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/opengl* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/opengles* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/ptc* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rsvg* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/svgalib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/xforms* +usr/share/doc/fp-units-gfx [!freebsd-any] diff --git a/fp-units-gfx.lintian-overrides b/fp-units-gfx.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-gfx.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-gfx.lintian-overrides.in b/fp-units-gfx.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-gfx.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-gtk2.install.in b/fp-units-gtk2.install.in new file mode 100644 index 00000000..e7017fa6 --- /dev/null +++ b/fp-units-gtk2.install.in @@ -0,0 +1,4 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/cairo* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/gtk2* +usr/share/doc/fp-units-gtk2 diff --git a/fp-units-gtk2.lintian-overrides b/fp-units-gtk2.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-gtk2.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-gtk2.lintian-overrides.in b/fp-units-gtk2.lintian-overrides.in new file mode 100644 index 00000000..5f305815 --- /dev/null +++ b/fp-units-gtk2.lintian-overrides.in @@ -0,0 +1,3 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original +depends-on-obsolete-package Recommends: diff --git a/fp-units-i386.install.in b/fp-units-i386.install.in new file mode 100644 index 00000000..f73b19e9 --- /dev/null +++ b/fp-units-i386.install.in @@ -0,0 +1,4 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libc +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/fpmkinst/*/libc.fpm +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/unixutil* diff --git a/fp-units-i386.lintian-overrides b/fp-units-i386.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-i386.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-i386.lintian-overrides.in b/fp-units-i386.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-i386.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-math.install.in b/fp-units-math.install.in new file mode 100644 index 00000000..c7619caa --- /dev/null +++ b/fp-units-math.install.in @@ -0,0 +1,6 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/gmp* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/numlib* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/proj4* [!freebsd-math] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/symbolic* +usr/share/doc/fp-units-math [!freebsd-any] diff --git a/fp-units-math.lintian-overrides b/fp-units-math.lintian-overrides new file mode 100644 index 00000000..d584c65d --- /dev/null +++ b/fp-units-math.lintian-overrides @@ -0,0 +1,5 @@ +# False positive because the first occurrence is a name of a unit, while the +# second occurrence (between brackets) is a description of the unit. +spelling-error-in-description symbolic symbolic (duplicate word) symbolic +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-math.lintian-overrides.in b/fp-units-math.lintian-overrides.in new file mode 100644 index 00000000..d584c65d --- /dev/null +++ b/fp-units-math.lintian-overrides.in @@ -0,0 +1,5 @@ +# False positive because the first occurrence is a name of a unit, while the +# second occurrence (between brackets) is a description of the unit. +spelling-error-in-description symbolic symbolic (duplicate word) symbolic +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-misc.install.in b/fp-units-misc.install.in new file mode 100644 index 00000000..df5e0304 --- /dev/null +++ b/fp-units-misc.install.in @@ -0,0 +1,28 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/aspell* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/bfd* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/bzip2* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/cdrom* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/chm* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fftw* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fpindexer* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fppkg* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/gdbint* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/iconvenc* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/jni* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libcups* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libffi* [linux-amd64] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libgc* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libmagic* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libsee* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libxml2* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/lua* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/newt* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/pthreads* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/syslog* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/tcl* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/unzip* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/users* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/utmp* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/zlib* +usr/share/doc/fp-units-misc [!freebsd-any] diff --git a/fp-units-misc.lintian-overrides b/fp-units-misc.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-misc.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-misc.lintian-overrides.in b/fp-units-misc.lintian-overrides.in new file mode 100644 index 00000000..f473cad4 --- /dev/null +++ b/fp-units-misc.lintian-overrides.in @@ -0,0 +1,4 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original +# Spelling error in variable name in object file +spelling-error-in-binary relocateable relocatable diff --git a/fp-units-multimedia.install.in b/fp-units-multimedia.install.in new file mode 100644 index 00000000..3450ee10 --- /dev/null +++ b/fp-units-multimedia.install.in @@ -0,0 +1,10 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/a52* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/dts* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libvlc* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/mad* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/modplug* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/oggvorbis* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/openal* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/sdl* +usr/share/doc/fp-units-multimedia [!freebsd-any] diff --git a/fp-units-multimedia.lintian-overrides b/fp-units-multimedia.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-multimedia.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-multimedia.lintian-overrides.in b/fp-units-multimedia.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-multimedia.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-net.install.in b/fp-units-net.install.in new file mode 100644 index 00000000..04a9de4b --- /dev/null +++ b/fp-units-net.install.in @@ -0,0 +1,15 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/dbus* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/fastcgi* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/googleapi* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/gnutls* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/httpd22* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/httpd24* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/ldap* [!freebsd-any] +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libmicrohttpd* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libcurl* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/libenet* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/openssl* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/pcap* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/zorba* [!freebsd-any] +usr/share/doc/fp-units-net [!freebsd-any] diff --git a/fp-units-net.lintian-overrides b/fp-units-net.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-net.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-net.lintian-overrides.in b/fp-units-net.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-net.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-rtl.install.in b/fp-units-rtl.install.in new file mode 100644 index 00000000..33f9cee3 --- /dev/null +++ b/fp-units-rtl.install.in @@ -0,0 +1,8 @@ +#! /usr/bin/dh-exec +usr/bin/${DEB_HOST_MULTIARCH}-fpcmkcfg-${VERSION} +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl-console* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl-extra* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl-generics* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl-objpas* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/rtl-unicode* diff --git a/fp-units-rtl.lintian-overrides b/fp-units-rtl.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-units-rtl.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-rtl.lintian-overrides.in b/fp-units-rtl.lintian-overrides.in new file mode 100644 index 00000000..2326a316 --- /dev/null +++ b/fp-units-rtl.lintian-overrides.in @@ -0,0 +1,3 @@ +fp-units-rtl${PACKAGESUFFIX}: spelling-error-in-binary */rtl/stdconvs.o ang and +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-units-wasm.install.in b/fp-units-wasm.install.in new file mode 100644 index 00000000..1416a4ec --- /dev/null +++ b/fp-units-wasm.install.in @@ -0,0 +1,5 @@ +#! /usr/bin/dh-exec +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/pastojs* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/utils-pas2js* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/webidl* +usr/share/doc/fp-units-wasm diff --git a/fp-utils.install b/fp-utils.install new file mode 100755 index 00000000..ba908402 --- /dev/null +++ b/fp-utils.install @@ -0,0 +1,4 @@ +#! /usr/bin/dh-exec +# sh-bang not really needed here, but because of the d/rules logic to make all +# install files executable +debian/fp-fix-timestamps usr/bin/ diff --git a/fp-utils.install.in b/fp-utils.install.in new file mode 100644 index 00000000..e6b2e080 --- /dev/null +++ b/fp-utils.install.in @@ -0,0 +1,48 @@ +#! /usr/bin/dh-exec +usr/bin/bin2obj-* +usr/bin/chmcmd-* +usr/bin/chmls-* +usr/bin/cldrparser-* +usr/bin/compileserver-* +usr/bin/data2inc-* +usr/bin/delp-* +usr/bin/fd2pascal-* +usr/bin/fpcjres-* +usr/bin/fpclasschart-* [!freebsd-any] +usr/bin/fpcmake-* +usr/bin/fpcsubst-* +usr/bin/fpdoc-* +usr/bin/fppkg-* +usr/bin/fprcp-* +usr/bin/grab_vcsa-* [!freebsd-any] +usr/bin/h2pas-* +usr/bin/h2paspp-* +usr/bin/ifpc-* +usr/bin/json2pas-* +usr/bin/makeskel-* [!freebsd-any] +usr/bin/mka64ins-* +usr/bin/mkarmins-* +usr/bin/mkinsadd-* +usr/bin/mkx86ins-* +usr/bin/pas2fpm-* +usr/bin/pas2jni-* +usr/bin/pas2js-* +usr/bin/pas2ut-* +usr/bin/plex-* +usr/bin/postw32-* +usr/bin/ppdep-* +usr/bin/ppudump-* +usr/bin/ppufiles-* +usr/bin/ppumove-* +usr/bin/ptop-* +usr/bin/pyacc-* +usr/bin/relpath-* +usr/bin/rmcvsdir-* +usr/bin/rstconv-* +usr/bin/unihelper-* +usr/bin/unitdiff-* [!freebsd-any] +usr/bin/webidl2pas-* +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/lexyacc/*.cod +usr/lib/${DEB_HOST_MULTIARCH}/fpc/*/*/*/utils-lexyacc* +usr/share/locale +usr/share/texmf/tex/latex/fpc-* diff --git a/fp-utils.lintian-overrides b/fp-utils.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fp-utils.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-utils.lintian-overrides.in b/fp-utils.lintian-overrides.in new file mode 100644 index 00000000..fc4ebae4 --- /dev/null +++ b/fp-utils.lintian-overrides.in @@ -0,0 +1,6 @@ +# Free pascal binaries are often statically linked. +# The Free Pascal Compiler does not properly support linking. Please +# see BTS #472304. +fp-utils${PACKAGESUFFIX}: statically-linked-binary +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fp-utils.manpages b/fp-utils.manpages new file mode 100644 index 00000000..9148f8cf --- /dev/null +++ b/fp-utils.manpages @@ -0,0 +1 @@ +debian/fp-fix-timestamps.1 diff --git a/fp-utils.manpages.in b/fp-utils.manpages.in new file mode 100644 index 00000000..b665fcd9 --- /dev/null +++ b/fp-utils.manpages.in @@ -0,0 +1,35 @@ +debian/tmp/usr/man/man1/bin2obj-${VERSION}.1 +debian/tmp/usr/man/man1/chmcmd-${VERSION}.1 +debian/tmp/usr/man/man1/chmls-${VERSION}.1 +debian/tmp/usr/man/man1/data2inc-${VERSION}.1 +debian/tmp/usr/man/man1/delp-${VERSION}.1 +debian/tmp/usr/man/man1/fd2pascal-${VERSION}.1 +debian/tmp/usr/man/man1/fpcjres-${VERSION}.1 +debian/tmp/usr/man/man1/fpclasschart-${VERSION}.1 +debian/tmp/usr/man/man1/fpcmake-${VERSION}.1 +debian/tmp/usr/man/man1/fpcsubst-${VERSION}.1 +debian/tmp/usr/man/man1/fpdoc-${VERSION}.1 +debian/tmp/usr/man/man1/fppkg-${VERSION}.1 +debian/tmp/usr/man/man1/fprcp-${VERSION}.1 +debian/tmp/usr/man/man1/grab_vcsa-${VERSION}.1 +debian/tmp/usr/man/man1/h2pas-${VERSION}.1 +debian/tmp/usr/man/man1/h2paspp-${VERSION}.1 +debian/tmp/usr/man/man1/ifpc-${VERSION}.1 +debian/tmp/usr/man/man1/makeskel-${VERSION}.1 +debian/tmp/usr/man/man1/pas2fpm-${VERSION}.1 +debian/tmp/usr/man/man1/pas2jni-${VERSION}.1 +debian/tmp/usr/man/man1/pas2ut-${VERSION}.1 +debian/tmp/usr/man/man1/plex-${VERSION}.1 +debian/tmp/usr/man/man1/postw32-${VERSION}.1 +debian/tmp/usr/man/man1/ppdep-${VERSION}.1 +debian/tmp/usr/man/man1/ppudump-${VERSION}.1 +debian/tmp/usr/man/man1/ppufiles-${VERSION}.1 +debian/tmp/usr/man/man1/ppumove-${VERSION}.1 +debian/tmp/usr/man/man1/ptop-${VERSION}.1 +debian/tmp/usr/man/man1/pyacc-${VERSION}.1 +debian/tmp/usr/man/man1/relpath-${VERSION}.1 +debian/tmp/usr/man/man1/rmcvsdir-${VERSION}.1 +debian/tmp/usr/man/man1/rstconv-${VERSION}.1 +debian/tmp/usr/man/man1/unitdiff-${VERSION}.1 +debian/tmp/usr/man/man5/fpcmake-${VERSION}.5 +debian/tmp/usr/man/man5/ptop-${VERSION}.cfg.5 diff --git a/fp-utils.postinst.in b/fp-utils.postinst.in new file mode 100644 index 00000000..060b0025 --- /dev/null +++ b/fp-utils.postinst.in @@ -0,0 +1,72 @@ +#! /bin/sh + +set -e + +FPCDIR=/usr/lib/${DEB_HOST_MULTIARCH}/fpc + +# add alternatives +update-alternatives \ + --install ${FPCDIR}/default fp-utils ${FPCDIR}/${VERSION} ${PRIORITY} \ + --slave ${FPCDIR}/lexyacc fplexyacc ${FPCDIR}/${VERSION}/lexyacc \ + --slave /usr/bin/chmcmd chmcmd /usr/bin/chmcmd-${VERSION} \ + --slave /usr/bin/chmls chmls /usr/bin/chmls-${VERSION} \ + --slave /usr/bin/ifpc ifpc /usr/bin/ifpc-${VERSION} \ + --slave /usr/bin/fppkg fppkg /usr/bin/fppkg-${VERSION} \ + --slave /usr/bin/grab_vcsa grab_vcsa /usr/bin/grab_vcsa-${VERSION} \ + --slave /usr/bin/instantfpc instantfpc /usr/bin/ifpc-${VERSION} \ + --slave /usr/bin/ppufiles ppufiles /usr/bin/ppufiles-${VERSION} \ + --slave /usr/bin/ppudump ppudump /usr/bin/ppudump-${VERSION} \ + --slave /usr/bin/ppumove ppumove /usr/bin/ppumove-${VERSION} \ + --slave /usr/bin/ppdep ppdep /usr/bin/ppdep-${VERSION} \ + --slave /usr/bin/ptop ptop /usr/bin/ptop-${VERSION} \ + --slave /usr/bin/rstconv rstconv /usr/bin/rstconv-${VERSION} \ + --slave /usr/bin/data2inc data2inc /usr/bin/data2inc-${VERSION} \ + --slave /usr/bin/bin2obj bin2obj /usr/bin/bin2obj-${VERSION} \ + --slave /usr/bin/delp delp /usr/bin/delp-${VERSION} \ + --slave /usr/bin/plex plex /usr/bin/plex-${VERSION} \ + --slave /usr/bin/pyacc pyacc /usr/bin/pyacc-${VERSION} \ + --slave /usr/bin/h2pas h2pas /usr/bin/h2pas-${VERSION} \ + --slave /usr/bin/h2paspp h2paspp /usr/bin/h2paspp-${VERSION} \ + --slave /usr/bin/postw32 postw32 /usr/bin/postw32-${VERSION} \ + --slave /usr/bin/fpclasschart fpclasschart /usr/bin/fpclasschart-${VERSION} \ + --slave /usr/bin/fpcmake fpcmake /usr/bin/fpcmake-${VERSION} \ + --slave /usr/bin/fpcsubst fpcsubst /usr/bin/fpcsubst-${VERSION} \ + --slave /usr/bin/fprcp fprcp /usr/bin/fprcp-${VERSION} \ + --slave /usr/bin/fpdoc fpdoc /usr/bin/fpdoc-${VERSION} \ + --slave /usr/bin/makeskel makeskel /usr/bin/makeskel-${VERSION} \ + --slave /usr/bin/relpath relpath /usr/bin/relpath-${VERSION} \ + --slave /usr/bin/rmcvsdir rmcvsdir /usr/bin/rmcvsdir-${VERSION} \ + --slave /usr/bin/unitdiff unitdiff /usr/bin/unitdiff-${VERSION} \ + --slave /usr/share/man/man1/chmcmd.1.gz chmcmd.1.gz /usr/share/man/man1/chmcmd-${VERSION}.1.gz \ + --slave /usr/share/man/man1/chmls.1.gz chmls.1.gz /usr/share/man/man1/chmls-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ifpc.1.gz ifpc.1.gz /usr/share/man/man1/ifpc-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fppkg.1.gz fppkg.1.gz /usr/share/man/man1/fppkg-${VERSION}.1.gz \ + --slave /usr/share/man/man1/instantfpc.1.gz instantfpc.1.gz /usr/share/man/man1/ifpc-${VERSION}.1.gz \ + --slave /usr/share/man/man1/bin2obj.1.gz bin2obj.1.gz /usr/share/man/man1/bin2obj-${VERSION}.1.gz \ + --slave /usr/share/man/man1/data2inc.1.gz data2inc.1.gz /usr/share/man/man1/data2inc-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fprcp.1.gz fprcp.1.gz /usr/share/man/man1/fprcp-${VERSION}.1.gz \ + --slave /usr/share/man/man1/h2paspp.1.gz h2paspp.1.gz /usr/share/man/man1/h2paspp-${VERSION}.1.gz \ + --slave /usr/share/man/man1/makeskel.1.gz makeskel.1.gz /usr/share/man/man1/makeskel-${VERSION}.1.gz \ + --slave /usr/share/man/man1/postw32.1.gz postw32.1.gz /usr/share/man/man1/postw32-${VERSION}.1.gz \ + --slave /usr/share/man/man1/relpath.1.gz relpath.1.gz /usr/share/man/man1/relpath-${VERSION}.1.gz \ + --slave /usr/share/man/man1/rmcvsdir.1.gz rmcvsdir.1.gz /usr/share/man/man1/rmcvsdir-${VERSION}.1.gz \ + --slave /usr/share/man/man1/unitdiff.1.gz unitdiff.1.gz /usr/share/man/man1/unitdiff-${VERSION}.1.gz \ + --slave /usr/share/man/man1/delp.1.gz delp.1.gz /usr/share/man/man1/delp-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fpcmake.1.gz fpcmake.1.gz /usr/share/man/man1/fpcmake-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fpcsubst.1.gz fpcsubst.1.gz /usr/share/man/man1/fpcsubst-${VERSION}.1.gz \ + --slave /usr/share/man/man1/h2pas.1.gz h2pas.1.gz /usr/share/man/man1/h2pas-${VERSION}.1.gz \ + --slave /usr/share/man/man1/plex.1.gz plex.1.gz /usr/share/man/man1/plex-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ppdep.1.gz ppdep.1.gz /usr/share/man/man1/ppdep-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ppudump.1.gz ppudump.1.gz /usr/share/man/man1/ppudump-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ppufiles.1.gz ppufiles.1.gz /usr/share/man/man1/ppufiles-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ppumove.1.gz ppumove.1.gz /usr/share/man/man1/ppumove-${VERSION}.1.gz \ + --slave /usr/share/man/man1/ptop.1.gz ptop.1.gz /usr/share/man/man1/ptop-${VERSION}.1.gz \ + --slave /usr/share/man/man1/pyacc.1.gz pyacc.1.gz /usr/share/man/man1/pyacc-${VERSION}.1.gz \ + --slave /usr/share/man/man1/rstconv.1.gz rstconv.1.gz /usr/share/man/man1/rstconv-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fpdoc.1.gz fpdoc.1.gz /usr/share/man/man1/fpdoc-${VERSION}.1.gz \ + --slave /usr/share/man/man1/fpclasschart.1.gz fpclasschart.1.gz /usr/share/man/man1/fpclasschart-${VERSION}.1.gz \ + --slave /usr/share/man/man5/fpcmake.5.gz fpcmake.5.gz /usr/share/man/man5/fpcmake-${VERSION}.5.gz \ + --slave /usr/share/man/man5/ptop.cfg.5.gz ptop.cfg.5.gz /usr/share/man/man5/ptop-${VERSION}.cfg.5.gz + +# Debhelper code +#DEBHELPER# diff --git a/fp-utils.prerm.in b/fp-utils.prerm.in new file mode 100644 index 00000000..e18a55ad --- /dev/null +++ b/fp-utils.prerm.in @@ -0,0 +1,12 @@ +#! /bin/sh + +set -e + +FPCDIR=/usr/lib/${DEB_HOST_MULTIARCH}/fpc + +# remove alternatives +update-alternatives \ + --remove fp-utils ${FPCDIR}/${VERSION} + +# Debhelper code +#DEBHELPER# diff --git a/fpc-depends.in b/fpc-depends.in new file mode 100755 index 00000000..ddc3c348 --- /dev/null +++ b/fpc-depends.in @@ -0,0 +1,65 @@ +#!/usr/bin/perl + +# Copyright (c) 2005 Rafael Laboissiere +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +=head1 NAME + +fpc-depends - calculates free pascal dependencies + +=cut + +use strict; +use warnings; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B [S>] + +=head1 DESCRIPTION + +fpc-depends is a debhelper-like program that is responsible for +generating the ${fpc-abi:Depends} substitutions and adding them to +substvars files. + +If you use this program, your package must build-depend on fp-utils +(>= 2.4.2-1). + + +=cut + +init (); + +foreach my $package (@{$dh{DOPACKAGES}}) { + delsubstvar($package, "fpc-abi:Depends"); + addsubstvar($package, "fpc-abi:Depends", "fpc-abi-${VERSION}"); +} + +=head1 SEE ALSO + +L + +This program is not part of debhelper. + +=head1 AUTHOR + +Torsten Werner + +Most ideas borrowed from octave-depends by Rafael Laboissiere +. + +=cut diff --git a/fpc-source.install.in b/fpc-source.install.in new file mode 100644 index 00000000..aa14a925 --- /dev/null +++ b/fpc-source.install.in @@ -0,0 +1,4 @@ +#! /usr/bin/dh-exec +usr/share/fpcsrc/*/compiler +usr/share/fpcsrc/*/packages +usr/share/fpcsrc/*/rtl diff --git a/fpc-source.links b/fpc-source.links new file mode 100755 index 00000000..c8653143 --- /dev/null +++ b/fpc-source.links @@ -0,0 +1,2 @@ +#! /usr/bin/dh-exec +/usr/share/fpcsrc/${DEB_UPSTREAM_MAIN_VERSION} /usr/share/fpcsrc/default diff --git a/fpc-source.lintian-overrides b/fpc-source.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fpc-source.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fpc-source.lintian-overrides.in b/fpc-source.lintian-overrides.in new file mode 100644 index 00000000..99d48e15 --- /dev/null +++ b/fpc-source.lintian-overrides.in @@ -0,0 +1,6 @@ +# False positive, this is a Pascal header file +fpc-source${PACKAGESUFFIX}: extra-license-file +# Spelling error in upstream license text +spelling-error-in-copyright orignal original +# Many source files are in national encoding. +national-encoding diff --git a/fpc.lintian-overrides b/fpc.lintian-overrides new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fpc.lintian-overrides @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/fpc.lintian-overrides.in b/fpc.lintian-overrides.in new file mode 100644 index 00000000..82802734 --- /dev/null +++ b/fpc.lintian-overrides.in @@ -0,0 +1,2 @@ +# Spelling error in upstream license text +spelling-error-in-copyright orignal original diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 00000000..45b55b53 --- /dev/null +++ b/gbp.conf @@ -0,0 +1,16 @@ +[DEFAULT] +pristine-tar = True +cleaner = /bin/true + +[import-orig] +filter = [ 'fpcsrc/packages/gnome1', 'fpcsrc/packages/gtk1', + 'fpcsrc/packages/imlib', 'fpcsrc/packages/fpgtk', + 'fpcsrc/utils/fpdoc/fpde', 'fpcsrc/utils/fpmc' ] + +[buildpackage] +pbuilder = True +pbuilder-options=--source-only-changes + +[dch] +git-author = True +full = True diff --git a/moveexamples b/moveexamples new file mode 100644 index 00000000..8dde6a9a --- /dev/null +++ b/moveexamples @@ -0,0 +1,71 @@ +#!/bin/sh + +set -e + +EXAMPLE_TEMP=$1 +DOC_DIR=$2 +VERSION=$3 + +move_examples() +{ + local pkgName=$1 + local pkgContent=$2 + # Make examples dir + install -d -m 755 ${DOC_DIR}/${pkgName}/${VERSION}/examples + for package in ${pkgContent} + do + EXAMPLE_TEMP_DIR="$EXAMPLE_TEMP/${package}/examples" + if [ -d "$EXAMPLE_TEMP_DIR" ]; then + echo "Moving examples of ${package}" + EXAMPLE_INSTALL_DIR="${DOC_DIR}/${pkgName}/${VERSION}/examples/${package}" + # Move dir renaming it + if [ -e "${EXAMPLE_INSTALL_DIR}" ] + then + echo "#### \"${EXAMPLE_INSTALL_DIR}\" is in the way, please remove it first ####" + exit 255 + else + mv -v -f "${EXAMPLE_TEMP_DIR}" "${EXAMPLE_INSTALL_DIR}" + # Remove empty directories: + rmdir --ignore-fail-on-non-empty "${EXAMPLE_INSTALL_DIR}" + fi + fi + DOC_TEMP_DIR="$EXAMPLE_TEMP/${package}" + if [ -d "$DOC_TEMP_DIR" ]; then + echo "Moving documentation of ${package}" + DOC_INSTALL_DIR="${DOC_DIR}/${pkgName}/${VERSION}/${package}" + # Move dir renaming it + if [ -e "${DOC_INSTALL_DIR}" ] + then + echo "#### \"${DOC_INSTALL_DIR}\" is in the way, please remove it first ####" + exit 255 + else + mv -v -f "${DOC_TEMP_DIR}" "${DOC_INSTALL_DIR}" + # Remove empty directories: + rmdir --ignore-fail-on-non-empty "${DOC_INSTALL_DIR}" + fi + fi + done + + # Remove empty directories: + rmdir --parents --ignore-fail-on-non-empty ${DOC_DIR}/${pkgName}/${VERSION}/examples +} + +echo '**** Copying examples ****' +PACKAGE_LIST='debian/'*'.install.in' + +for PACKAGE_FILE in ${PACKAGE_LIST} +do + PACKAGE_NAME=`basename "${PACKAGE_FILE}" '.install.in'` + PACKAGE_CONTENT=`grep 'usr/lib/${DEB_HOST_MULTIARCH}/fpc' "${PACKAGE_FILE}" | awk '{print $1}' | sed -e 's@.*/\([^/]\)@\1@' | sed -e 's/\*//'` + echo ' **** PACKAGE_NAME = "'${PACKAGE_NAME}'"' + echo ' **** PACKAGE_CONTENT = "'${PACKAGE_CONTENT}'"' + move_examples "${PACKAGE_NAME}" "${PACKAGE_CONTENT}" +done + +echo '**** Examples copied ****' + +if [ -d $EXAMPLE_TEMP ] ; then + echo "Example dir should be empty now or the rmdir command will fail, showing current content follows:" + ls -al $EXAMPLE_TEMP + rmdir $EXAMPLE_TEMP +fi diff --git a/orig-tar.sh b/orig-tar.sh new file mode 100755 index 00000000..3ba9bd55 --- /dev/null +++ b/orig-tar.sh @@ -0,0 +1,39 @@ +#!/bin/sh -xe + +PACKAGE_NAME=fpc +TMP_DIR=`/bin/mktemp -d -t ${PACKAGE_NAME}.XXXXXX` || exit 1 +ORIG_PATH=$(pwd) + +while test $# -gt 0 +do + case $1 in + --upstream-version) + shift + VERSION=$1 + ;; + esac + shift +done + +ORIG_SRC_DIR=${PACKAGE_NAME} +ORIG_SRC_TAR=$(readlink -m ../${PACKAGE_NAME}_${VERSION}.orig.tar.gz) +DEB_SRC_DIR=${PACKAGE_NAME}-${VERSION}+dfsg +DEB_SRC_TAR=${PACKAGE_NAME}_${VERSION}+dfsg.orig.tar.xz + +cd ${TMP_DIR} +tar -axf ${ORIG_SRC_TAR} +mv ${ORIG_SRC_DIR}* ${DEB_SRC_DIR} +cd ${DEB_SRC_DIR} +find -name Makefile.fpc -execdir sh -c 'rm $(basename {} .fpc)' ';' +find -regex '.*\.\(a\|or?\|so\.*\|ppu\|compiled\|exe\|dll\|jar\)' -delete +find -name '*.pp' -exec chmod a-x {} ';' +# https://bugs.freepascal.org/view.php?id=32288 (the fact the bug is closed +# doesn't mean the issue is resolved) +rm fpcsrc/packages/fcl-js/src/jsminifier.pp +# causing more issues than it solves +rm fpcsrc/.gitignore +cd .. +tar -acf ${DEB_SRC_TAR} ${DEB_SRC_DIR} +cd ${ORIG_PATH} +mv ${TMP_DIR}/${DEB_SRC_TAR} ../ +rm -rf ${TMP_DIR} diff --git a/patches/0-dba65567f1b2fb3fd283886b262dc72875a6360b.patch b/patches/0-dba65567f1b2fb3fd283886b262dc72875a6360b.patch new file mode 100644 index 00000000..2155af29 --- /dev/null +++ b/patches/0-dba65567f1b2fb3fd283886b262dc72875a6360b.patch @@ -0,0 +1,53 @@ +From dba65567f1b2fb3fd283886b262dc72875a6360b Mon Sep 17 00:00:00 2001 +From: svenbarth +Date: Sun, 25 Oct 2020 15:36:31 +0000 +Subject: [PATCH] * use the sizes of the floatx80 and float128 structs for + arrays having their size to avoid problems with padding on different + platforms + +git-svn-id: trunk@47198 - +(cherry picked from commit 16eb670e67cc8243cf2122e992f1cebf00cf4904) +--- + rtl/inc/ufloat128.pp | 4 ++-- + rtl/inc/ufloatx80.pp | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/fpcsrc/rtl/inc/ufloat128.pp b/fpcsrc/rtl/inc/ufloat128.pp +index 59388cc1e3..14c4339479 100644 +--- a/fpcsrc/rtl/inc/ufloat128.pp ++++ b/fpcsrc/rtl/inc/ufloat128.pp +@@ -39,11 +39,11 @@ + + procedure DumpFloat128(const f : float128); + type +- ta = packed array[0..15] of byte; ++ ta = packed array[0..SizeOf(float128)-1] of byte; + var + i : longint; + begin +- for i:=15 downto 0 do ++ for i:=SizeOf(float128)-1 downto 0 do + begin + write(hexstr(ta(f)[i],2)); + if i<15 then +diff --git a/fpcsrc/rtl/inc/ufloatx80.pp b/fpcsrc/rtl/inc/ufloatx80.pp +index 17bd822d40..7927bca19d 100644 +--- a/fpcsrc/rtl/inc/ufloatx80.pp ++++ b/fpcsrc/rtl/inc/ufloatx80.pp +@@ -39,11 +39,11 @@ + + procedure DumpFloatx80(const f : floatx80); + type +- ta = packed array[0..15] of byte; ++ ta = packed array[0..SizeOf(floatx80)-1] of byte; + var + i : longint; + begin +- for i:=15 downto 0 do ++ for i:=SizeOf(floatx80)-1 downto 0 do + begin + write(hexstr(ta(f)[i],2)); + if i<15 then +-- +GitLab + diff --git a/patches/1-3ef2ab1019a395a9392578b653958c14e19f81e0.patch b/patches/1-3ef2ab1019a395a9392578b653958c14e19f81e0.patch new file mode 100644 index 00000000..0a661d6e --- /dev/null +++ b/patches/1-3ef2ab1019a395a9392578b653958c14e19f81e0.patch @@ -0,0 +1,569 @@ +From 3ef2ab1019a395a9392578b653958c14e19f81e0 Mon Sep 17 00:00:00 2001 +From: florian +Date: Sat, 4 Jan 2020 21:54:53 +0000 +Subject: [PATCH] * cleaning up tcgsize: it makes no sense to declare every + combination and type the different vector types must be either handled in + the high level cg or by using the shuffle parameter + +git-svn-id: trunk@43860 - +(cherry picked from commit b7c6e01b03ac1d8fcedf2cfe6d150b83f83cef4a) +--- + compiler/cgbase.pas | 44 +++----- + compiler/cgobj.pas | 9 +- + compiler/defutil.pas | 16 +-- + compiler/hlcgobj.pas | 3 +- + compiler/m68k/cpubase.pas | 5 +- + compiler/x86/cgx86.pas | 223 ++++---------------------------------- + compiler/x86/cpubase.pas | 6 +- + compiler/x86/rax86.pas | 6 +- + 8 files changed, 53 insertions(+), 259 deletions(-) + +diff --git a/fpcsrc/compiler/cgbase.pas b/fpcsrc/compiler/cgbase.pas +index b9464bc5f8..82f5eee5fd 100644 +--- a/fpcsrc/compiler/cgbase.pas ++++ b/fpcsrc/compiler/cgbase.pas +@@ -168,14 +168,9 @@ interface + OS_S8, OS_S16, OS_S32, OS_S64, OS_S128, + { single, double, extended, comp, float128 } + OS_F32, OS_F64, OS_F80, OS_C64, OS_F128, +- { multi-media sizes: split in byte, word, dword, ... } +- { entities, then the signed counterparts } +- OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256, OS_M512, +- OS_MS8, OS_MS16, OS_MS32, OS_MS64, OS_MS128, OS_MS256, OS_MS512, +- { multi-media sizes: single-precision floating-point } +- OS_MF32, OS_MF128, OS_MF256, OS_MF512, +- { multi-media sizes: double-precision floating-point } +- OS_MD64, OS_MD128, OS_MD256, OS_MD512); ++ { multi-media sizes, describes only the register size but not how it is split, ++ this information must be passed separately } ++ OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256, OS_M512); + + { Register types } + TRegisterType = ( +@@ -319,12 +314,7 @@ tmmshuffle = record + { floating point values } + 4, 8, 10, 8, 16, + { multimedia values } +- 1, 2, 4, 8, 16, 32, 64, +- 1, 2, 4, 8, 16, 32, 64, +- { single-precision multimedia values } +- 4, 16, 32, 64, +- { double-precision multimedia values } +- 8, 16, 32, 64); ++ 1, 2, 4, 8, 16, 32, 64); + + tfloat2tcgsize: array[tfloattype] of tcgsize = + (OS_F32,OS_F64,OS_F80,OS_F80,OS_C64,OS_C64,OS_F128); +@@ -364,10 +354,7 @@ tmmshuffle = record + OS_8, OS_16, OS_32, OS_64, OS_128, + + OS_F32, OS_F64, OS_F80, OS_C64, OS_F128, +- OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256, OS_M512, +- OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256, OS_M512, +- OS_MF32, OS_MF128,OS_MF256,OS_MF512, +- OS_MD64, OS_MD128,OS_MD256,OS_MD512); ++ OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256, OS_M512); + + + tcgsize2signed : array[tcgsize] of tcgsize = (OS_NO, +@@ -375,10 +362,7 @@ tmmshuffle = record + OS_S8, OS_S16, OS_S32, OS_S64, OS_S128, + + OS_F32, OS_F64, OS_F80, OS_C64, OS_F128, +- OS_MS8, OS_MS16, OS_MS32, OS_MS64, OS_MS128,OS_MS256,OS_MS512, +- OS_MS8, OS_MS16, OS_MS32, OS_MS64, OS_MS128,OS_MS256,OS_MS512, +- OS_MF32, OS_MF128,OS_MF256,OS_MF512, +- OS_MD64, OS_MD128,OS_MD256,OS_MD512); ++ OS_M8, OS_M16, OS_M32, OS_M64, OS_M128, OS_M256,OS_M512); + + + tcgloc2str : array[TCGLoc] of string[12] = ( +@@ -730,13 +714,13 @@ implementation + begin + case a of + 4: +- result := OS_MF32; ++ result := OS_M32; + 16: +- result := OS_MF128; ++ result := OS_M128; + 32: +- result := OS_MF256; ++ result := OS_M256; + 64: +- result := OS_MF512; ++ result := OS_M512; + else + result := int_cgsize(a); + end; +@@ -746,13 +730,13 @@ implementation + begin + case a of + 8: +- result := OS_MD64; ++ result := OS_M64; + 16: +- result := OS_MD128; ++ result := OS_M128; + 32: +- result := OS_MD256; ++ result := OS_M256; + 64: +- result := OS_MD512; ++ result := OS_M512; + else + result := int_cgsize(a); + end; +diff --git a/fpcsrc/compiler/cgobj.pas b/fpcsrc/compiler/cgobj.pas +index 35d37a84f6..859e524295 100644 +--- a/fpcsrc/compiler/cgobj.pas ++++ b/fpcsrc/compiler/cgobj.pas +@@ -1150,8 +1150,7 @@ implementation + OS_F64, + OS_F128: + a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,mms_movescalar); +- OS_M8..OS_M128, +- OS_MS8..OS_MS128: ++ OS_M8..OS_M512: + a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,nil); + else + internalerror(2010053101); +@@ -1356,8 +1355,7 @@ implementation + OS_F64, + OS_F128: + a_loadmm_reg_ref(list,paraloc.size,paraloc.size,paraloc.register,ref,mms_movescalar); +- OS_M8..OS_M128, +- OS_MS8..OS_MS128: ++ OS_M8..OS_M512: + a_loadmm_reg_ref(list,paraloc.size,paraloc.size,paraloc.register,ref,nil); + else + internalerror(2010053102); +@@ -1413,8 +1411,7 @@ implementation + OS_F64, + OS_F128: + a_loadmm_reg_reg(list,paraloc.size,regsize,paraloc.register,reg,mms_movescalar); +- OS_M8..OS_M128, +- OS_MS8..OS_MS128: ++ OS_M8..OS_M512: + a_loadmm_reg_reg(list,paraloc.size,paraloc.size,paraloc.register,reg,nil); + else + internalerror(2010053102); +diff --git a/fpcsrc/compiler/defutil.pas b/fpcsrc/compiler/defutil.pas +index c4a70682ab..6a8af5c222 100644 +--- a/fpcsrc/compiler/defutil.pas ++++ b/fpcsrc/compiler/defutil.pas +@@ -1551,19 +1551,19 @@ implementation + case TFloatDef(tarraydef(def).elementdef).floattype of + s32real: + case def.size of +- 4: result:=OS_MF32; +- 16: result:=OS_MF128; +- 32: result:=OS_MF256; +- 64: result:=OS_MF512; ++ 4: result:=OS_M32; ++ 16: result:=OS_M128; ++ 32: result:=OS_M256; ++ 64: result:=OS_M512; + else + internalerror(2017121400); + end; + s64real: + case def.size of +- 8: result:=OS_MD64; +- 16: result:=OS_MD128; +- 32: result:=OS_MD256; +- 64: result:=OS_MD512; ++ 8: result:=OS_M64; ++ 16: result:=OS_M128; ++ 32: result:=OS_M256; ++ 64: result:=OS_M512; + else + internalerror(2017121401); + end; +diff --git a/fpcsrc/compiler/hlcgobj.pas b/fpcsrc/compiler/hlcgobj.pas +index 5c1e87b06c..b274985eca 100644 +--- a/fpcsrc/compiler/hlcgobj.pas ++++ b/fpcsrc/compiler/hlcgobj.pas +@@ -1066,8 +1066,7 @@ implementation + OS_F64, + OS_F128: + a_loadmm_ref_reg(list,location^.def,location^.def,tmpref,location^.register,mms_movescalar); +- OS_M8..OS_M128, +- OS_MS8..OS_MS128: ++ OS_M8..OS_M128: + a_loadmm_ref_reg(list,location^.def,location^.def,tmpref,location^.register,nil); + else + internalerror(2010053101); +diff --git a/fpcsrc/compiler/m68k/cpubase.pas b/fpcsrc/compiler/m68k/cpubase.pas +index 1e33be9975..a3af00c20d 100644 +--- a/fpcsrc/compiler/m68k/cpubase.pas ++++ b/fpcsrc/compiler/m68k/cpubase.pas +@@ -343,10 +343,7 @@ + tcgsize2opsize: Array[tcgsize] of topsize = + (S_NO,S_B,S_W,S_L,S_L,S_NO,S_B,S_W,S_L,S_L,S_NO, + S_FS,S_FD,S_FX,S_NO,S_NO, +- S_NO,S_NO,S_NO,S_NO,S_NO,S_NO, +- S_NO,S_NO,S_NO,S_NO,S_NO,S_NO, +- S_NO,S_NO,S_NO,S_NO,S_NO, +- S_NO,S_NO,S_NO,S_NO,S_NO); ++ S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO); + + function is_calljmp(o:tasmop):boolean; + +diff --git a/fpcsrc/compiler/x86/cgx86.pas b/fpcsrc/compiler/x86/cgx86.pas +index 4f9bf6d576..97aeb4b39f 100644 +--- a/fpcsrc/compiler/x86/cgx86.pas ++++ b/fpcsrc/compiler/x86/cgx86.pas +@@ -159,26 +159,17 @@ tcgx86 = class(tcg) + TCGSize2OpSize: Array[tcgsize] of topsize = + (S_NO,S_B,S_W,S_L,S_Q,S_XMM,S_B,S_W,S_L,S_Q,S_XMM, + S_FS,S_FL,S_FX,S_IQ,S_FXX, +- S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM, +- S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM); ++ S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM); + {$elseif defined(i386)} + TCGSize2OpSize: Array[tcgsize] of topsize = + (S_NO,S_B,S_W,S_L,S_L,S_T,S_B,S_W,S_L,S_L,S_L, + S_FS,S_FL,S_FX,S_IQ,S_FXX, +- S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM, +- S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM); ++ S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM); + {$elseif defined(i8086)} + TCGSize2OpSize: Array[tcgsize] of topsize = + (S_NO,S_B,S_W,S_W,S_W,S_T,S_B,S_W,S_W,S_W,S_W, + S_FS,S_FL,S_FX,S_IQ,S_FXX, +- S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM, +- S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM, +- S_NO,S_XMM,S_YMM,S_ZMM); ++ S_NO,S_NO,S_NO,S_MD,S_XMM,S_YMM,S_ZMM); + {$endif} + + {$ifndef NOTARGETWIN} +@@ -295,17 +286,11 @@ tcgx86 = class(tcg) + OS_M64: + result:=rg[R_MMREGISTER].getregister(list,R_SUBQ); + OS_M128, +- OS_F128, +- OS_MF128, +- OS_MD128: ++ OS_F128: + result:=rg[R_MMREGISTER].getregister(list,R_SUBMMX); { R_SUBMMWHOLE seems a bit dangerous and ambiguous, so changed to R_SUBMMX. [Kit] } +- OS_M256, +- OS_MF256, +- OS_MD256: ++ OS_M256: + result:=rg[R_MMREGISTER].getregister(list,R_SUBMMY); +- OS_M512, +- OS_MF512, +- OS_MD512: ++ OS_M512: + result:=rg[R_MMREGISTER].getregister(list,R_SUBMMZ); + else + internalerror(200506041); +@@ -1374,14 +1359,12 @@ tcgx86 = class(tcg) + if fromsize=tosize then + { needs correct size in case of spilling } + case fromsize of +- OS_F32, +- OS_MF128: ++ OS_F32: + if UseAVX then + instr:=taicpu.op_reg_reg(A_VMOVAPS,S_NO,reg1,reg2) + else + instr:=taicpu.op_reg_reg(A_MOVAPS,S_NO,reg1,reg2); +- OS_F64, +- OS_MD128: ++ OS_F64: + if UseAVX then + instr:=taicpu.op_reg_reg(A_VMOVAPD,S_NO,reg1,reg2) + else +@@ -1391,27 +1374,13 @@ tcgx86 = class(tcg) + instr:=taicpu.op_reg_reg(A_VMOVQ,S_NO,reg1,reg2) + else + instr:=taicpu.op_reg_reg(A_MOVQ,S_NO,reg1,reg2); +- OS_M128, OS_MS128: ++ OS_M128: + if UseAVX then + instr:=taicpu.op_reg_reg(A_VMOVDQA,S_NO,reg1,reg2) + else + instr:=taicpu.op_reg_reg(A_MOVDQA,S_NO,reg1,reg2); +- OS_MF256, +- OS_MF512: +- if UseAVX then +- instr:=taicpu.op_reg_reg(A_VMOVAPS,S_NO,reg1,reg2) +- else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012931); +- OS_MD256, +- OS_MD512: +- if UseAVX then +- instr:=taicpu.op_reg_reg(A_VMOVAPD,S_NO,reg1,reg2) +- else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012932); +- OS_M256, OS_MS256, +- OS_M512, OS_MS512: ++ OS_M256, ++ OS_M512: + if UseAVX then + instr:=taicpu.op_reg_reg(A_VMOVDQA,S_NO,reg1,reg2) + else +@@ -1496,39 +1465,7 @@ tcgx86 = class(tcg) + op := A_VMOVQ + else + op := A_MOVQ; +- OS_MF128: +- { Use XMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end +- else +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_MOVAPS +- else +- op := A_MOVUPS +- end; +- OS_MD128: +- { Use XMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end +- else +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_MOVAPD +- else +- op := A_MOVUPD +- end; +- OS_M128, OS_MS128: ++ OS_M128: + { Use XMM integer transfer } + if UseAVX then + begin +@@ -1542,33 +1479,9 @@ tcgx86 = class(tcg) + if GetRefAlignment(tmpref) = 16 then + op := A_MOVDQA + else +- op := A_MOVDQU ++ op := A_MOVDQU; + end; +- OS_MF256: +- { Use YMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 32 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end +- else +- { SSE doesn't support 256-bit vectors } +- InternalError(2018012934); +- OS_MD256: +- { Use YMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 32 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end +- else +- { SSE doesn't support 256-bit vectors } +- InternalError(2018012935); +- OS_M256, OS_MS256: ++ OS_M256: + { Use YMM integer transfer } + if UseAVX then + begin +@@ -1579,32 +1492,8 @@ tcgx86 = class(tcg) + end + else + { SSE doesn't support 256-bit vectors } +- InternalError(2018012936); +- OS_MF512: +- { Use ZMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 64 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end +- else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012937); +- OS_MD512: +- { Use ZMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 64 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end +- else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012938); +- OS_M512, OS_MS512: ++ Internalerror(2020010401); ++ OS_M512: + { Use ZMM integer transfer } + if UseAVX then + begin +@@ -1670,37 +1559,7 @@ tcgx86 = class(tcg) + op := A_VMOVQ + else + op := A_MOVQ; +- OS_MF128: +- { Use XMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end else +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_MOVAPS +- else +- op := A_MOVUPS +- end; +- OS_MD128: +- { Use XMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end else +- begin +- if GetRefAlignment(tmpref) = 16 then +- op := A_MOVAPD +- else +- op := A_MOVUPD +- end; +- OS_M128, OS_MS128: ++ OS_M128: + { Use XMM integer transfer } + if UseAVX then + begin +@@ -1715,29 +1574,7 @@ tcgx86 = class(tcg) + else + op := A_MOVDQU + end; +- OS_MF256: +- { Use XMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 32 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end else +- { SSE doesn't support 256-bit vectors } +- InternalError(2018012940); +- OS_MD256: +- { Use XMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 32 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end else +- { SSE doesn't support 256-bit vectors } +- InternalError(2018012941); +- OS_M256, OS_MS256: ++ OS_M256: + { Use XMM integer transfer } + if UseAVX then + begin +@@ -1748,29 +1585,7 @@ tcgx86 = class(tcg) + end else + { SSE doesn't support 256-bit vectors } + InternalError(2018012942); +- OS_MF512: +- { Use XMM transfer of packed singles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 64 then +- op := A_VMOVAPS +- else +- op := A_VMOVUPS +- end else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012943); +- OS_MD512: +- { Use XMM transfer of packed doubles } +- if UseAVX then +- begin +- if GetRefAlignment(tmpref) = 64 then +- op := A_VMOVAPD +- else +- op := A_VMOVUPD +- end else +- { SSE doesn't support 512-bit vectors } +- InternalError(2018012944); +- OS_M512, OS_MS512: ++ OS_M512: + { Use XMM integer transfer } + if UseAVX then + begin +diff --git a/fpcsrc/compiler/x86/cpubase.pas b/fpcsrc/compiler/x86/cpubase.pas +index b176657d5d..a38eab9ddd 100644 +--- a/fpcsrc/compiler/x86/cpubase.pas ++++ b/fpcsrc/compiler/x86/cpubase.pas +@@ -447,11 +447,11 @@ implementation + else + internalerror(2009071902); + end; +- OS_M128,OS_MS128,OS_MF128,OS_MD128: ++ OS_M128: + cgsize2subreg:=R_SUBMMX; +- OS_M256,OS_MS256,OS_MF256,OS_MD256: ++ OS_M256: + cgsize2subreg:=R_SUBMMY; +- OS_M512,OS_MS512,OS_MF512,OS_MD512: ++ OS_M512: + cgsize2subreg:=R_SUBMMZ; + OS_NO: + { error message should have been thrown already before, so avoid only +diff --git a/fpcsrc/compiler/x86/rax86.pas b/fpcsrc/compiler/x86/rax86.pas +index b40ac83f95..705d06a135 100644 +--- a/fpcsrc/compiler/x86/rax86.pas ++++ b/fpcsrc/compiler/x86/rax86.pas +@@ -1288,10 +1288,12 @@ function Tx86Instruction.ConcatInstruction(p : TAsmList) : tai; + asize:=OT_BITS64; + OS_F80 : + asize:=OT_BITS80; +- OS_128,OS_M128,OS_MS128: ++ OS_128,OS_M128: + asize := OT_BITS128; +- OS_M256,OS_MS256: ++ OS_M256: + asize := OT_BITS256; ++ OS_M512: ++ asize := OT_BITS512; + end; + if asize<>0 then + ai.oper[i-1]^.ot:=(ai.oper[i-1]^.ot and not OT_SIZE_MASK) or asize; +-- +GitLab + diff --git a/patches/2-28b2b299da00443c49e92d7f5fe4d4a2d0c1a557.patch b/patches/2-28b2b299da00443c49e92d7f5fe4d4a2d0c1a557.patch new file mode 100644 index 00000000..c91cd956 --- /dev/null +++ b/patches/2-28b2b299da00443c49e92d7f5fe4d4a2d0c1a557.patch @@ -0,0 +1,108 @@ +From 28b2b299da00443c49e92d7f5fe4d4a2d0c1a557 Mon Sep 17 00:00:00 2001 +From: Jonas Maebe +Date: Fri, 1 May 2020 13:02:45 +0000 +Subject: [PATCH] * ppc64le: fix storing homogeneous 64 bit float parameters + in case they are split over just FPU registers and memory (related to + mantis #36934) + +git-svn-id: trunk@45204 - +(cherry picked from commit 05923af386db5572a68ab13f0b908c8c96e7831a) +--- + compiler/powerpc64/cpupara.pas | 7 ++-- + tests/webtbs/tw36934a.pp | 65 ++++++++++++++++++++++++++++++++++ + 3 files changed, 69 insertions(+), 6 deletions(-) + create mode 100644 tests/webtbs/tw36934a.pp + +diff --git a/fpcsrc/compiler/powerpc64/cpupara.pas b/fpcsrc/compiler/powerpc64/cpupara.pas +index 5da3edf3fd..ed1f666ada 100644 +--- a/fpcsrc/compiler/powerpc64/cpupara.pas ++++ b/fpcsrc/compiler/powerpc64/cpupara.pas +@@ -636,10 +636,11 @@ if (paradef.typ = recorddef) then begin + if possible (only possible in case of single precision floats, because + there are more fprs than gprs for parameter passing) } + if assigned(alllocdef) and +- (tcgsize2size[paracgsize]=4) and + (loc=LOC_FPUREGISTER) and +- (nextfloatreg=RS_F13) and +- (paralen>4) then ++ (((nextfloatreg=RS_F13) and ++ (tcgsize2size[paracgsize]=4) and ++ (paralen>4)) or ++ (nextfloatreg>RS_F13)) then + begin + loc:=LOC_REGISTER; + paracgsize:=OS_64; +diff --git a/fpcsrc/tests/webtbs/tw36934a.pp b/fpcsrc/tests/webtbs/tw36934a.pp +new file mode 100644 +index 0000000000..90ffc7bbc3 +--- /dev/null ++++ b/fpcsrc/tests/webtbs/tw36934a.pp +@@ -0,0 +1,65 @@ ++type ++ TPointF = record ++ x,y: double; ++ end; ++ ++procedure test(pt1, pt2, pt3, ++ pt4: TPointF; texture: tobject; tex1, tex2, tex3, tex4: TPointF); ++begin ++ if pt1.x<>1.0 then ++ halt(1); ++ if pt1.y<>2.0 then ++ halt(2); ++ if pt2.x<>3.0 then ++ halt(3); ++ if pt2.y<>4.0 then ++ halt(4); ++ if pt3.x<>5.0 then ++ halt(5); ++ if pt3.y<>6.0 then ++ halt(6); ++ if pt4.x<>7.0 then ++ halt(7); ++ if pt4.y<>8.0 then ++ halt(8); ++ if texture<>nil then ++ halt(9); ++ if tex1.x<>9.0 then ++ halt(9); ++ if tex1.y<>10.0 then ++ halt(10); ++ if tex2.x<>11.0 then ++ halt(11); ++ if tex2.y<>12.0 then ++ halt(12); ++ if tex3.x<>13.0 then ++ halt(13); ++ if tex3.y<>14.0 then ++ halt(14); ++ if tex4.x<>15.0 then ++ halt(15); ++ if tex4.y<>16.0 then ++ halt(16); ++end; ++ ++var ++ p1,p2,p3,p4,t1,t2,t3,t4: tpointf; ++begin ++ p1.x:=1.0; ++ p1.y:=2.0; ++ p2.x:=3.0; ++ p2.y:=4.0; ++ p3.x:=5.0; ++ p3.y:=6.0; ++ p4.x:=7.0; ++ p4.y:=8.0; ++ t1.x:=9.0; ++ t1.y:=10.0; ++ t2.x:=11.0; ++ t2.y:=12.0; ++ t3.x:=13.0; ++ t3.y:=14.0; ++ t4.x:=15.0; ++ t4.y:=16.0; ++ test(p1,p2,p3,p4,nil,t1,t2,t3,t4); ++end. +-- +GitLab + diff --git a/patches/3-8a31764a7b14c47cbd51abd25672d43aaba8b6b9.patch b/patches/3-8a31764a7b14c47cbd51abd25672d43aaba8b6b9.patch new file mode 100644 index 00000000..d3bfc60e --- /dev/null +++ b/patches/3-8a31764a7b14c47cbd51abd25672d43aaba8b6b9.patch @@ -0,0 +1,195 @@ +From 8a31764a7b14c47cbd51abd25672d43aaba8b6b9 Mon Sep 17 00:00:00 2001 +From: Jonas Maebe +Date: Fri, 1 May 2020 13:02:48 +0000 +Subject: [PATCH] * support floating point parameters split over multiple + locations, including integer registers, for homogeneous records/arrays on + ppc64le (related to mantis #36934) + +git-svn-id: trunk@45205 - +(cherry picked from commit 722ad1ff7b1f0ba015494a40ed282c606cbc1148) +--- + compiler/cgobj.pas | 93 +++++++++++++++++++++------------------- + tests/webtbs/tw36934b.pp | 59 +++++++++++++++++++++++++ + 2 files changed, 109 insertions(+), 43 deletions(-) + create mode 100644 tests/webtbs/tw36934b.pp + +diff --git a/fpcsrc/compiler/cgobj.pas b/fpcsrc/compiler/cgobj.pas +index 859e524295..ecbd68f5b1 100644 +--- a/fpcsrc/compiler/cgobj.pas ++++ b/fpcsrc/compiler/cgobj.pas +@@ -1158,7 +1158,7 @@ implementation + end; + LOC_FPUREGISTER,LOC_CFPUREGISTER: + begin +- a_loadfpu_ref_reg(list,size,location^.size,tmpref,location^.register); ++ a_loadfpu_ref_reg(list,location^.size,location^.size,tmpref,location^.register); + end + else + internalerror(2010053111); +@@ -1880,49 +1880,56 @@ implementation + + procedure tcg.a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const cgpara : TCGPara); + var +- href : treference; +- hsize: tcgsize; +- paraloc: PCGParaLocation; ++ srcref, ++ href : treference; ++ hsize: tcgsize; ++ paraloc: PCGParaLocation; ++ sizeleft: tcgint; + begin +- case cgpara.location^.loc of +- LOC_FPUREGISTER,LOC_CFPUREGISTER: +- begin +- paramanager.alloccgpara(list,cgpara); +- paraloc:=cgpara.location; +- href:=ref; +- while assigned(paraloc) do +- begin +- if not(paraloc^.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER]) then +- internalerror(2015031501); +- a_loadfpu_ref_reg(list,paraloc^.size,paraloc^.size,href,paraloc^.register); +- inc(href.offset,tcgsize2size[paraloc^.size]); +- paraloc:=paraloc^.next; +- end; +- end; +- LOC_REFERENCE,LOC_CREFERENCE: +- begin +- cgpara.check_simple_location; +- reference_reset_base(href,cgpara.location^.reference.index,cgpara.location^.reference.offset,ctempposinvalid,cgpara.alignment,[]); +- { concatcopy should choose the best way to copy the data } +- g_concatcopy(list,ref,href,tcgsize2size[size]); +- end; +- LOC_REGISTER,LOC_CREGISTER: +- begin +- { force integer size } +- hsize:=int_cgsize(tcgsize2size[size]); +-{$ifndef cpu64bitalu} +- if (hsize in [OS_S64,OS_64]) then +- cg64.a_load64_ref_cgpara(list,ref,cgpara) +- else +-{$endif not cpu64bitalu} +- begin +- cgpara.check_simple_location; +- a_load_ref_cgpara(list,hsize,ref,cgpara) +- end; +- end +- else +- internalerror(200402201); +- end; ++ sizeleft:=cgpara.intsize; ++ paraloc:=cgpara.location; ++ paramanager.alloccgpara(list,cgpara); ++ srcref:=ref; ++ repeat ++ case paraloc^.loc of ++ LOC_FPUREGISTER,LOC_CFPUREGISTER: ++ begin ++ { force fpu size } ++ hsize:=int_float_cgsize(tcgsize2size[paraloc^.size]); ++ a_loadfpu_ref_reg(list,hsize,hsize,srcref,paraloc^.register); ++ end; ++ LOC_REFERENCE,LOC_CREFERENCE: ++ begin ++ if assigned(paraloc^.next) then ++ internalerror(2020050101); ++ reference_reset_base(href,paraloc^.reference.index,paraloc^.reference.offset,ctempposinvalid,newalignment(cgpara.alignment,cgpara.intsize-sizeleft),[]); ++ { concatcopy should choose the best way to copy the data } ++ g_concatcopy(list,srcref,href,sizeleft); ++ end; ++ LOC_REGISTER,LOC_CREGISTER: ++ begin ++ { force integer size } ++ hsize:=int_cgsize(tcgsize2size[paraloc^.size]); ++ {$ifndef cpu64bitalu} ++ if (hsize in [OS_S64,OS_64]) then ++ begin ++ { if this is not a simple location, we'll have to add support to cg64 to load parts of a cgpara } ++ cgpara.check_simple_location; ++ cg64.a_load64_ref_cgpara(list,srcref,cgpara) ++ end ++ else ++ {$endif not cpu64bitalu} ++ begin ++ a_load_ref_reg(list,hsize,hsize,srcref,paraloc^.register) ++ end; ++ end ++ else ++ internalerror(200402201); ++ end; ++ inc(srcref.offset,tcgsize2size[paraloc^.size]); ++ dec(sizeleft,tcgsize2size[paraloc^.size]); ++ paraloc:=paraloc^.next; ++ until not assigned(paraloc); + end; + + +diff --git a/fpcsrc/tests/webtbs/tw36934b.pp b/fpcsrc/tests/webtbs/tw36934b.pp +new file mode 100644 +index 0000000000..4787ee083f +--- /dev/null ++++ b/fpcsrc/tests/webtbs/tw36934b.pp +@@ -0,0 +1,59 @@ ++type ++ TPointF = record ++ x,y,z,v,u: single; ++ end; ++ ++procedure test(pt1, pt2, pt3: TPointF); ++begin ++ if pt1.x<>1.0 then ++ halt(1); ++ if pt1.y<>2.0 then ++ halt(2); ++ if pt1.z<>3.0 then ++ halt(3); ++ if pt1.u<>4.0 then ++ halt(4); ++ if pt1.v<>5.0 then ++ halt(5); ++ if pt2.x<>6.0 then ++ halt(6); ++ if pt2.y<>7.0 then ++ halt(7); ++ if pt2.z<>8.0 then ++ halt(8); ++ if pt2.u<>9.0 then ++ halt(9); ++ if pt2.v<>10.0 then ++ halt(10); ++ if pt3.x<>11.0 then ++ halt(11); ++ if pt3.y<>12.0 then ++ halt(12); ++ if pt3.z<>13.0 then ++ halt(13); ++ if pt3.u<>14.0 then ++ halt(14); ++ if pt3.v<>15.0 then ++ halt(15); ++end; ++ ++var ++ p1,p2,p3,p4,t1,t2,t3,t4: tpointf; ++begin ++ p1.x:=1.0; ++ p1.y:=2.0; ++ p1.z:=3.0; ++ p1.u:=4.0; ++ p1.v:=5.0; ++ p2.x:=6.0; ++ p2.y:=7.0; ++ p2.z:=8.0; ++ p2.u:=9.0; ++ p2.v:=10.0; ++ p3.x:=11.0; ++ p3.y:=12.0; ++ p3.z:=13.0; ++ p3.u:=14.0; ++ p3.v:=15.0; ++ test(p1,p2,p3); ++end. +-- +GitLab + diff --git a/patches/4-1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07.patch b/patches/4-1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07.patch new file mode 100644 index 00000000..d3aaab40 --- /dev/null +++ b/patches/4-1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07.patch @@ -0,0 +1,376 @@ +From 1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07 Mon Sep 17 00:00:00 2001 +From: Jonas Maebe +Date: Sat, 2 May 2020 13:17:21 +0000 +Subject: [PATCH] * don't convert the fpu parameters size from tcgsize -> int + -> float_tcgsize if not required, to avoid translating OS_C64 into OS_F64 + (fix for x86 test failures after r45205) + +git-svn-id: trunk@45221 - +(cherry picked from commit 3f6ad30b6936bb215d97105bef9824abbaf0412c) +--- + compiler/cgbase.pas | 23 +++- + compiler/cgobj.pas | 281 +++++++++++++++++++++++--------------------- + 2 files changed, 171 insertions(+), 133 deletions(-) + +diff --git a/fpcsrc/compiler/cgbase.pas b/fpcsrc/compiler/cgbase.pas +index 82f5eee5fd..77ebf5f502 100644 +--- a/fpcsrc/compiler/cgbase.pas ++++ b/fpcsrc/compiler/cgbase.pas +@@ -433,10 +433,12 @@ tmmshuffle = record + the source } + procedure removeshuffles(var shuffle : tmmshuffle); + ++ function is_float_cgsize(size: tcgsize): boolean;{$ifdef USEINLINE}inline;{$endif} ++ + implementation + + uses +- verbose; ++ cutils,verbose; + + {****************************************************************************** + tsuperregisterworklist +@@ -815,6 +817,25 @@ implementation + end; + + ++ function is_float_cgsize(size: tcgsize): boolean;{$ifdef USEINLINE}inline;{$endif} ++ begin ++ result:=size in [OS_F32..OS_F128]; ++ end; ++ ++ ++ procedure Initmms(var p : pmmshuffle;len : ShortInt); ++ var ++ i : Integer; ++ begin ++ Getmem(p,sizeof(tmmshuffle)+(max(len,0)-1)*2); ++ p^.len:=len; ++ for i:=1 to len do ++{$push} ++{$R-} ++ p^.shuffles[i]:=i; ++{$pop} ++ end; ++ + initialization + new(mms_movescalar); + mms_movescalar^.len:=0; +diff --git a/fpcsrc/compiler/cgobj.pas b/fpcsrc/compiler/cgobj.pas +index ecbd68f5b1..b286f8ba12 100644 +--- a/fpcsrc/compiler/cgobj.pas ++++ b/fpcsrc/compiler/cgobj.pas +@@ -1029,144 +1029,151 @@ implementation + location: pcgparalocation; + orgsizeleft, + sizeleft: tcgint; ++ usesize: tcgsize; + reghasvalue: boolean; + begin + location:=cgpara.location; + tmpref:=r; + sizeleft:=cgpara.intsize; +- while assigned(location) do +- begin +- paramanager.allocparaloc(list,location); +- case location^.loc of +- LOC_REGISTER,LOC_CREGISTER: +- begin +- { Parameter locations are often allocated in multiples of +- entire registers. If a parameter only occupies a part of +- such a register (e.g. a 16 bit int on a 32 bit +- architecture), the size of this parameter can only be +- determined by looking at the "size" parameter of this +- method -> if the size parameter is <= sizeof(aint), then +- we check that there is only one parameter location and +- then use this "size" to load the value into the parameter +- location } +- if (size<>OS_NO) and +- (tcgsize2size[size]<=sizeof(aint)) then +- begin +- cgpara.check_simple_location; +- a_load_ref_reg(list,size,location^.size,tmpref,location^.register); +- if location^.shiftval<0 then +- a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); +- end +- { there's a lot more data left, and the current paraloc's +- register is entirely filled with part of that data } +- else if (sizeleft>sizeof(aint)) then +- begin +- a_load_ref_reg(list,location^.size,location^.size,tmpref,location^.register); +- end +- { we're at the end of the data, and it can be loaded into +- the current location's register with a single regular +- load } +- else if sizeleft in [1,2,4,8] then +- begin +- a_load_ref_reg(list,int_cgsize(sizeleft),location^.size,tmpref,location^.register); +- if location^.shiftval<0 then +- a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); +- end +- { we're at the end of the data, and we need multiple loads +- to get it in the register because it's an irregular size } +- else +- begin +- { should be the last part } +- if assigned(location^.next) then +- internalerror(2010052907); +- { load the value piecewise to get it into the register } +- orgsizeleft:=sizeleft; +- reghasvalue:=false; ++ repeat ++ paramanager.allocparaloc(list,location); ++ case location^.loc of ++ LOC_REGISTER,LOC_CREGISTER: ++ begin ++ { Parameter locations are often allocated in multiples of ++ entire registers. If a parameter only occupies a part of ++ such a register (e.g. a 16 bit int on a 32 bit ++ architecture), the size of this parameter can only be ++ determined by looking at the "size" parameter of this ++ method -> if the size parameter is <= sizeof(aint), then ++ we check that there is only one parameter location and ++ then use this "size" to load the value into the parameter ++ location } ++ if (size<>OS_NO) and ++ (tcgsize2size[size]<=sizeof(aint)) then ++ begin ++ cgpara.check_simple_location; ++ a_load_ref_reg(list,size,location^.size,tmpref,location^.register); ++ if location^.shiftval<0 then ++ a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); ++ end ++ { there's a lot more data left, and the current paraloc's ++ register is entirely filled with part of that data } ++ else if (sizeleft>sizeof(aint)) then ++ begin ++ a_load_ref_reg(list,location^.size,location^.size,tmpref,location^.register); ++ end ++ { we're at the end of the data, and it can be loaded into ++ the current location's register with a single regular ++ load } ++ else if sizeleft in [1,2,4,8] then ++ begin ++ a_load_ref_reg(list,int_cgsize(sizeleft),location^.size,tmpref,location^.register); ++ if location^.shiftval<0 then ++ a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); ++ end ++ { we're at the end of the data, and we need multiple loads ++ to get it in the register because it's an irregular size } ++ else ++ begin ++ { should be the last part } ++ if assigned(location^.next) then ++ internalerror(2010052907); ++ { load the value piecewise to get it into the register } ++ orgsizeleft:=sizeleft; ++ reghasvalue:=false; + {$ifdef cpu64bitalu} +- if sizeleft>=4 then +- begin +- a_load_ref_reg(list,OS_32,location^.size,tmpref,location^.register); +- dec(sizeleft,4); +- if target_info.endian=endian_big then +- a_op_const_reg(list,OP_SHL,location^.size,sizeleft*8,location^.register); +- inc(tmpref.offset,4); +- reghasvalue:=true; +- end; ++ if sizeleft>=4 then ++ begin ++ a_load_ref_reg(list,OS_32,location^.size,tmpref,location^.register); ++ dec(sizeleft,4); ++ if target_info.endian=endian_big then ++ a_op_const_reg(list,OP_SHL,location^.size,sizeleft*8,location^.register); ++ inc(tmpref.offset,4); ++ reghasvalue:=true; ++ end; + {$endif cpu64bitalu} +- if sizeleft>=2 then +- begin +- tmpreg:=getintregister(list,location^.size); +- a_load_ref_reg(list,OS_16,location^.size,tmpref,tmpreg); +- dec(sizeleft,2); +- if reghasvalue then +- begin +- if target_info.endian=endian_big then +- a_op_const_reg(list,OP_SHL,location^.size,sizeleft*8,tmpreg) +- else +- a_op_const_reg(list,OP_SHL,location^.size,(orgsizeleft-(sizeleft+2))*8,tmpreg); +- a_op_reg_reg(list,OP_OR,location^.size,tmpreg,location^.register); +- end +- else +- begin +- if target_info.endian=endian_big then +- a_op_const_reg_reg(list,OP_SHL,location^.size,sizeleft*8,tmpreg,location^.register) +- else +- a_load_reg_reg(list,location^.size,location^.size,tmpreg,location^.register); +- end; +- inc(tmpref.offset,2); +- reghasvalue:=true; +- end; +- if sizeleft=1 then +- begin +- tmpreg:=getintregister(list,location^.size); +- a_load_ref_reg(list,OS_8,location^.size,tmpref,tmpreg); +- dec(sizeleft,1); +- if reghasvalue then +- begin +- if target_info.endian=endian_little then +- a_op_const_reg(list,OP_SHL,location^.size,(orgsizeleft-(sizeleft+1))*8,tmpreg); +- a_op_reg_reg(list,OP_OR,location^.size,tmpreg,location^.register) +- end +- else +- a_load_reg_reg(list,location^.size,location^.size,tmpreg,location^.register); +- inc(tmpref.offset); +- end; +- if location^.shiftval<0 then +- a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); +- { the loop will already adjust the offset and sizeleft } +- dec(tmpref.offset,orgsizeleft); +- sizeleft:=orgsizeleft; +- end; +- end; +- LOC_REFERENCE,LOC_CREFERENCE: +- begin +- reference_reset_base(ref,location^.reference.index,location^.reference.offset,ctempposinvalid,newalignment(cgpara.alignment,cgpara.intsize-sizeleft),[]); +- a_load_ref_cgparalocref(list,size,sizeleft,tmpref,ref,cgpara,location); +- end; +- LOC_MMREGISTER,LOC_CMMREGISTER: +- begin +- case location^.size of +- OS_F32, +- OS_F64, +- OS_F128: +- a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,mms_movescalar); +- OS_M8..OS_M512: +- a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,nil); +- else +- internalerror(2010053101); ++ if sizeleft>=2 then ++ begin ++ tmpreg:=getintregister(list,location^.size); ++ a_load_ref_reg(list,OS_16,location^.size,tmpref,tmpreg); ++ dec(sizeleft,2); ++ if reghasvalue then ++ begin ++ if target_info.endian=endian_big then ++ a_op_const_reg(list,OP_SHL,location^.size,sizeleft*8,tmpreg) ++ else ++ a_op_const_reg(list,OP_SHL,location^.size,(orgsizeleft-(sizeleft+2))*8,tmpreg); ++ a_op_reg_reg(list,OP_OR,location^.size,tmpreg,location^.register); ++ end ++ else ++ begin ++ if target_info.endian=endian_big then ++ a_op_const_reg_reg(list,OP_SHL,location^.size,sizeleft*8,tmpreg,location^.register) ++ else ++ a_load_reg_reg(list,location^.size,location^.size,tmpreg,location^.register); ++ end; ++ inc(tmpref.offset,2); ++ reghasvalue:=true; ++ end; ++ if sizeleft=1 then ++ begin ++ tmpreg:=getintregister(list,location^.size); ++ a_load_ref_reg(list,OS_8,location^.size,tmpref,tmpreg); ++ dec(sizeleft,1); ++ if reghasvalue then ++ begin ++ if target_info.endian=endian_little then ++ a_op_const_reg(list,OP_SHL,location^.size,(orgsizeleft-(sizeleft+1))*8,tmpreg); ++ a_op_reg_reg(list,OP_OR,location^.size,tmpreg,location^.register) ++ end ++ else ++ a_load_reg_reg(list,location^.size,location^.size,tmpreg,location^.register); ++ inc(tmpref.offset); ++ end; ++ if location^.shiftval<0 then ++ a_op_const_reg(list,OP_SHL,location^.size,-location^.shiftval,location^.register); ++ { the loop will already adjust the offset and sizeleft } ++ dec(tmpref.offset,orgsizeleft); ++ sizeleft:=orgsizeleft; + end; +- end; +- LOC_FPUREGISTER,LOC_CFPUREGISTER: +- begin +- a_loadfpu_ref_reg(list,location^.size,location^.size,tmpref,location^.register); +- end +- else +- internalerror(2010053111); +- end; +- inc(tmpref.offset,tcgsize2size[location^.size]); +- dec(sizeleft,tcgsize2size[location^.size]); +- location:=location^.next; ++ end; ++ LOC_REFERENCE,LOC_CREFERENCE: ++ begin ++ reference_reset_base(ref,location^.reference.index,location^.reference.offset,ctempposinvalid,newalignment(cgpara.alignment,cgpara.intsize-sizeleft),[]); ++ a_load_ref_cgparalocref(list,size,sizeleft,tmpref,ref,cgpara,location); ++ end; ++ LOC_MMREGISTER,LOC_CMMREGISTER: ++ begin ++ case location^.size of ++ OS_F32, ++ OS_F64, ++ OS_F128: ++ a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,mms_movescalar); ++ OS_M8..OS_M512: ++ a_loadmm_ref_reg(list,location^.size,location^.size,tmpref,location^.register,nil); ++ else ++ internalerror(2010053101); ++ end; ++ end; ++ LOC_FPUREGISTER,LOC_CFPUREGISTER: ++ begin ++ { can be not a float size in case of a record passed in fpu registers } ++ { the size comparison is to catch F128 passed in two 64 bit floating point registers } ++ if is_float_cgsize(size) and ++ (tcgsize2size[location^.size]>=tcgsize2size[size]) then ++ usesize:=size ++ else ++ usesize:=location^.size; ++ a_loadfpu_ref_reg(list,usesize,location^.size,tmpref,location^.register); ++ end ++ else ++ internalerror(2010053111); + end; ++ inc(tmpref.offset,tcgsize2size[location^.size]); ++ dec(sizeleft,tcgsize2size[location^.size]); ++ location:=location^.next; ++ until not assigned(location); + end; + + procedure tcg.a_load_ref_cgparalocref(list: TAsmList; sourcesize: tcgsize; sizeleft: tcgint; const ref, paralocref: treference; const cgpara: tcgpara; const location: PCGParaLocation); +@@ -1882,6 +1889,7 @@ implementation + var + srcref, + href : treference; ++ srcsize, + hsize: tcgsize; + paraloc: PCGParaLocation; + sizeleft: tcgint; +@@ -1894,9 +1902,18 @@ implementation + case paraloc^.loc of + LOC_FPUREGISTER,LOC_CFPUREGISTER: + begin +- { force fpu size } +- hsize:=int_float_cgsize(tcgsize2size[paraloc^.size]); +- a_loadfpu_ref_reg(list,hsize,hsize,srcref,paraloc^.register); ++ { destination: can be something different in case of a record passed in fpu registers } ++ if is_float_cgsize(paraloc^.size) then ++ hsize:=paraloc^.size ++ else ++ hsize:=int_float_cgsize(tcgsize2size[paraloc^.size]); ++ { source: the size comparison is to catch F128 passed in two 64 bit floating point registers } ++ if is_float_cgsize(size) and ++ (tcgsize2size[size]<=tcgsize2size[paraloc^.size]) then ++ srcsize:=size ++ else ++ srcsize:=hsize; ++ a_loadfpu_ref_reg(list,srcsize,hsize,srcref,paraloc^.register); + end; + LOC_REFERENCE,LOC_CREFERENCE: + begin +-- +GitLab + diff --git a/patches/5-85c7368759f5fb53aa23e03c8cc27c2deb424b62.patch b/patches/5-85c7368759f5fb53aa23e03c8cc27c2deb424b62.patch new file mode 100644 index 00000000..4a0bf605 --- /dev/null +++ b/patches/5-85c7368759f5fb53aa23e03c8cc27c2deb424b62.patch @@ -0,0 +1,24 @@ +From 85c7368759f5fb53aa23e03c8cc27c2deb424b62 Mon Sep 17 00:00:00 2001 +From: florian +Date: Wed, 24 Aug 2022 21:15:18 +0200 +Subject: [PATCH] * handle also simulated flags in + tmipselnotnode.second_boolean, resolves #39877 + +--- + compiler/mips/ncpumat.pas | 31 ++++++++++++++++--------------- + tests/webtbs/tw39877.pp | 15 +++++++++++++++ + 2 files changed, 31 insertions(+), 15 deletions(-) + create mode 100644 tests/webtbs/tw39877.pp + +diff --git a/fpcsrc/compiler/mips/ncpumat.pas b/fpcsrc/compiler/mips/ncpumat.pas +index 9db7c052..5b33a866 100644 +--- a/fpcsrc/compiler/mips/ncpumat.pas ++++ b/fpcsrc/compiler/mips/ncpumat.pas +@@ -245,6 +245,7 @@ begin + begin + secondpass(left); + case left.location.loc of ++ LOC_FLAGS, + LOC_REGISTER, LOC_CREGISTER, LOC_REFERENCE, LOC_CREFERENCE, + LOC_SUBSETREG,LOC_CSUBSETREG,LOC_SUBSETREF,LOC_CSUBSETREF: + begin diff --git a/patches/Fix-liking-with-libc-when-PIC-is-enabled.patch b/patches/Fix-liking-with-libc-when-PIC-is-enabled.patch new file mode 100644 index 00000000..096c0589 --- /dev/null +++ b/patches/Fix-liking-with-libc-when-PIC-is-enabled.patch @@ -0,0 +1,24 @@ +From: Florian Klämpfl +Date: Mon Aug 3 19:42:14 2020 UTC +Description: @PLT is needed for calls to link it properly with pic code + +--- fpc.orig/fpcsrc/rtl/linux/x86_64/si_c.inc ++++ fpc/fpcsrc/rtl/linux/x86_64/si_c.inc +@@ -86,7 +86,7 @@ + + { start the program } + xorq %rbp,%rbp +- call PASCALMAIN ++ call PASCALMAIN@PLT + {$endif FPC_HAS_INDIRECT_ENTRY_INFORMATION} + hlt + end; +@@ -162,7 +162,7 @@ + + { Call the user's main function, and exit with its value. + But let the libc call main. } +- call libc_start_main ++ call libc_start_main@PLT + + hlt { Crash if somehow `exit' does return. } + end; diff --git a/patches/Fix-missing-crtbeginS.o-on-mipsel.patch b/patches/Fix-missing-crtbeginS.o-on-mipsel.patch new file mode 100644 index 00000000..89b75184 --- /dev/null +++ b/patches/Fix-missing-crtbeginS.o-on-mipsel.patch @@ -0,0 +1,19 @@ +Description: Fix missing crtbeginS.o on mipsel + Add mipsel to the case statement, so the gcc library folder + is defined in /etc/fpc/cfg +Forwarded: No +Author: Peter Blackman +Last-Update: 2023-03-14 + +Index: b/fpcsrc/packages/fpmkunit/src/fpmkunit.pp +=================================================================== +--- a/fpcsrc/packages/fpmkunit/src/fpmkunit.pp ++++ b/fpcsrc/packages/fpmkunit/src/fpmkunit.pp +@@ -2813,6 +2813,7 @@ + powerpc: result := GetGccDirArch('cpupowerpc','-m32'); + powerpc64:result := GetGccDirArch('cpupowerpc64','-m64'); + aarch64: result := GetGccDirArch('cpuaarch64',''); ++ mipsel: result := GetGccDirArch('cpumipsel',''); + end {case} + else if OS = darwin then + case CPU of diff --git a/patches/armhf-tags.patch b/patches/armhf-tags.patch new file mode 100644 index 00000000..3548e5f1 --- /dev/null +++ b/patches/armhf-tags.patch @@ -0,0 +1,18 @@ +Description: Add tags to make armhf binaries come out correctly. + Add elf tag to mark hardfp binaries as such. (Closes: 695547) +Author: Peter Michael Green +Bug-Debian: https://bugs.debian.org/695547 + +Index: fpc/fpcsrc/compiler/arm/agarmgas.pas +=================================================================== +--- fpc.orig/fpcsrc/compiler/arm/agarmgas.pas ++++ fpc/fpcsrc/compiler/arm/agarmgas.pas +@@ -132,6 +132,8 @@ unit agarmgas; + inherited WriteExtraHeader; + if TArmInstrWriter(InstrWriter).unified_syntax then + writer.AsmWriteLn(#9'.syntax unified'); ++ if target_info.abi = abi_eabihf then ++ writer.AsmWriteLn(#9'.eabi_attribute 28, 1 @Tag_ABI_VFP_args'); + end; + + {****************************************************************************} diff --git a/patches/change-path-of-localization-files-to-fit-Debian-standar.patch b/patches/change-path-of-localization-files-to-fit-Debian-standar.patch new file mode 100644 index 00000000..8d73c1f7 --- /dev/null +++ b/patches/change-path-of-localization-files-to-fit-Debian-standar.patch @@ -0,0 +1,103 @@ +From: Abou Al Montacir +Date: Wed, 15 Jan 2014 21:49:04 +0100 +Subject: Change path of localization fies to fit Debian standard. (Closes: Bug#73368) +Bug-Debian: http://bugs.debian.org/73368 + +Index: fpc/fpcsrc/utils/fpdoc/dglobals.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/dglobals.pp ++++ fpc/fpcsrc/utils/fpdoc/dglobals.pp +@@ -1683,7 +1683,7 @@ procedure TranslateDocStrings(const Lang + + Const + {$ifdef unix} +- DefDir = '/usr/local/share/locale'; ++ DefDir = '/usr/share/locale'; + {$else} + DefDir = 'intl'; + {$endif} +@@ -1697,7 +1697,7 @@ begin + Dir:=DefDir; + Dir:=IncludeTrailingPathDelimiter(Dir); + {$IFDEF Unix} +- mo := TMOFile.Create(Format(Dir+'%s/LC_MESSAGES/dglobals.mo', [Lang])); ++ mo := TMOFile.Create(Format(Dir+'%s/LC_MESSAGES/dglobals-' + {$include %FPCVERSION%} + '.mo', [Lang])); + {$ELSE} + mo := TMOFile.Create(Format(Dir+'dglobals.%s.mo', [Lang])); + {$ENDIF} +Index: fpc/fpcsrc/utils/fpdoc/fpclasschart.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/fpclasschart.pp ++++ fpc/fpcsrc/utils/fpdoc/fpclasschart.pp +@@ -687,7 +687,7 @@ Function ParseCommandLine : Integer; + + Const + {$IFDEF Unix} +- MoFileTemplate = '/usr/local/share/locale/%s/LC_MESSAGES/makeskel.mo'; ++ MoFileTemplate = '/usr/share/locale/%s/LC_MESSAGES/makeskel-' + {$include %FPCVERSION%} + '.mo'; + {$ELSE} + MoFileTemplate ='intl/makeskel.%s.mo'; + {$ENDIF} +Index: fpc/fpcsrc/utils/fpdoc/fpdoc.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/fpdoc.pp ++++ fpc/fpcsrc/utils/fpdoc/fpdoc.pp +@@ -397,7 +397,7 @@ begin + ExceptionExitCode:=1; + try + {$IFDEF Unix} +- gettext.TranslateResourceStrings('/usr/local/share/locale/%s/LC_MESSAGES/fpdoc.mo'); ++ gettext.TranslateResourceStrings('/usr/share/locale/%s/LC_MESSAGES/fpdoc-' + {$include %FPCVERSION%} + '.mo'); + {$ELSE} + gettext.TranslateResourceStrings('intl/fpdoc.%s.mo'); + {$ENDIF} +Index: fpc/fpcsrc/utils/fpdoc/intl/Makefile +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/Makefile ++++ fpc/fpcsrc/utils/fpdoc/intl/Makefile +@@ -1,3 +1,5 @@ ++FPC_VERSION=$(shell ${PP} -iV) ++ + all: de + + clean: +@@ -16,8 +18,8 @@ pot: + rstconv -i ../makeskel.rst -o makeskel.pot + rstconv -i ../fpdocmk.rst -o fpdocmk.pot + +-install: +- install -D -m 0644 fpdoc.de.mo /usr/local/share/locale/de/LC_MESSAGES/fpdoc.mo +- install -D -m 0644 dglobals.de.mo /usr/local/share/locale/de/LC_MESSAGES/dglobals.mo +- install -D -m 0644 makeskel.de.mo /usr/local/share/locale/de/LC_MESSAGES/makeskel.mo +- install -D -m 0644 fpdocmk.de.mo /usr/local/share/locale/de/LC_MESSAGES/fpdocmk.mo ++install: de ++ install -D -m 0644 fpdoc.de.mo ${INSTALL_PREFIX}/share/locale/de/LC_MESSAGES/fpdoc-${FPC_VERSION}.mo ++ install -D -m 0644 dglobals.de.mo ${INSTALL_PREFIX}/share/locale/de/LC_MESSAGES/dglobals-${FPC_VERSION}.mo ++ install -D -m 0644 makeskel.de.mo ${INSTALL_PREFIX}/share/locale/de/LC_MESSAGES/makeskel-${FPC_VERSION}.mo ++ install -D -m 0644 fpdocmk.de.mo ${INSTALL_PREFIX}/share/locale/de/LC_MESSAGES/fpdocmk-${FPC_VERSION}.mo +Index: fpc/fpcsrc/utils/fpdoc/makeskel.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/makeskel.pp ++++ fpc/fpcsrc/utils/fpdoc/makeskel.pp +@@ -585,7 +585,7 @@ Function ParseCommandLine : Integer; + + Const + {$IFDEF Unix} +- MoFileTemplate = '/usr/local/share/locale/%s/LC_MESSAGES/makeskel.mo'; ++ MoFileTemplate = '/usr/share/locale/%s/LC_MESSAGES/makeskel-' + {$include %FPCVERSION%} + '.mo'; + {$ELSE} + MoFileTemplate ='intl/makeskel.%s.mo'; + {$ENDIF} +Index: fpc/fpcsrc/utils/fpdoc/unitdiff.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/unitdiff.pp ++++ fpc/fpcsrc/utils/fpdoc/unitdiff.pp +@@ -169,7 +169,7 @@ procedure ParseCommandLine; + + Const + {$IFDEF Unix} +- MoFileTemplate = '/usr/local/share/locale/%s/LC_MESSAGES/makeskel.mo'; ++ MoFileTemplate = '/usr/share/locale/%s/LC_MESSAGES/makeskel-' + {$include %FPCVERSION%} + '.mo'; + {$ELSE} + MoFileTemplate ='intl/makeskel.%s.mo'; + {$ENDIF} diff --git a/patches/change_fpmake_to_install_missing_package_examples.patch b/patches/change_fpmake_to_install_missing_package_examples.patch new file mode 100644 index 00000000..b1f5a9a4 --- /dev/null +++ b/patches/change_fpmake_to_install_missing_package_examples.patch @@ -0,0 +1,22 @@ +Description: Change fpmake to install missign package examples. + Some packages do not install their examples. This patch allows to add code in + their fpmake to install their examples. + . +Author: Abou Al Montacir +Bug-Debian: https://bugs.debian.org/1016914 +Origin: vendor +Forwarded: no +Reviewed-By: None +Last-Update: 2022-11-19 + +--- fpc-3.2.2+dfsg.orig/fpcsrc/packages/webidl/fpmake.pp ++++ fpc-3.2.2+dfsg/fpcsrc/packages/webidl/fpmake.pp +@@ -48,6 +48,8 @@ begin + AddUnit('webidlscanner'); + AddUnit('webidlparser'); + end; ++ P.ExamplePath.Add('examples'); ++ T:=P.Targets.AddExampleProgram('parsewebidl.pas'); + {$ifndef ALLPACKAGES} + Run; + end; diff --git a/patches/clean_man_pages.patch b/patches/clean_man_pages.patch new file mode 100644 index 00000000..b34e7db6 --- /dev/null +++ b/patches/clean_man_pages.patch @@ -0,0 +1,17 @@ +Description: Clean man pages to be lintian warnings and erros free. + Lintian enforces strict policy on man pages. We try here to fix upstream files + to ensure a lintian rules compatible files.. +Author: Abou Al Montacir + +diff --git a/install/man/man1/fpcjres.1 b/install/man/man1/fpcjres.1 +index ef033a80..6c48d678 100644 +--- a/install/man/man1/fpcjres.1 ++++ b/install/man/man1/fpcjres.1 +@@ -1,6 +1,6 @@ + .TH fpcjres "1" "September 2015" "fpcjres - resource file converter" "User Commands" + .SH NAME +-fpcjres \- manual page for fpcjres: a resource file converter ++fpcjres \- a resource file converter + .SH DESCRIPTION + fpcjres + This program is called by the free pascal compiler and is used to diff --git a/patches/create-directory-before-copy-in-Makefile.fpc.patch b/patches/create-directory-before-copy-in-Makefile.fpc.patch new file mode 100644 index 00000000..c9e02ae0 --- /dev/null +++ b/patches/create-directory-before-copy-in-Makefile.fpc.patch @@ -0,0 +1,30 @@ +Description: Prevent FTBFS by creating directories when required +Author: Paul Gevers +Index: fpc/fpcdocs/Makefile.fpc +=================================================================== +--- fpc.orig/fpcdocs/Makefile.fpc ++++ fpc/fpcdocs/Makefile.fpc +@@ -937,6 +937,7 @@ endif # USEHEVEA + fcl.chk: $(FCLXML) fcl-project.xml rtl.chk + $(FPDOC) $(FPDOCOPTS) --project=fcl-project.xml --format=$(HTMLFMT) --output=fcl$(HTMLSUFFIX) $(FPDOCHTMLOPTS) $(FCLCHMOPTS) + ifndef CSSFILE ++ mkdir -p fcl + cp fpdoc.cst fcl/fpdoc.css + endif + @$(ECHO) '' > fcl.chk +@@ -944,6 +945,7 @@ endif + fclres.chk: $(FCLRESXML) + $(FPDOC) $(FPDOCOPTS) $(FCLRESOPTS) --format=$(HTMLFMT) --output=fclres$(HTMLSUFFIX) $(FPDOCHTMLOPTS) $(FCLRESCHMOPTS) + ifndef CSSFILE ++ mkdir -p fclres + cp fpdoc.cst fclres/fpdoc.css + endif + @$(ECHO) '' > fclres.chk +@@ -951,6 +953,7 @@ endif + rtl.chk: $(RTLXML) rtl-project.xml + $(FPDOC) $(FPDOCOPTS) --project=rtl-project.xml --format=$(HTMLFMT) --output=rtl$(HTMLSUFFIX) $(FPDOCHTMLOPTS) $(RTLCHMOPTS) + ifndef CSSFILE ++ mkdir -p rtl + cp fpdoc.cst rtl/fpdoc.css + endif + @$(ECHO) '' > rtl.chk diff --git a/patches/disable_building_gnome1_and_gtk1.patch b/patches/disable_building_gnome1_and_gtk1.patch new file mode 100644 index 00000000..f9d60ae2 --- /dev/null +++ b/patches/disable_building_gnome1_and_gtk1.patch @@ -0,0 +1,114 @@ +Description: Disable the gnome1, gtk1, fpgtk and imlib packages to build + as they depend on libraries long go removed from Debian. +Author: Paul Gevers + +Index: fpc/fpcsrc/packages/fpmake_proc.inc +=================================================================== +--- fpc.orig/fpcsrc/packages/fpmake_proc.inc ++++ fpc/fpcsrc/packages/fpmake_proc.inc +@@ -196,12 +196,6 @@ begin + {$include fftw/fpmake.pp} + end; + +-procedure add_fpgtk(const ADirectory: string); +-begin +- with Installer do +-{$include fpgtk/fpmake.pp} +-end; +- + {$include fpindexer/fpmake.pp} + + procedure add_fpmkunit(const ADirectory: string); +@@ -238,24 +232,12 @@ begin + {$include gmp/fpmake.pp} + end; + +-procedure add_gnome1(const ADirectory: string); +-begin +- with Installer do +-{$include gnome1/fpmake.pp} +-end; +- + procedure add_graph(const ADirectory: string); + begin + with Installer do + {$include graph/fpmake.pp} + end; + +-procedure add_gtk1(const ADirectory: string); +-begin +- with Installer do +-{$include gtk1/fpmake.pp} +-end; +- + procedure add_gtk2(const ADirectory: string); + begin + with Installer do +@@ -316,12 +298,6 @@ begin + {$include imagemagick/fpmake.pp} + end; + +-procedure add_imlib(const ADirectory: string); +-begin +- with Installer do +-{$include imlib/fpmake.pp} +-end; +- + procedure add_iosxlocale(const ADirectory: string); + begin + with Installer do +Index: fpc/fpcsrc/packages/fpmake_add.inc +=================================================================== +--- fpc.orig/fpcsrc/packages/fpmake_add.inc ++++ fpc/fpcsrc/packages/fpmake_add.inc +@@ -33,7 +33,6 @@ + add_fcl_web(ADirectory+IncludeTrailingPathDelimiter('fcl-web')); + add_fcl_xml(ADirectory+IncludeTrailingPathDelimiter('fcl-xml')); + add_fftw(ADirectory+IncludeTrailingPathDelimiter('fftw')); +- add_fpgtk(ADirectory+IncludeTrailingPathDelimiter('fpgtk')); + add_fpindexer(ADirectory+IncludeTrailingPathDelimiter('fpindexer')); + add_fpmkunit(ADirectory+IncludeTrailingPathDelimiter('fpmkunit')); + add_fppkg(ADirectory+IncludeTrailingPathDelimiter('fppkg')); +@@ -42,9 +41,7 @@ + add_gdbm(ADirectory+IncludeTrailingPathDelimiter('gdbm')); + add_ggi(ADirectory+IncludeTrailingPathDelimiter('ggi')); + add_gmp(ADirectory+IncludeTrailingPathDelimiter('gmp')); +- add_gnome1(ADirectory+IncludeTrailingPathDelimiter('gnome1')); + add_graph(ADirectory+IncludeTrailingPathDelimiter('graph')); +- add_gtk1(ADirectory+IncludeTrailingPathDelimiter('gtk1')); + add_gtk2(ADirectory+IncludeTrailingPathDelimiter('gtk2')); + add_hash(ADirectory+IncludeTrailingPathDelimiter('hash')); + add_hermes(ADirectory+IncludeTrailingPathDelimiter('hermes')); +@@ -55,7 +52,6 @@ + add_ibase(ADirectory+IncludeTrailingPathDelimiter('ibase')); + add_iconvenc(ADirectory+IncludeTrailingPathDelimiter('iconvenc')); + add_imagemagick(ADirectory+IncludeTrailingPathDelimiter('imagemagick')); +- add_imlib(ADirectory+IncludeTrailingPathDelimiter('imlib')); + add_iosxlocale(ADirectory+IncludeTrailingPathDelimiter('iosxlocale')); + add_jni(ADirectory+IncludeTrailingPathDelimiter('jni')); + add_ldap(ADirectory+IncludeTrailingPathDelimiter('ldap')); +Index: fpc/fpcsrc/utils/fpmake_proc.inc +=================================================================== +--- fpc.orig/fpcsrc/utils/fpmake_proc.inc ++++ fpc/fpcsrc/utils/fpmake_proc.inc +@@ -10,8 +10,6 @@ + + {$include fpdoc/fpmake.pp} + +-{$include fpmc/fpmake.pp} +- + {$include fppkg/fpmake.pp} + + {$include fprcp/fpmake.pp} +Index: fpc/fpcsrc/utils/fpmake_add.inc +=================================================================== +--- fpc.orig/fpcsrc/utils/fpmake_add.inc ++++ fpc/fpcsrc/utils/fpmake_add.inc +@@ -4,7 +4,6 @@ + add_fpcres(ADirectory+IncludeTrailingPathDelimiter('fpcres')); + add_fpcreslipo(ADirectory+IncludeTrailingPathDelimiter('fpcreslipo')); + add_fpdoc(ADirectory+IncludeTrailingPathDelimiter('fpdoc')); +- add_fpmc(ADirectory+IncludeTrailingPathDelimiter('fpmc')); + add_fppkg_util(ADirectory+IncludeTrailingPathDelimiter('fppkg')); + add_fprcp(ADirectory+IncludeTrailingPathDelimiter('fprcp')); + add_h2pas(ADirectory+IncludeTrailingPathDelimiter('h2pas')); diff --git a/patches/drop-jsminifier-from-build-as-we-strip-it.patch b/patches/drop-jsminifier-from-build-as-we-strip-it.patch new file mode 100644 index 00000000..d5dd7cff --- /dev/null +++ b/patches/drop-jsminifier-from-build-as-we-strip-it.patch @@ -0,0 +1,17 @@ +Description: the jsminifier.pp is not dfsg free. Therefore we strip it during + repack but we must prevent during build as well. +Bug: https://bugs.freepascal.org/view.php?id=32288 +Author: Paul Gevers +Index: fpc/fpcsrc/packages/fcl-js/fpmake.pp +=================================================================== +--- fpc.orig/fpcsrc/packages/fcl-js/fpmake.pp ++++ fpc/fpcsrc/packages/fcl-js/fpmake.pp +@@ -43,8 +43,6 @@ begin + T.ResourceStrings:=true; + T:=P.Targets.AddUnit('jswriter.pp'); + T.ResourceStrings:=true; +- T:=P.Targets.AddUnit('jsminifier.pp'); +- T.ResourceStrings:=true; + {$ifndef ALLPACKAGES} + Run; + end; diff --git a/patches/fix-FPCDIR-in-fpcmake.diff b/patches/fix-FPCDIR-in-fpcmake.diff new file mode 100644 index 00000000..c8f5fdfa --- /dev/null +++ b/patches/fix-FPCDIR-in-fpcmake.diff @@ -0,0 +1,85 @@ +This patch fixes evaluation of default value for FPCDIR. (Closes: bug#662814) + +Index: fpc/fpcsrc/utils/fpcm/fpcmmain.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpcm/fpcmmain.pp ++++ fpc/fpcsrc/utils/fpcm/fpcmmain.pp +@@ -313,6 +313,46 @@ implementation + end; + + ++{$ifdef UNIX} ++{$ifndef NO_UNIX_UNIT} ++ function ReadLink(LinkName: ansistring; Depth: byte = 0): ansistring; ++ { ++ Read a link (where it points to) ++ @Param LinkName ++ @Param Depth ++ 0 means raw link value (could be relative path) ++ 1 means expanded full path and name to liked file ++ 2..255 follow links recursively up to Depth level ++ } ++ var ++ LinkedFileName: PChar; ++ i: cInt; ++ begin ++ GetMem(LinkedFileName, PATH_MAX + 1); ++ Result := ExpandFileName(LinkName); ++ repeat ++ i := fpReadLink(PChar(Result), LinkedFileName, PATH_MAX); ++ if i >= 0 then begin ++ LinkedFileName[i] := #0; ++ if Depth > 0 then begin ++ Result := ExpandFileName(FileSearch(LinkedFileName, PathSep + ExtractFileDir(Result))); ++ Dec(Depth); ++ end else begin ++ Result := LinkedFileName; ++ end; ++ end; ++ until (i <= 0) or (Depth <= 0); ++ if i < 0 then begin ++ if FpGetErrNo <> ESysEINVAL then begin ++ Result := ''; ++ end; ++ end; ++ FreeMem(LinkedFileName, PATH_MAX + 1); ++ end; ++{$endif UNIX} ++{$endif NO_UNIX_UNIT} ++ ++ + function posidx(const substr,s : string;idx:integer):integer; + var + i,j : integer; +@@ -1216,7 +1256,7 @@ implementation + end; + if FileExists('/usr/local/bin/ppc' + ppcSuffix[cpu]) then + begin +- s:=ExtractFilePath({$ifdef ver1_0}ReadLink{$else}fpReadlink{$endif}('/usr/local/bin/ppc' + ppcSuffix[cpu])); ++ s:=ExtractFilePath(ReadLink('/usr/local/bin/ppc' + ppcSuffix[cpu], 255)); + if s<>'' then + begin + if s[length(s)]='/' then +@@ -1228,7 +1268,21 @@ implementation + begin + if FileExists('/usr/bin/ppc' + ppcSuffix[cpu]) then + begin +- s:=ExtractFilePath({$ifdef ver1_0}ReadLink{$else}fpReadLink{$endif}('/usr/bin/ppc' + ppcSuffix[cpu])); ++ s:=ExtractFilePath(ReadLink('/usr/bin/ppc' + ppcSuffix[cpu], 255)); ++ if s<>'' then ++ begin ++ if s[length(s)]='/' then ++ delete(s,length(s),1); ++ hs:=SubstVariables('$(wildcard $(addprefix '+s+'/,Makefile.fpc))'); ++ end; ++ end; ++ end; ++ if hs='' then ++ begin ++ s:=ExtractFileName(s); ++ if DirectoryExists('/usr/share/fpcsrc/' + s) then ++ begin ++ s:=ReadLink('/usr/share/fpcsrc/' + s, 255); + if s<>'' then + begin + if s[length(s)]='/' then diff --git a/patches/fix-IDE-GDB-support.patch b/patches/fix-IDE-GDB-support.patch new file mode 100644 index 00000000..dc016154 --- /dev/null +++ b/patches/fix-IDE-GDB-support.patch @@ -0,0 +1,4339 @@ +From: Abou Al Montacir +Date: Sun, 07 Jan 2018 12:40:45 +0100 +Description: Fix IDE GDB support by importing MI supoort from upstream trunk. + (Closes: Bug##528855) + +diff --git a/fpcsrc/ide/Makefile.fpc b/fpcsrc/ide/Makefile.fpc +index 2be4d0d4..1bfdbb4f 100644 +--- a/fpcsrc/ide/Makefile.fpc ++++ b/fpcsrc/ide/Makefile.fpc +@@ -31,6 +31,8 @@ FPMAKE_BIN_CLEAN=$(wildcard ./fpmake$(SRCEXEEXT)) + LOCALFPMAKE=./fpmake$(SRCEXEEXT) + # do not add -d$(CPU_TARGET) + override NOCPUDEF=1 ++# This list should be the same as in fpcbuild/Makefile.fpc and in fpcsrc/Makefile.fpc ++GDBMI_DEFAULT_OS_LIST=aix darwin freebsd haiku linux netbsd openbsd solaris win32 win64 + + [rules] + # Do not pass the Makefile's unit and binary target locations. Fpmake uses it's own. +@@ -48,15 +50,37 @@ FPMAKE_OPT+=$(FPC_TARGETOPT) + FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT)) + FPMAKE_OPT+=--compiler=$(FPC) + FPMAKE_OPT+=-bu +-ifndef BUILDFULLNATIVE +-FPMAKE_OPT+=-sp +-endif + ifdef NOGDB + FPMAKE_OPT+=--NoGDB=1 ++else ++ifndef NOGDBMI ++ifneq ($(findstring $(OS_TARGET),$(GDBMI_DEFAULT_OS_LIST)),) ++GDBMI=1 ++endif ++endif # NOGDBMI ++ ++ifdef GDBMI ++FPMAKE_OPT+=--GDBMI=1 ++# If the rtl does not require libc, then ++# IDE compiled with GDBMI should be a static executable ++# and can thus be cross-compiled ++ifeq ($(findstring $(OS_TARGET),aix beos darwin haiku solaris),) ++GDBMI_IS_STATIC=1 ++endif + endif ++endif # NOGDB ++ ++ifndef GDBMI_IS_STATIC ++ifndef BUILDFULLNATIVE ++# Omit executable is only required if generated executable is not static ++FPMAKE_OPT+=-scp ++endif ++endif # GDBMI_IS_STATIC ++ + ifdef PPC_TARGET + FPMAKE_OPT+=--CompilerTarget=$(PPC_TARGET) + endif ++ + .NOTPARALLEL: + + fpmake$(SRCEXEEXT): fpmake.pp +diff --git a/fpcsrc/ide/Makefile.fpc.fpcmake b/fpcsrc/ide/Makefile.fpc.fpcmake +index 01fba71b..3e331dec 100644 +--- a/fpcsrc/ide/Makefile.fpc.fpcmake ++++ b/fpcsrc/ide/Makefile.fpc.fpcmake +@@ -6,7 +6,7 @@ + + [package] + name=ide +-version=3.0.4 ++version=3.1.1 + + [target] + dirs=compiler +diff --git a/fpcsrc/ide/compiler/Makefile.fpc b/fpcsrc/ide/compiler/Makefile.fpc +index e0d0ded2..7985b2df 100644 +--- a/fpcsrc/ide/compiler/Makefile.fpc ++++ b/fpcsrc/ide/compiler/Makefile.fpc +@@ -5,6 +5,9 @@ + [package] + main=ide + ++[require] ++packages=rtl-extra ++ + [target] + units=compunit + +@@ -51,6 +54,9 @@ endif + ifeq ($(PPC_TARGET),x86_64) + override FPCOPT+= -Fu$(COMPILERDIR)/x86 -dNOOPT + endif ++ifeq ($(PPC_TARGET),i8086) ++override FPCOPT+= -Fu$(COMPILERDIR)/x86 ++endif + ifeq ($(PPC_TARGET),powerpc) + override FPCOPT+= -Fu$(COMPILERDIR)/ppcgen + endif +@@ -61,6 +67,14 @@ endif + ifeq ($(PPC_TARGET),mipsel) + override FPCOPT+= -Fu$(COMPILERDIR)/mips + endif ++# sparc specific ++ifeq ($(PPC_TARGET),sparc) ++override FPCOPT+= -Fu$(COMPILERDIR)/sparcgen -Fi$(COMPILERDIR)/sparcgen ++endif ++# sparc64 specific ++ifeq ($(PPC_TARGET),sparc64) ++override FPCOPT+= -Fu$(COMPILERDIR)/sparcgen -Fi$(COMPILERDIR)/sparcgen ++endif + + + [rules] +diff --git a/fpcsrc/ide/fp.pas b/fpcsrc/ide/fp.pas +index 005ff19f..36bc227b 100644 +--- a/fpcsrc/ide/fp.pas ++++ b/fpcsrc/ide/fp.pas +@@ -63,7 +63,11 @@ uses + Dos,Objects, + BrowCol,Version, + {$ifndef NODEBUG} +- gdbint, ++ {$ifdef GDBMI} ++ gdbmiint, ++ {$else GDBMI} ++ gdbint, ++ {$endif GDBMI} + {$endif NODEBUG} + FVConsts, + Drivers,Views,App,Dialogs,HistList, +@@ -79,6 +83,9 @@ uses + FPTools, + {$ifndef NODEBUG} + FPDebug,FPRegs, ++{$ifdef GDBMI} ++ gdbmiproc, ++{$endif GDBMI} + {$endif} + FPTemplt,FPRedir,FPDesk, + FPCodTmp,FPCodCmp, +@@ -196,6 +203,16 @@ begin + Delete(Param,1,1); { eat optional separator } + IniFileName:=Param; + end; ++{$ifdef GDBMI} ++ 'G' : { custom GDB exec file (GDBMI mode only) } ++ if BeforeINI then ++ begin ++ delete(param,1,1); // delete C ++ if (length(Param)>=1) and (Param[1] in['=',':']) then ++ Delete(Param,1,1); { eat optional separator } ++ GDBProgramName:=Param; ++ end; ++{$endif def GDBMI} + 'R' : { enter the directory last exited from (BP comp.) } + begin + Param:=copy(Param,2,255); +@@ -359,18 +376,26 @@ BEGIN + { Startup info } + writeln(bullet+' Free Pascal IDE Version '+VersionStr+' ['+{$i %date%}+']'); + writeln(bullet+' Compiler Version '+Full_Version_String); ++ ++ { Process params before printing GDB version because of /G option } ++ ProcessParams(true); ++ + {$ifndef NODEBUG} + writeln(bullet+' GDB Version '+GDBVersion); + {$ifdef Windows} + {$ifndef USE_MINGW_GDB} +- writeln(bullet+' Cygwin "',GetCygwinFullName,'" version ',GetCygwinVersionString); +- CheckCygwinVersion; ++ {$ifdef GDBMI} ++ { No reason to talk about cygwin DLL if we don't use it } ++ if using_cygwin_gdb then ++ {$endif GDBMI} ++ begin ++ writeln(bullet+' Cygwin "',GetCygwinFullName,'" version ',GetCygwinVersionString); ++ CheckCygwinVersion; ++ end; + {$endif} + {$endif Windows} + {$endif NODEBUG} + +- ProcessParams(true); +- + {$ifdef DEBUG} + StartTime:=getrealtime; + {$endif DEBUG} +diff --git a/fpcsrc/ide/fpcompil.pas b/fpcsrc/ide/fpcompil.pas +index 9a0bd7f8..54d0ffd1 100644 +--- a/fpcsrc/ide/fpcompil.pas ++++ b/fpcsrc/ide/fpcompil.pas +@@ -620,7 +620,7 @@ begin + else + begin + if Status.CurrentSource='' then +- StatusS:='' ++ StatusS:=' ' + else + begin + StatusS:=ShrinkPath(SmartPath(DirAndNameOf(Status.Currentsourcepath+Status.CurrentSource)), +diff --git a/fpcsrc/ide/fpconst.pas b/fpcsrc/ide/fpconst.pas +index 1d1f2235..07f9480f 100644 +--- a/fpcsrc/ide/fpconst.pas ++++ b/fpcsrc/ide/fpconst.pas +@@ -55,9 +55,11 @@ const + {$endif cpu68k} + {$endif i386} + {$ifdef SUPPORT_REMOTE} +- {$define USE_SPECIAL_BASENAME} +- { this uses PPC_TARGET env. variable from Makefile } +- FPBaseName = 'fp_'+{$i %PPC_TARGET%}; ++ {$ifndef USE_SPECIAL_BASENAME} ++ { this uses PPC_TARGET env. variable from Makefile } ++ FPBaseName = 'fp_'+{$i %PPC_TARGET%}; ++ {$define USE_SPECIAL_BASENAME} ++ {$endif ndef USE_SPECIAL_BASENAME} + {$endif SUPPORT_REMOTE} + {$endif not USE_FPBASENAME} + {$ifndef USE_SPECIAL_BASENAME} +diff --git a/fpcsrc/ide/fpdebug.pas b/fpcsrc/ide/fpdebug.pas +index 6222d449..64d93490 100644 +--- a/fpcsrc/ide/fpdebug.pas ++++ b/fpcsrc/ide/fpdebug.pas +@@ -26,7 +26,11 @@ uses + {$endif Windows} + Objects,Dialogs,Drivers,Views, + {$ifndef NODEBUG} +- GDBCon,GDBInt, ++ {$ifdef GDBMI} ++ GDBMICon,GDBMIInt, ++ {$else GDBMI} ++ GDBCon,GDBInt, ++ {$endif GDBMI} + {$endif NODEBUG} + Menus, + WViews,WEditor, +@@ -36,6 +40,9 @@ type + {$ifndef NODEBUG} + PDebugController=^TDebugController; + TDebugController=object(TGDBController) ++ private ++ function GetFPCBreakErrorParameters(var ExitCode: LongInt; var ExitAddr, ExitFrame: CORE_ADDR): Boolean; ++ public + InvalidSourceLine : boolean; + + { if true the current debugger raw will stay in middle of +@@ -50,8 +57,6 @@ type + NoSwitch : boolean; + HasExe : boolean; + RunCount : longint; +- WindowWidth : longint; +- TBreakNumber : longint; + FPCBreakErrorNumber : longint; + {$ifdef SUPPORT_REMOTE} + isRemoteDebugging, +@@ -61,11 +66,9 @@ type + {$endif SUPPORT_REMOTE} + constructor Init; + procedure SetExe(const exefn:string); +- procedure SetTBreak(tbreakstring : string); +- procedure SetWidth(AWidth : longint); + procedure SetSourceDirs; + destructor Done; +- procedure DoSelectSourceline(const fn:string;line:longint);virtual; ++ function DoSelectSourceline(const fn:string;line,BreakIndex:longint): Boolean;virtual; + { procedure DoStartSession;virtual; + procedure DoBreakSession;virtual;} + procedure DoEndSession(code:longint);virtual; +@@ -563,7 +566,11 @@ begin + {$ifdef Windows} + {$ifndef USE_MINGW_GDB} // see mantis 11968 because of mingw build. MvdV + { for Windows we should convert e:\ into //e/ PM } +- if (length(st)>2) and (st[2]=':') and (st[3]='/') then ++ if ++ {$ifdef GDBMI} ++ using_cygwin_gdb and ++ {$endif} ++ (length(st)>2) and (st[2]=':') and (st[3]='/') then + st:=CygDrivePrefix+'/'+st[1]+copy(st,3,length(st)); + {$endif} + { support spaces in the name by escaping them but without changing '\ ' into '\\ ' } +@@ -656,15 +663,14 @@ begin + NoSwitch:=False; + HasExe:=false; + Debugger:=@self; +- WindowWidth:=-1; + switch_to_user:=true; + GetDir(0,OrigPwd); +- Command('set print object off'); ++ SetCommand('print object off'); + {$ifdef SUPPORT_REMOTE} + isFirstRemote:=true; + {$ifdef FPC_ARMEL32} + { GDB needs advice on exact file type } +- Command('set gnutarget elf32-littlearm'); ++ SetCommand('gnutarget elf32-littlearm'); + {$endif FPC_ARMEL32} + {$endif SUPPORT_REMOTE} + end; +@@ -675,14 +681,19 @@ begin + f := GDBFileName(GetShortName(exefn)); + if (f<>'') and ExistsFile(exefn) then + begin +- LoadFile(f); ++ if not LoadFile(f) then ++ begin ++ HasExe:=false; ++ if GetError<>'' then ++ f:=GetError; ++ MessageBox(#3'Failed to load file '#13#3+f,nil,mfOKbutton); ++ exit; ++ end; + HasExe:=true; + { Procedure HandleErrorAddrFrame + (Errno : longint;addr,frame : longint); +- [public,alias:'FPC_BREAK_ERROR']; +- Command('b HANDLEERRORADDRFRAME'); } +- Command('b FPC_BREAK_ERROR'); +- FPCBreakErrorNumber:=last_breakpoint_number; ++ [public,alias:'FPC_BREAK_ERROR'];} ++ FPCBreakErrorNumber:=BreakpointInsert('FPC_BREAK_ERROR', []); + {$ifdef FrameNameKnown} + { this fails in GDB 5.1 because + GDB replies that there is an attempt to dereference +@@ -701,25 +712,23 @@ begin + begin + HasExe:=false; + reset_command:=true; ++{$ifdef GDBMI} ++ Command('-file-exec-and-symbols'); ++{$else GDBMI} + Command('file'); ++{$endif GDBMI} + reset_command:=false; + end; + end; + + +-procedure TDebugController.SetTBreak(tbreakstring : string); +-begin +- Command('tbreak '+tbreakstring); +- TBreakNumber:=Last_breakpoint_number; +-end; +- +-procedure TDebugController.SetWidth(AWidth : longint); +-begin +- WindowWidth:=AWidth; +- Command('set width '+inttostr(WindowWidth)); +-end; +- + procedure TDebugController.SetSourceDirs; ++ const ++{$ifdef GDBMI} ++ AddSourceDirCommand = '-environment-directory'; ++{$else GDBMI} ++ AddSourceDirCommand = 'dir'; ++{$endif GDBMI} + var f,s: ansistring; + i : longint; + Dir : SearchRec; +@@ -736,7 +745,7 @@ begin + end; + DefaultReplacements(s); + if (pos('*',s)=0) and ExistsDir(s) then +- Command('dir '+GDBFileName(GetShortName(s))) ++ Command(AddSourceDirCommand+' '+GDBFileName(GetShortName(s))) + { we should also handle the /* cases of -Fu option } + else if pos('*',s)>0 then + begin +@@ -746,7 +755,7 @@ begin + while Dos.DosError=0 do + begin + if ((Dir.attr and Directory) <> 0) and ExistsDir(s+Dir.Name) then +- Command('dir '+GDBFileName(GetShortName(s+Dir.Name))); ++ Command(AddSourceDirCommand+' '+GDBFileName(GetShortName(s+Dir.Name))); + Dos.FindNext(Dir); + end; + Dos.FindClose(Dir); +@@ -820,6 +829,12 @@ end; + + + procedure TDebugController.Run; ++const ++{$ifdef GDBMI} ++ SetTTYCommand = '-inferior-tty-set'; ++{$else GDBMI} ++ SetTTYCommand = 'tty'; ++{$endif GDBMI} + {$ifdef Unix} + var + Debuggeefile : text; +@@ -916,9 +931,9 @@ begin + {$ifdef Windows} + { Run the debugge in another console } + if DebuggeeTTY<>'' then +- Command('set new-console on') ++ SetCommand('new-console on') + else +- Command('set new-console off'); ++ SetCommand('new-console off'); + NoSwitch:=DebuggeeTTY<>''; + {$endif Windows} + {$ifdef Unix} +@@ -931,12 +946,12 @@ begin + ResetOK:=IOResult=0; + If ResetOK and (IsATTY(textrec(Debuggeefile).handle)<>-1) then + begin +- Command('tty '+DebuggeeTTY); ++ Command(SetTTYCommand+' '+DebuggeeTTY); + TTYUsed:=true; + end + else + begin +- Command('tty '); ++ Command(SetTTYCommand+' '); + TTYUsed:=false; + end; + if ResetOK then +@@ -949,7 +964,7 @@ begin + else + begin + if TTYName(input)<>'' then +- Command('tty '+TTYName(input)); ++ Command(SetTTYCommand+' '+TTYName(input)); + NoSwitch := false; + end; + {$endif Unix} +@@ -958,9 +973,6 @@ begin + {$endif SUPPORT_REMOTE} + { Switch to user screen to get correct handles } + UserScreen; +- { Don't try to print GDB messages while in User Screen mode } +- If assigned(GDBWindow) then +- GDBWindow^.Editor^.Lock; + {$ifdef SUPPORT_REMOTE} + if isRemoteDebugging then + begin +@@ -982,8 +994,6 @@ begin + SetDir(StartupDir); + end; + DebuggerScreen; +- If assigned(GDBWindow) then +- GDBWindow^.Editor^.UnLock; + IDEApp.SetCmdState([cmResetDebugger,cmUntilReturn],true); + IDEApp.UpdateRunMenu(true); + UpdateDebugViews; +@@ -1010,7 +1020,7 @@ end; + + procedure TDebugController.UntilReturn; + begin +- Command('finish'); ++ inherited UntilReturn; + UpdateDebugViews; + { We could try to get the return value ! + Not done yet } +@@ -1087,6 +1097,14 @@ begin + gdberrorbuf.reset; + end; + ++{$ifdef GDB_RAW_OUTPUT} ++ If StrLen(GetRaw)>0 then ++ begin ++ GDBWindow^.WriteOutputText(GetRaw); ++ if in_command=0 then ++ gdbrawbuf.reset; ++ end; ++{$endif GDB_RAW_OUTPUT} + If StrLen(GetOutput)>0 then + begin + GDBWindow^.WriteOutputText(GetOutput); +@@ -1107,6 +1125,10 @@ begin + { We should do something special for errors !! } + If StrLen(GetError)>0 then + GDBWindow^.WriteErrorText(GetError); ++{$ifdef GDB_RAW_OUTPUT} ++ If StrLen(GetRaw)>0 then ++ GDBWindow^.WriteOutputText(GetRaw); ++{$endif GDB_RAW_OUTPUT} + GDBWindow^.WriteOutputText(GetOutput); + GDBWindow^.Editor^.TextEnd; + end; +@@ -1192,41 +1214,8 @@ begin + end; + + function TDebugController.GetValue(Const expr : string) : pchar; +-var +- p,p2,p3 : pchar; +-begin +- if WindowWidth<>-1 then +- Command('set width 0xffffffff'); +- Command('p '+expr); +- p:=GetOutput; +- p3:=nil; +- if assigned(p) and (p[strlen(p)-1]=#10) then +- begin +- p3:=p+strlen(p)-1; +- p3^:=#0; +- end; +- if assigned(p) then +- p2:=strpos(p,'=') +- else +- p2:=nil; +- if assigned(p2) then +- p:=p2+1; +- while p^ in [' ',TAB] do +- inc(p); +- { get rid of type } +- if p^ = '(' then +- p:=strpos(p,')')+1; +- while p^ in [' ',TAB] do +- inc(p); +- if assigned(p) then +- GetValue:=StrNew(p) +- else +- GetValue:=StrNew(GetError); +- if assigned(p3) then +- p3^:=#10; +- got_error:=false; +- if WindowWidth<>-1 then +- Command('set width '+IntToStr(WindowWidth)); ++begin ++ GetValue:=StrNew(PChar(PrintCommand(expr))); + end; + + function TDebugController.GetFramePointer : CORE_ADDR; +@@ -1235,8 +1224,7 @@ var + p : longint; + begin + {$ifdef FrameNameKnown} +- Command('p /d '+FrameName); +- st:=strpas(GetOutput); ++ st:=PrintFormattedCommand(FrameName,pfdecimal); + p:=pos('=',st); + while (p0 then +@@ -1318,41 +1337,33 @@ begin + + if (BreakIndex=FPCBreakErrorNumber) then + begin +- { Procedure HandleErrorAddrFrame +- (Errno : longint;addr,frame : longint); +- [public,alias:'FPC_BREAK_ERROR']; } +-{$ifdef FrameNameKnown} +- ExitCode:=GetLongintAt(GetFramePointer+FirstArgOffset); +- ExitAddr:=GetPointerAt(GetFramePointer+SecondArgOffset); +- ExitFrame:=GetPointerAt(GetFramePointer+ThirdArgOffset); +- if (ExitCode=0) and (ExitAddr=0) then +- begin +- Desktop^.Unlock; +- Command('continue'); +- exit; +- end; +- { forget all old frames } +- clear_frames; +- { record new frames } +- Command('backtrace'); +- for i:=0 to frame_count-1 do +- begin +- with frames[i]^ do +- begin +- if ExitAddr=address then +- begin +- Command('f '+IntToStr(i)); +- if assigned(file_name) then +- begin +- s:=strpas(file_name); +- line:=line_number; +- stop_addr:=address; +- end; +- break; +- end; +- end; +- end; +-{$endif FrameNameKnown} ++ if GetFPCBreakErrorParameters(ExitCode, ExitAddr, ExitFrame) then ++ begin ++ Backtrace; ++ for i:=0 to frame_count-1 do ++ begin ++ with frames[i]^ do ++ begin ++ if ExitAddr=address then ++ begin ++ if SelectFrameCommand(i) and ++ assigned(file_name) then ++ begin ++ s:=strpas(file_name); ++ line:=line_number; ++ stop_addr:=address; ++ end; ++ break; ++ end; ++ end; ++ end; ++ end ++ else ++ begin ++ Desktop^.Unlock; ++ DoSelectSourceLine := False; ++ exit; ++ end; + end; + { Update Disassembly position } + if Assigned(DisassemblyWindow) then +@@ -1455,13 +1466,8 @@ begin + (PB^.typ<>bt_file_line) and (PB^.typ<>bt_function) and + (PB^.typ<>bt_address) then + begin +- Command('p '+GetStr(PB^.Name)); +- S:=GetPChar(GetOutput); ++ S:=PrintCommand(GetStr(PB^.Name)); + got_error:=false; +- If Pos('=',S)>0 then +- S:=Copy(S,Pos('=',S)+1,255); +- If S[Length(S)]=#10 then +- Delete(S,Length(S),1); + if Assigned(PB^.OldValue) then + DisposeStr(PB^.OldValue); + PB^.OldValue:=PB^.CurrentValue; +@@ -1480,6 +1486,7 @@ begin + #3+' value = '+GetStr(PB^.CurrentValue),nil); + end; + end; ++ DoSelectSourceLine := True; + end; + + procedure TDebugController.DoUserSignal; +@@ -1542,6 +1549,8 @@ begin + end; + ChangeDebuggeeWindowTitleTo(Stopped_State); + {$endif Windows} ++ If assigned(GDBWindow) then ++ GDBWindow^.Editor^.UnLock; + end; + + +@@ -1581,6 +1590,9 @@ begin + end; + ChangeDebuggeeWindowTitleTo(Running_State); + {$endif Windows} ++ { Don't try to print GDB messages while in User Screen mode } ++ If assigned(GDBWindow) then ++ GDBWindow^.Editor^.Lock; + end; + + {$endif NODEBUG} +@@ -1756,32 +1768,32 @@ procedure TBreakpoint.Insert; + var + p,p2 : pchar; + st : string; ++ bkpt_no: LongInt = 0; + begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; + Remove; +- Debugger^.last_breakpoint_number:=0; + if (GDBState=bs_deleted) and (state=bs_enabled) then + begin + if (typ=bt_file_line) and assigned(FileName) then +- Debugger^.Command('break '+GDBFileName(NameAndExtOf(GetStr(FileName)))+':'+IntToStr(Line)) ++ bkpt_no := Debugger^.BreakpointInsert(GDBFileName(NameAndExtOf(GetStr(FileName)))+':'+IntToStr(Line), []) + else if (typ=bt_function) and assigned(name) then +- Debugger^.Command('break '+name^) ++ bkpt_no := Debugger^.BreakpointInsert(name^, []) + else if (typ=bt_address) and assigned(name) then +- Debugger^.Command('break *0x'+name^) ++ bkpt_no := Debugger^.BreakpointInsert('*0x'+name^, []) + else if (typ=bt_watch) and assigned(name) then +- Debugger^.Command('watch '+name^) ++ bkpt_no := Debugger^.WatchpointInsert(name^, wtWrite) + else if (typ=bt_awatch) and assigned(name) then +- Debugger^.Command('awatch '+name^) ++ bkpt_no := Debugger^.WatchpointInsert(name^, wtReadWrite) + else if (typ=bt_rwatch) and assigned(name) then +- Debugger^.Command('rwatch '+name^); +- if Debugger^.last_breakpoint_number<>0 then ++ bkpt_no := Debugger^.WatchpointInsert(name^, wtRead); ++ if bkpt_no<>0 then + begin +- GDBIndex:=Debugger^.last_breakpoint_number; ++ GDBIndex:=bkpt_no; + GDBState:=bs_enabled; +- Debugger^.Command('cond '+IntToStr(GDBIndex)+' '+GetStr(Conditions)); ++ Debugger^.BreakpointCondition(GDBIndex, GetStr(Conditions)); + If IgnoreCount>0 then +- Debugger^.Command('ignore '+IntToStr(GDBIndex)+' '+IntToStr(IgnoreCount)); ++ Debugger^.BreakpointSetIgnoreCount(GDBIndex, IgnoreCount); + If Assigned(Commands) then + begin + {Commands are not handled yet } +@@ -1842,7 +1854,7 @@ begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; + if GDBIndex>0 then +- Debugger^.Command('delete '+IntToStr(GDBIndex)); ++ Debugger^.BreakpointDelete(GDBIndex); + GDBIndex:=0; + GDBState:=bs_deleted; + {$endif NODEBUG} +@@ -1853,7 +1865,7 @@ begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; + if GDBIndex>0 then +- Debugger^.Command('enable '+IntToStr(GDBIndex)) ++ Debugger^.BreakpointEnable(GDBIndex) + else + Insert; + GDBState:=bs_disabled; +@@ -1865,7 +1877,7 @@ begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; + if GDBIndex>0 then +- Debugger^.Command('disable '+IntToStr(GDBIndex)); ++ Debugger^.BreakpointDisable(GDBIndex); + GDBState:=bs_disabled; + {$endif NODEBUG} + end; +@@ -2844,27 +2856,16 @@ procedure TWatch.rename(s : string); + + procedure TWatch.Get_new_value; + {$ifndef NODEBUG} +- var p, q : pchar; +- i, j, curframe, startframe : longint; +- s,s2 : string; ++ var i, curframe, startframe : longint; ++ s,s2,orig_s_result : AnsiString; + loop_higher, found : boolean; +- last_removed : char; + +- function GetValue(var s : string) : boolean; ++ function GetValue(var s : AnsiString) : boolean; + begin +- Debugger^.command('p '+s); +- if not Debugger^.Error then +- begin +- s:=StrPas(Debugger^.GetOutput); +- GetValue:=true; +- end +- else +- begin +- s:=StrPas(Debugger^.GetError); +- GetValue:=false; +- { do not open a messagebox for such errors } +- Debugger^.got_error:=false; +- end; ++ s:=Debugger^.PrintCommand(s); ++ GetValue := not Debugger^.Error; ++ { do not open a messagebox for such errors } ++ Debugger^.got_error:=false; + end; + + begin +@@ -2892,6 +2893,7 @@ procedure TWatch.Get_new_value; + end; + end; + found:=GetValue(s); ++ orig_s_result:=s; + Debugger^.got_error:=false; + loop_higher:=not found; + if not found then +@@ -2914,16 +2916,12 @@ procedure TWatch.Get_new_value; + if not Debugger^.set_current_frame(curframe) then + loop_higher:=false; + {$ifdef FrameNameKnown} +- s2:='/x '+FrameName; ++ s2:=FrameName; + {$else not FrameNameKnown} +- s2:='/x $ebp'; ++ s2:='$ebp'; + {$endif FrameNameKnown} +- getValue(s2); +- j:=pos('=',s2); +- if j>0 then +- s2:=copy(s2,j+1,length(s2)); +- while s2[1] in [' ',TAB] do +- delete(s2,1,1); ++ if not getValue(s2) then ++ loop_higher:=false; + if pos(s2,s)>0 then + loop_higher :=false; + until not loop_higher; +@@ -2936,14 +2934,9 @@ procedure TWatch.Get_new_value; + loop_higher:=false; + end; + if found then +- p:=StrNew(Debugger^.GetOutput) ++ current_value:=StrNew(PChar('= ' + s)) + else +- begin +- { get a reasonable output at least } +- s:=GetStr(expr); +- GetValue(s); +- p:=StrNew(Debugger^.GetError); +- end; ++ current_value:=StrNew(PChar(orig_s_result)); + Debugger^.got_error:=false; + { We should try here to find the expr in parent + procedure if there are +@@ -2955,31 +2948,6 @@ procedure TWatch.Get_new_value; + if curframe<>startframe then + Debugger^.set_current_frame(startframe); + +- q:=nil; +- if assigned(p) and (p[0]='$') then +- q:=StrPos(p,'='); +- if not assigned(q) then +- q:=p; +- if assigned(q) then +- i:=strlen(q) +- else +- i:=0; +- if (i>0) and (q[i-1]=#10) then +- begin +- while (i>1) and ((q[i-2]=' ') or (q[i-2]=#9)) do +- dec(i); +- last_removed:=q[i-1]; +- q[i-1]:=#0; +- end +- else +- last_removed:=#0; +- if assigned(q) then +- current_value:=strnew(q) +- else +- current_value:=strnew(''); +- if last_removed<>#0 then +- q[i-1]:=last_removed; +- strdispose(p); + GDBRunCount:=Debugger^.RunCount; + end; + {$else NODEBUG} +@@ -3523,12 +3491,8 @@ end; + exit; + DeskTop^.Lock; + Clear; +- { forget all old frames } +- Debugger^.clear_frames; + +- if Debugger^.WindowWidth<>-1 then +- Debugger^.Command('set width 0xffffffff'); +- Debugger^.Command('backtrace'); ++ Debugger^.Backtrace; + { generate list } + { all is in tframeentry } + for i:=0 to Debugger^.frame_count-1 do +@@ -3539,7 +3503,7 @@ end; + AddItem(new(PMessageItem,init(0,GetPChar(function_name)+GetPChar(args), + AddModuleName(GetPChar(file_name)),line_number,1))) + else +- AddItem(new(PMessageItem,init(0,HexStr(address,8)+' '+GetPChar(function_name)+GetPChar(args), ++ AddItem(new(PMessageItem,init(0,HexStr(address,SizeOf(address)*2)+' '+GetPChar(function_name)+GetPChar(args), + AddModuleName(''),line_number,1))); + W:=SearchOnDesktop(GetPChar(file_name),false); + { First reset all Debugger rows } +@@ -3568,8 +3532,6 @@ end; + end; + if Assigned(list) and (List^.Count > 0) then + FocusItem(0); +- if Debugger^.WindowWidth<>-1 then +- Debugger^.Command('set width '+IntToStr(Debugger^.WindowWidth)); + DeskTop^.Unlock; + {$endif NODEBUG} + end; +@@ -3585,7 +3547,7 @@ end; + { select frame for watches } + If not assigned(Debugger) then + exit; +- Debugger^.Command('f '+IntToStr(Focused)); ++ Debugger^.SelectFrameCommand(Focused); + { for local vars } + Debugger^.RereadWatches; + {$endif NODEBUG} +@@ -3599,7 +3561,7 @@ end; + { select frame for watches } + If not assigned(Debugger) then + exit; +- Debugger^.Command('f '+IntToStr(Focused)); ++ Debugger^.SelectFrameCommand(Focused); + { for local vars } + Debugger^.RereadWatches; + {$endif} +diff --git a/fpcsrc/ide/fpdesk.pas b/fpcsrc/ide/fpdesk.pas +index 0ff9f243..957187c5 100644 +--- a/fpcsrc/ide/fpdesk.pas ++++ b/fpcsrc/ide/fpdesk.pas +@@ -356,7 +356,8 @@ end; + function DeskUseSyntaxHighlight(Editor: PFileEditor): boolean; + var b : boolean; + begin +- b:= (*(Editor^.IsFlagSet(efSyntaxHighlight)) and *) ((Editor^.FileName='') or MatchesFileList(NameAndExtOf(Editor^.FileName),HighlightExts)); ++ b:= (*(Editor^.IsFlagSet(efSyntaxHighlight)) and *) ((Editor^.FileName='') or ++ MatchesMaskList(NameAndExtOf(Editor^.FileName),HighlightExts)); + DeskUseSyntaxHighlight:=b; + end; + +@@ -368,10 +369,14 @@ var S: PMemoryStream; + Title: string; + XDataOfs: word; + XData: array[0..1024] of byte; ++ + procedure GetData(var B; Size: word); + begin +- Move(XData[XDataOfs],B,Size); +- Inc(XDataOfs,Size); ++ if Size>0 Then ++ Begin ++ Move(XData[XDataOfs],B,Size); ++ Inc(XDataOfs,Size); ++ End; + end; + procedure ProcessWindowInfo; + var W: PWindow; +@@ -381,6 +386,9 @@ var W: PWindow; + TP,TP2: TPoint; + L: longint; + R: TRect; ++ ZZ: byte; ++ Z: TRect; ++ Len : Byte; + begin + XDataOfs:=0; + Desktop^.Lock; +@@ -388,8 +396,9 @@ begin + case WI.HelpCtx of + hcSourceWindow : + begin +- GetData(St[0],1); +- GetData(St[1],ord(St[0])); ++ GetData(len,1); ++ SetLength(St,Len); ++ GetData(St[1],Len); + W:=ITryToOpenFile(@WI.Bounds,St,0,0,false,false,true); + if Assigned(W)=false then + begin +@@ -531,6 +540,29 @@ begin + end + else + W^.Hide; ++ ZZ:=0; ++ Desktop^.GetExtent(Z); ++ if R.A.Y>Z.B.Y-7 then ++ begin ++ R.A.Y:=Z.B.Y-7; ++ ZZ:=1; ++ end; ++ if R.A.X>Z.B.X-4 then ++ begin ++ R.A.X:=Z.B.X-4; ++ ZZ:=1; ++ end; ++ if R.A.Y<0 then ++ begin ++ R.A.Y:=0; ++ ZZ:=1; ++ end; ++ if R.A.X<0 then ++ begin ++ R.A.X:=0; ++ ZZ:=1; ++ end; ++ if ZZ<>0 then W^.MoveTo(R.A.X,R.A.Y); + W^.Number:=WI.WinNb; + Desktop^.Unlock; + end; +@@ -553,7 +585,7 @@ begin + S^.Read(WI,sizeof(WI)); + if S^.Status=stOK then + begin +- Title[0]:=chr(WI.TitleLen); ++ SetLength(Title,WI.TitleLen); + S^.Read(Title[1],WI.TitleLen); + if WI.ExtraDataSize>0 then + S^.Read(XData,WI.ExtraDataSize); +diff --git a/fpcsrc/ide/fpide.pas b/fpcsrc/ide/fpide.pas +index 2d89e5ec..b95c2305 100644 +--- a/fpcsrc/ide/fpide.pas ++++ b/fpcsrc/ide/fpide.pas +@@ -794,14 +794,14 @@ end; + + function IDEUseSyntaxHighlight(Editor: PFileEditor): boolean; + begin +- IDEUseSyntaxHighlight:=(Editor^.IsFlagSet(efSyntaxHighlight)) and ((Editor^.FileName='') or MatchesFileList(NameAndExtOf(Editor^.FileName),HighlightExts)); ++ IDEUseSyntaxHighlight:=(Editor^.IsFlagSet(efSyntaxHighlight)) and ((Editor^.FileName='') or MatchesMaskList(NameAndExtOf(Editor^.FileName),HighlightExts)); + end; + + function IDEUseTabsPattern(Editor: PFileEditor): boolean; + begin + { the commented code lead all new files + to become with TAB use enabled which is wrong in my opinion PM } +- IDEUseTabsPattern:={(Editor^.FileName='') or }MatchesFileList(NameAndExtOf(Editor^.FileName),TabsPattern); ++ IDEUseTabsPattern:={(Editor^.FileName='') or }MatchesMaskList(NameAndExtOf(Editor^.FileName),TabsPattern); + end; + + constructor TIDEApp.Init; +diff --git a/fpcsrc/ide/fpini.pas b/fpcsrc/ide/fpini.pas +index f9116835..cb5d740f 100644 +--- a/fpcsrc/ide/fpini.pas ++++ b/fpcsrc/ide/fpini.pas +@@ -431,7 +431,9 @@ begin + { First read the primary file, which can also set the parameters which can + be overruled with the parameter loading } + SetPrimaryFile(INIFile^.GetEntry(secCompile,iePrimaryFile,PrimaryFile)); ++{$ifndef GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + DebuggeeTTY := INIFile^.GetEntry(secRun,ieDebuggeeRedir,DebuggeeTTY); ++{$endif not GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + {$ifdef SUPPORT_REMOTE} + RemoteMachine :=INIFile^.GetEntry(secRun,ieRemoteMachine,RemoteMachine); + RemotePort :=INIFile^.GetEntry(secRun,ieRemotePort,RemotePort); +@@ -653,8 +655,10 @@ begin + INIFile^.SetEntry(secRun,ieRunDir,GetRunDir); + INIFile^.SetEntry(secRun,ieRunParameters,GetRunParameters); + INIFile^.SetEntry(secFiles,iePrinterDevice,GetPrinterDevice); ++{$ifndef GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + { If DebuggeeTTY<>'' then } + INIFile^.SetEntry(secRun,ieDebuggeeRedir,DebuggeeTTY); ++{$endif not GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + {$ifdef SUPPORT_REMOTE} + INIFile^.SetEntry(secRun,ieRemoteMachine,RemoteMachine); + INIFile^.SetEntry(secRun,ieRemotePort,RemotePort); +diff --git a/fpcsrc/ide/fpmake.pp b/fpcsrc/ide/fpmake.pp +index 60c437ea..63b31aa1 100644 +--- a/fpcsrc/ide/fpmake.pp ++++ b/fpcsrc/ide/fpmake.pp +@@ -9,6 +9,7 @@ uses + + const + NoGDBOption: boolean = false; ++ GDBMIOption: boolean = false; + + procedure ide_check_gdb_availability(Sender: TObject); + +@@ -75,7 +76,15 @@ begin + P := sender as TPackage; + with installer do + begin +- if not (NoGDBOption) then ++ if GDBMIOption then ++ begin ++ BuildEngine.log(vlCommand, 'Compiling IDE with GDB/MI debugger support, LibGDB is not needed'); ++ P.Options.Add('-dGDBMI'); ++ { AIX also requires -CTsmalltoc for gdbmi } ++ if Defaults.OS=aix then ++ P.Options.Add('-CTsmalltoc'); ++ end ++ else if not (NoGDBOption) then + begin + // Detection of GDB. + GDBLibDir := DetectLibGDBDir; +@@ -141,11 +150,15 @@ Var + begin + AddCustomFpmakeCommandlineOption('CompilerTarget','Target CPU for the IDE''s compiler'); + AddCustomFpmakeCommandlineOption('NoGDB','If value=1 or ''Y'', no GDB support'); ++ AddCustomFpmakeCommandlineOption('GDBMI','If value=1 or ''Y'', builds IDE with GDB/MI support (no need for LibGDB)'); + With Installer do + begin + s := GetCustomFpmakeCommandlineOptionValue('NoGDB'); + if (s='1') or (s='Y') then + NoGDBOption := true; ++ s := GetCustomFpmakeCommandlineOptionValue('GDBMI'); ++ if (s='1') or (s='Y') then ++ GDBMIOption := true; + s :=GetCustomFpmakeCommandlineOptionValue('CompilerTarget'); + if s <> '' then + CompilerTarget:=StringToCPU(s) +@@ -153,7 +166,7 @@ begin + CompilerTarget:=Defaults.CPU; + + P:=AddPackage('ide'); +- P.Version:='3.0.4'; ++ P.Version:='3.1.1'; + {$ifdef ALLPACKAGES} + P.Directory:=ADirectory; + {$endif ALLPACKAGES} +@@ -163,9 +176,12 @@ begin + P.Dependencies.Add('chm'); + { This one is only needed if DEBUG is set } + P.Dependencies.Add('regexpr'); +- if not (NoGDBOption) then ++ if not (NoGDBOption) and not (GDBMIOption) then + P.Dependencies.Add('gdbint',AllOSes-AllAmigaLikeOSes); ++ if GDBMIOption then ++ P.Dependencies.Add('fcl-process'); + P.Dependencies.Add('graph',[go32v2]); ++ P.Dependencies.Add('ami-extra',AllAmigaLikeOSes); + + P.SupportBuildModes:=[bmOneByOne]; + +@@ -182,15 +198,27 @@ begin + P.Options.Add('-Fi../compiler/'+CPUToString(CompilerTarget)); + P.Options.Add('-Fi../compiler'); + +- if CompilerTarget in [x86_64, i386] then ++ if CompilerTarget in [x86_64, i386, i8086] then + P.Options.Add('-Fu../compiler/x86'); + if CompilerTarget in [powerpc, powerpc64] then + P.Options.Add('-Fu../compiler/ppcgen'); ++ if CompilerTarget in [sparc] then ++ begin ++ P.Options.Add('-Fu../compiler/sparcgen'); ++ P.Options.add('-Fi../compiler/sparcgen'); ++ end; + if CompilerTarget = x86_64 then + P.Options.Add('-dNOOPT'); + if CompilerTarget = mipsel then + P.Options.Add('-Fu../compiler/mips'); + ++ { powerpc64-aix compiled IDE needs -CTsmalltoc option } ++ if (Defaults.OS=aix) and (Defaults.CPU=powerpc64) then ++ P.Options.Add('-CTsmalltoc'); ++ { Handle SPECIALLINK environment variable if available } ++ s:=GetEnvironmentVariable('SPECIALLINK'); ++ if s<>'' then ++ P.Options.Add(s); + P.Options.Add('-Sg'); + P.IncludePath.Add('compiler'); + +diff --git a/fpcsrc/ide/fpmopts.inc b/fpcsrc/ide/fpmopts.inc +index 0f7edefd..bf90ae9f 100644 +--- a/fpcsrc/ide/fpmopts.inc ++++ b/fpcsrc/ide/fpmopts.inc +@@ -547,6 +547,10 @@ begin + else + L:=0; + CB2^.SetData(L); ++{$ifdef GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} ++ { EnableMask type is longint, avoid range check error here } ++ CB2^.EnableMask := CB2^.EnableMask and longint($7ffffffe); ++{$endif GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + R2.Move(0,-1); + Insert(New(PLabel, Init(R2,label_debugger_redirection, CB2))); + {$endif Windows} +diff --git a/fpcsrc/ide/fpregs.pas b/fpcsrc/ide/fpregs.pas +index b4fff2c4..b218eff3 100644 +--- a/fpcsrc/ide/fpregs.pas ++++ b/fpcsrc/ide/fpregs.pas +@@ -42,7 +42,15 @@ uses + cs,ds,es,ss,fs,gs : word; + eflags : dword; + {$endif cpui386} +-{$ifdef cpum68k} ++{$ifdef x86_64} ++{$define cpu_known} ++ rax,rbx,rcx,rdx,rsi,rdi,rbp,rsp, ++ r8,r9,r10,r11,r12,r13,r14,r15, ++ rip : qword; ++ cs,ds,es,ss,fs,gs : word; ++ eflags : dword; ++{$endif x86_64} ++{$ifdef cpuim68k} + {$define cpu_known} + d0,d1,d2,d3,d4,d5,d6,d7 : dword; + a0,a1,a2,a3,a4,a5,fp,sp : dword; +@@ -73,6 +81,7 @@ uses + InDraw : boolean; + GDBCount : longint; + first : boolean; ++ LastOK : boolean; + constructor Init(var Bounds: TRect); + procedure Draw;virtual; + destructor Done; virtual; +@@ -90,12 +99,12 @@ uses + + TFPURegs = record + {$ifndef test_generic_cpu} +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + st0,st1,st2,st3,st4,st5,st6,st7 :string; + ftag,fop,fctrl,fstat,fiseg,foseg : word; + fioff,fooff : cardinal; +-{$endif cpui386} +-{$ifdef cpum68k} ++{$endif cpui386 or x86_64} ++{$ifdef cpuim68k} + fp0,fp1,fp2,fp3,fp4,fp5,fp6,fp7 : string; + fpcontrol,fpstatus,fpiaddr : dword; + {$endif cpum68k} +@@ -120,6 +129,7 @@ uses + UseInfoFloat : boolean; + {$endif not cpu_known} + first : boolean; ++ LastOK : boolean; + constructor Init(var Bounds: TRect); + procedure Draw;virtual; + destructor Done; virtual; +@@ -157,11 +167,11 @@ uses + + TVectorRegs = record + {$ifndef test_generic_cpu} +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + xmm : array[0..7] of string; + mmx : array[0..7] of string; + mxcsr : string; +-{$endif cpui386} ++{$endif cpui386 or x86_64} + {$ifdef cpupowerpc} + m : array[0..31] of string; + {$endif cpupowerpc} +@@ -181,6 +191,7 @@ uses + UseInfoVector : boolean; + {$endif not cpu_known} + first : boolean; ++ LastOK : boolean; + constructor Init(var Bounds: TRect); + procedure Draw;virtual; + destructor Done; virtual; +@@ -212,7 +223,11 @@ implementation + uses + Strings, + {$ifndef NODEBUG} +- GDBCon,GDBInt, ++ {$ifdef GDBMI} ++ GDBMICon, GDBMIInt, ++ {$else GDBMI} ++ GDBCon,GDBInt, ++ {$endif GDBMI} + {$endif NODEBUG} + App,Menus, + WViews,WEditor, +@@ -265,6 +280,8 @@ const + dialog_registers = 'Register View'; + dialog_fpu = 'FPU View'; + dialog_vector = 'Vector Unit View'; ++ msg_registervaluesnotavailable = ''; ++ msg_registerwindowerror = ''; + + {**************************************************************************** + TRegistersView +@@ -275,23 +292,126 @@ const + var + p,po : pchar; + p1 : pchar; +- reg,value : string; + buffer : array[0..255] of char; +- v : dword; +- code : word; + i : byte; + + begin + GetIntRegs:=false; + {$ifndef NODEBUG} ++{$ifdef cpu_known} ++{$ifdef cpui386} ++ GetIntRegs := ++ Debugger^.GetIntRegister('eax', rs.eax) and ++ Debugger^.GetIntRegister('ebx', rs.ebx) and ++ Debugger^.GetIntRegister('ecx', rs.ecx) and ++ Debugger^.GetIntRegister('edx', rs.edx) and ++ Debugger^.GetIntRegister('esi', rs.esi) and ++ Debugger^.GetIntRegister('edi', rs.edi) and ++ Debugger^.GetIntRegister('ebp', rs.ebp) and ++ Debugger^.GetIntRegister('esp', rs.esp) and ++ Debugger^.GetIntRegister('eip', rs.eip) and ++ { under Windows flags are on a register named ps !! PM } ++ (Debugger^.GetIntRegister('eflags', rs.eflags) or Debugger^.GetIntRegister('ps', rs.eflags)) and ++ Debugger^.GetIntRegister('cs', rs.cs) and ++ Debugger^.GetIntRegister('ds', rs.ds) and ++ Debugger^.GetIntRegister('es', rs.es) and ++ Debugger^.GetIntRegister('fs', rs.fs) and ++ Debugger^.GetIntRegister('gs', rs.gs) and ++ Debugger^.GetIntRegister('ss', rs.ss); ++{$endif cpui386} ++{$ifdef x86_64} ++ GetIntRegs := ++ Debugger^.GetIntRegister('rax', rs.rax) and ++ Debugger^.GetIntRegister('rbx', rs.rbx) and ++ Debugger^.GetIntRegister('rcx', rs.rcx) and ++ Debugger^.GetIntRegister('rdx', rs.rdx) and ++ Debugger^.GetIntRegister('rsi', rs.rsi) and ++ Debugger^.GetIntRegister('rdi', rs.rdi) and ++ Debugger^.GetIntRegister('rbp', rs.rbp) and ++ Debugger^.GetIntRegister('rsp', rs.rsp) and ++ Debugger^.GetIntRegister('r8', rs.r8) and ++ Debugger^.GetIntRegister('r9', rs.r9) and ++ Debugger^.GetIntRegister('r10', rs.r10) and ++ Debugger^.GetIntRegister('r11', rs.r11) and ++ Debugger^.GetIntRegister('r12', rs.r12) and ++ Debugger^.GetIntRegister('r13', rs.r13) and ++ Debugger^.GetIntRegister('r14', rs.r14) and ++ Debugger^.GetIntRegister('r15', rs.r15) and ++ Debugger^.GetIntRegister('rip', rs.rip) and ++ { under Windows flags are on a register named ps !! PM } ++ (Debugger^.GetIntRegister('eflags', rs.eflags) or Debugger^.GetIntRegister('ps', rs.eflags)) and ++ Debugger^.GetIntRegister('cs', rs.cs) and ++ Debugger^.GetIntRegister('ds', rs.ds) and ++ Debugger^.GetIntRegister('es', rs.es) and ++ Debugger^.GetIntRegister('fs', rs.fs) and ++ Debugger^.GetIntRegister('gs', rs.gs) and ++ Debugger^.GetIntRegister('ss', rs.ss); ++{$endif x86_64} ++{$ifdef cpuim68k} ++ GetIntRegs := ++ Debugger^.GetIntRegister('d0', rs.d0) and ++ Debugger^.GetIntRegister('d1', rs.d1) and ++ Debugger^.GetIntRegister('d2', rs.d2) and ++ Debugger^.GetIntRegister('d3', rs.d3) and ++ Debugger^.GetIntRegister('d4', rs.d4) and ++ Debugger^.GetIntRegister('d5', rs.d5) and ++ Debugger^.GetIntRegister('d6', rs.d6) and ++ Debugger^.GetIntRegister('d7', rs.d7) and ++ Debugger^.GetIntRegister('a0', rs.a0) and ++ Debugger^.GetIntRegister('a1', rs.a1) and ++ Debugger^.GetIntRegister('a2', rs.a2) and ++ Debugger^.GetIntRegister('a3', rs.a3) and ++ Debugger^.GetIntRegister('a4', rs.a4) and ++ Debugger^.GetIntRegister('a5', rs.a5) and ++ Debugger^.GetIntRegister('fp', rs.fp) and ++ Debugger^.GetIntRegister('sp', rs.sp) and ++ Debugger^.GetIntRegister('ps', rs.ps) and ++ Debugger^.GetIntRegister('pc', rs.pc); ++{$endif cpum68k} ++{$ifdef cpupowerpc} ++ GetIntRegs := true; ++ for i:=0 to 31 do ++ GetIntRegs := GetIntRegs and Debugger^.GetIntRegister('r'+inttostr(i), rs.r[i]); ++ { other regs ++ pc,ps,cr,lr,ctr,xer : dword; } ++ GetIntRegs := GetIntRegs and ++ Debugger^.GetIntRegister('pc', rs.pc) and ++ Debugger^.GetIntRegister('ps', rs.ps) and ++ Debugger^.GetIntRegister('lr', rs.lr) and ++ Debugger^.GetIntRegister('ctr', rs.ctr) and ++ Debugger^.GetIntRegister('xer', rs.xer); ++{$endif cpupowerpc} ++{$ifdef cpusparc} ++ GetIntRegs := true; ++ for i:=0 to 7 do ++ GetIntRegs := GetIntRegs and Debugger^.GetIntRegister('o'+inttostr(i), rs.o[i]); ++ for i:=0 to 7 do ++ if i = 6 then ++ GetIntRegs := GetIntRegs and (Debugger^.GetIntRegister('i6', rs.i[6]) or Debugger^.GetIntRegister('fp', rs.i[6])) ++ else ++ GetIntRegs := GetIntRegs and Debugger^.GetIntRegister('i'+inttostr(i), rs.i[i]); ++ for i:=0 to 7 do ++ GetIntRegs := GetIntRegs and Debugger^.GetIntRegister('l'+inttostr(i), rs.l[i]); ++ for i:=0 to 7 do ++ GetIntRegs := GetIntRegs and Debugger^.GetIntRegister('g'+inttostr(i), rs.g[i]); ++ ++ GetIntRegs := GetIntRegs and ++ Debugger^.GetIntRegister('y', rs.y) and ++ Debugger^.GetIntRegister('psr', rs.psr) and ++ Debugger^.GetIntRegister('wim', rs.wim) and ++ Debugger^.GetIntRegister('tbs', rs.tbr) and ++ Debugger^.GetIntRegister('pc', rs.pc) and ++ Debugger^.GetIntRegister('npc', rs.npc) and ++ Debugger^.GetIntRegister('fsr', rs.fsr) and ++ Debugger^.GetIntRegister('csr', rs.csr); ++{$endif cpusparc} ++{$else cpu_known} + Debugger^.Command('info registers'); + if Debugger^.Error then + exit + else + begin +-{$ifndef cpu_known} + i:=0; +-{$endif not cpu_known} + po:=StrNew(Debugger^.GetOutput); + p:=po; + if assigned(p) then +@@ -300,7 +420,6 @@ const + p1:=strscan(p,' '); + while assigned(p1) do + begin +-{$ifndef cpu_known} + p1:=strscan(p,#10); + if assigned(p1) then + begin +@@ -309,162 +428,6 @@ const + if i',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + {$else NODEBUG} +- If not assigned(Debugger) then ++ If (not assigned(Debugger)) or (not Debugger^.IsRunning) then + begin +- WriteStr(1,0,'',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + exit; + end; + if InDraw then exit; +@@ -538,6 +510,7 @@ const + begin + OldReg:=NewReg; + OK:=GetIntRegs(rs); ++ LastOK:=OK; + NewReg:=rs; + { get inital values } + if first then +@@ -550,7 +523,7 @@ const + else + begin + rs:=NewReg; +- OK:=true; ++ OK:=LastOK; + end; + if OK then + begin +@@ -603,7 +576,71 @@ const + SetColor(rs.eflags and $400,OldReg.eflags and $400); + WriteStr(22,7,'d='+chr(byte((rs.eflags and $400)<>0)+48),color); + {$endif cpui386} +-{$ifdef cpum68k} ++{$ifdef x86_64} ++ SetColor(rs.rax,OldReg.rax); ++ WriteStr(1,0,'RAX '+HexStr(rs.rax,16),color); ++ SetColor(rs.rbx,OldReg.rbx); ++ WriteStr(1,1,'RBX '+HexStr(rs.rbx,16),color); ++ SetColor(rs.rcx,OldReg.rcx); ++ WriteStr(1,2,'RCX '+HexStr(rs.rcx,16),color); ++ SetColor(rs.rdx,OldReg.rdx); ++ WriteStr(1,3,'RDX '+HexStr(rs.rdx,16),color); ++ SetColor(rs.rsi,OldReg.rsi); ++ WriteStr(1,4,'RSI '+HexStr(rs.rsi,16),color); ++ SetColor(rs.rdi,OldReg.rdi); ++ WriteStr(1,5,'RDI '+HexStr(rs.rdi,16),color); ++ SetColor(rs.rbp,OldReg.rbp); ++ WriteStr(1,6,'RBP '+HexStr(rs.rbp,16),color); ++ SetColor(rs.rsp,OldReg.rsp); ++ WriteStr(1,7,'RSP '+HexStr(rs.rsp,16),color); ++ SetColor(rs.r8,OldReg.r8); ++ WriteStr(1,8,'R8 '+HexStr(rs.r8,16),color); ++ SetColor(rs.r9,OldReg.r9); ++ WriteStr(1,9,'R9 '+HexStr(rs.r9,16),color); ++ SetColor(rs.r10,OldReg.r10); ++ WriteStr(1,10,'R10 '+HexStr(rs.r10,16),color); ++ SetColor(rs.r11,OldReg.r11); ++ WriteStr(1,11,'R11 '+HexStr(rs.r11,16),color); ++ SetColor(rs.r12,OldReg.r12); ++ WriteStr(1,12,'R12 '+HexStr(rs.r12,16),color); ++ SetColor(rs.r13,OldReg.r13); ++ WriteStr(1,13,'R13 '+HexStr(rs.r13,16),color); ++ SetColor(rs.r14,OldReg.r14); ++ WriteStr(1,14,'R14 '+HexStr(rs.r14,16),color); ++ SetColor(rs.r15,OldReg.r15); ++ WriteStr(1,15,'R15 '+HexStr(rs.r15,16),color); ++ SetColor(rs.rip,OldReg.rip); ++ WriteStr(1,16,'RIP '+HexStr(rs.rip,16),color); ++ SetColor(rs.cs,OldReg.cs); ++ WriteStr(22,11,'CS '+HexStr(rs.cs,4),color); ++ SetColor(rs.ds,OldReg.ds); ++ WriteStr(22,12,'DS '+HexStr(rs.ds,4),color); ++ SetColor(rs.es,OldReg.es); ++ WriteStr(22,13,'ES '+HexStr(rs.es,4),color); ++ SetColor(rs.fs,OldReg.fs); ++ WriteStr(22,14,'FS '+HexStr(rs.fs,4),color); ++ SetColor(rs.gs,OldReg.gs); ++ WriteStr(22,15,'GS '+HexStr(rs.gs,4),color); ++ SetColor(rs.ss,OldReg.ss); ++ WriteStr(22,16,'SS '+HexStr(rs.ss,4),color); ++ SetColor(rs.eflags and $1,OldReg.eflags and $1); ++ WriteStr(24,0,'c='+chr(byte((rs.eflags and $1)<>0)+48),color); ++ SetColor(rs.eflags and $20,OldReg.eflags and $20); ++ WriteStr(24,1,'z='+chr(byte((rs.eflags and $20)<>0)+48),color); ++ SetColor(rs.eflags and $80,OldReg.eflags and $80); ++ WriteStr(24,2,'s='+chr(byte((rs.eflags and $80)<>0)+48),color); ++ SetColor(rs.eflags and $800,OldReg.eflags and $800); ++ WriteStr(24,3,'o='+chr(byte((rs.eflags and $800)<>0)+48),color); ++ SetColor(rs.eflags and $4,OldReg.eflags and $4); ++ WriteStr(24,4,'p='+chr(byte((rs.eflags and $4)<>0)+48),color); ++ SetColor(rs.eflags and $200,OldReg.eflags and $200); ++ WriteStr(24,5,'i='+chr(byte((rs.eflags and $200)<>0)+48),color); ++ SetColor(rs.eflags and $10,OldReg.eflags and $10); ++ WriteStr(24,6,'a='+chr(byte((rs.eflags and $10)<>0)+48),color); ++ SetColor(rs.eflags and $400,OldReg.eflags and $400); ++ WriteStr(24,7,'d='+chr(byte((rs.eflags and $400)<>0)+48),color); ++{$endif x86_64} ++{$ifdef cpuim68k} + SetColor(rs.d0,OldReg.d0); + WriteStr(1,0,'d0 '+HexStr(longint(rs.d0),8),color); + SetColor(rs.d1,OldReg.d1); +@@ -717,7 +754,7 @@ const + {$endif cpu_known} + end + else +- WriteStr(0,0,'',7); ++ WriteStr(0,0,msg_registerwindowerror,7); + InDraw:=false; + {$endif NODEBUG} + end; +@@ -743,13 +780,17 @@ const + R.A.X:=R.B.X-28; + R.B.Y:=R.A.Y+11; + {$endif cpui386} +-{$ifdef cpum68k} ++{$ifdef x86_64} ++ R.A.X:=R.B.X-32; ++ R.B.Y:=R.A.Y+19; ++{$endif x86_64} ++{$ifdef cpuim68k} + R.A.X:=R.B.X-28; + R.B.Y:=R.A.Y+11; + {$endif cpum68k} + {$ifdef cpupowerpc} +- R.A.X:=R.B.X-28; +- R.B.Y:=R.A.Y+22; ++ R.A.X:=R.B.X-30; ++ R.B.Y:=R.A.Y+21; + {$endif cpupowerpc} + {$ifdef cpusparc} + R.A.X:=R.B.X-30; +@@ -883,7 +924,7 @@ const + if v[i]=#9 then + v[i]:=' '; + val(v,res,err); +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + if reg='st0' then + rs.st0:=v + else if reg='st1' then +@@ -916,8 +957,8 @@ const + rs.fooff:=res + else if reg='fop' then + rs.fop:=res; +-{$endif cpui386} +-{$ifdef cpum68k} ++{$endif cpui386 or x86_64} ++{$ifdef cpuim68k} + if reg='fp0' then + rs.fp0:=v + else if reg='fp1' then +@@ -1021,11 +1062,11 @@ const + begin + inherited draw; + {$ifdef NODEBUG} +- WriteStr(1,0,'',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + {$else NODEBUG} +- If not assigned(Debugger) then ++ If (not assigned(Debugger)) or (not Debugger^.IsRunning) then + begin +- WriteStr(1,0,'',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + exit; + end; + if InDraw then +@@ -1039,6 +1080,7 @@ const + ,UseInfoFloat + {$endif not cpu_known} + ); ++ LastOK:=OK; + NewReg:=rs; + { get inital values } + if first then +@@ -1051,12 +1093,12 @@ const + else + begin + rs:=newreg; +- OK:=true; ++ OK:=LastOK; + end; + if OK then + begin + {$ifdef cpu_known} +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + top:=(rs.fstat shr 11) and 7; + SetColor(rs.st0,OldReg.st0); + WriteStr(1,0,'ST0 '+TypeStr[(rs.ftag shr (2*((0+top) and 7))) and 3]+rs.st0,color); +@@ -1094,8 +1136,8 @@ const + else + color:=7; + WriteStr(1,11,'FO '+hexstr(rs.foseg,4)+':'+hexstr(rs.fooff,8),color); +-{$endif cpui386} +-{$ifdef cpum68k} ++{$endif cpui386 or x86_64} ++{$ifdef cpuim68k} + SetColor(rs.fp0,OldReg.fp0); + WriteStr(1,0,'fp0 '+rs.fp0,color); + SetColor(rs.fp1,OldReg.fp1); +@@ -1148,7 +1190,7 @@ const + {$endif cpu_known} + end + else +- WriteStr(0,0,'',7); ++ WriteStr(0,0,msg_registerwindowerror,7); + InDraw:=false; + {$endif NODEBUG} + end; +@@ -1170,11 +1212,11 @@ const + + begin + Desktop^.GetExtent(R); +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + R.A.X:=R.B.X-44; + R.B.Y:=R.A.Y+14; +-{$endif cpui386} +-{$ifdef cpum68k} ++{$endif cpui386 or x86_64} ++{$ifdef cpuim68k} + R.A.X:=R.B.X-44; + R.B.Y:=R.A.Y+14; + {$endif cpum68k} +@@ -1194,7 +1236,7 @@ const + Flags:=wfClose or wfMove or wfgrow; + Palette:=wpCyanWindow; + HelpCtx:=hcFPURegisters; +- R.Assign(1,1,Size.X-2,Size.Y-2); ++ R.Assign(1,1,Size.X-2,Size.Y-1); + RV:=new(PFPUView,init(R)); + Insert(RV); + If assigned(FPUWindow) then +@@ -1312,7 +1354,7 @@ const + if v[i]=#9 then + v[i]:=' '; + val(v,res,err); +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + if reg[1]='x' then + for i:=0 to 7 do + begin +@@ -1327,7 +1369,7 @@ const + if reg='mm'+inttostr(i) then + rs.mmx[i]:=v; + end; +-{$endif cpui386} ++{$endif cpui386 or x86_64} + {$ifdef cpupowerpc} + { !!!! fixme } + if reg[1]='v' then +@@ -1405,11 +1447,11 @@ const + begin + inherited draw; + {$ifdef NODEBUG} +- WriteStr(1,0,'',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + {$else NODEBUG} +- If not assigned(Debugger) then ++ If (not assigned(Debugger)) or (not Debugger^.IsRunning) then + begin +- WriteStr(1,0,'',7); ++ WriteStr(1,0,msg_registervaluesnotavailable,7); + exit; + end; + if InDraw then +@@ -1423,6 +1465,7 @@ const + ,UseInfoVector + {$endif not cpu_known} + ); ++ LastOK:=OK; + NewReg:=rs; + { get inital values } + if first then +@@ -1435,12 +1478,12 @@ const + else + begin + rs:=newreg; +- OK:=true; ++ OK:=LastOK; + end; + if OK then + begin + {$ifdef cpu_known} +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + for i:=0 to 7 do + begin + SetColor(rs.xmm[i],OldReg.xmm[i]); +@@ -1455,7 +1498,7 @@ const + SetColor(rs.mmx[i],OldReg.mmx[i]); + WriteStr(1,i+9,'mmx'+IntToStr(i)+' '+rs.mmx[i],color); + end; +-{$endif cpui386} ++{$endif cpui386 or x86_64} + {$ifdef cpupowerpc} + for i:=0 to 31 do + begin +@@ -1478,7 +1521,7 @@ const + {$endif cpu_known} + end + else +- WriteStr(0,0,'',7); ++ WriteStr(0,0,msg_registerwindowerror,7); + InDraw:=false; + {$endif NODEBUG} + end; +@@ -1500,11 +1543,11 @@ const + + begin + Desktop^.GetExtent(R); +-{$ifdef cpui386} ++{$if defined(i386) or defined(x86_64)} + R.A.X:=R.B.X-60; + R.B.Y:=R.A.Y+20; +-{$endif cpui386} +-{$ifdef cpum68k} ++{$endif cpui386 or x86_64} ++{$ifdef cpuim68k} + R.A.X:=R.B.X-60; + R.B.Y:=R.A.Y+14; + {$endif cpum68k} +@@ -1524,7 +1567,7 @@ const + Flags:=wfClose or wfMove or wfgrow; + Palette:=wpCyanWindow; + HelpCtx:=hcVectorRegisters; +- R.Assign(1,1,Size.X-2,Size.Y-2); ++ R.Assign(1,1,Size.X-2,Size.Y-1); + RV:=new(PVectorView,init(R)); + Insert(RV); + If assigned(VectorWindow) then +diff --git a/fpcsrc/ide/fpusrscr.pas b/fpcsrc/ide/fpusrscr.pas +index 1dd6c1aa..03550950 100644 +--- a/fpcsrc/ide/fpusrscr.pas ++++ b/fpcsrc/ide/fpusrscr.pas +@@ -955,9 +955,10 @@ const + procedure UpdateFileHandles; + begin + {StdInputHandle:=longint(GetStdHandle(STD_INPUT_HANDLE));} +- StdOutputHandle:=longint(GetStdHandle(cardinal(STD_OUTPUT_HANDLE))); ++ StdOutputHandle:=THandle(GetStdHandle(cardinal(STD_OUTPUT_HANDLE))); + {StdErrorHandle:=longint(GetStdHandle(STD_ERROR_HANDLE));} + TextRec(Output).Handle:=StdOutputHandle; ++ VideoSetConsoleOutHandle(StdOutputHandle); + TextRec(StdOut).Handle:=StdOutputHandle; + {TextRec(StdErr).Handle:=StdErrorHandle;} + end; +diff --git a/fpcsrc/ide/fpvars.pas b/fpcsrc/ide/fpvars.pas +index 02ec192b..32a609aa 100644 +--- a/fpcsrc/ide/fpvars.pas ++++ b/fpcsrc/ide/fpvars.pas +@@ -145,7 +145,11 @@ const ClipboardWindow : PClipboardWindow = nil; + '"$REMOTEEXECCOMMAND" $DOITINBACKGROUND'; + {$endif SUPPORT_REMOTE} + ++{$ifdef GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} ++ DebuggeeTTY : string = 'on'; ++{$else GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + DebuggeeTTY : string = ''; ++{$endif GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} + + ActionCommands : array[acFirstAction..acLastAction] of word = + (cmHelpTopicSearch,cmGotoCursor,cmToggleBreakpoint, +diff --git a/fpcsrc/ide/fpviews.pas b/fpcsrc/ide/fpviews.pas +index 903f5bb3..4de85159 100644 +--- a/fpcsrc/ide/fpviews.pas ++++ b/fpcsrc/ide/fpviews.pas +@@ -26,6 +26,14 @@ uses + WEditor,WCEdit, + WUtils,WHelp,WHlpView,WViews,WANSI, + Comphook, ++{$ifndef NODEBUG} ++ { Needed here for CORE_ADDR definition } ++ {$ifdef GDBMI} ++ gdbmiint, ++ {$else GDBMI} ++ gdbint, ++ {$endif GDBMI} ++{$endif NODEBUG} + FPConst,FPUsrScr; + + type +@@ -224,7 +232,7 @@ type + + PDisasLine = ^TDisasLine; + TDisasLine = object(TLine) +- address : cardinal;{ should be target size of address for cross debuggers } ++ address : CORE_ADDR;{ should be target size of address for cross debuggers } + end; + + PDisasLineCollection = ^TDisasLineCollection; +@@ -241,13 +249,13 @@ type + procedure ReleaseSource; + destructor Done;virtual; + procedure AddSourceLine(const AFileName: string;line : longint); virtual; +- procedure AddAssemblyLine(const S: string;AAddress : cardinal); virtual; +- function GetCurrentLine(address : cardinal) : PDisasLine; ++ procedure AddAssemblyLine(const S: string;AAddress : CORE_ADDR); virtual; ++ function GetCurrentLine(address : CORE_ADDR) : PDisasLine; + private + Source : PSourceWindow; + OwnsSource : Boolean; + DisasLines : PDisasLineCollection; +- MinAddress,MaxAddress : cardinal; ++ MinAddress,MaxAddress : CORE_ADDR; + CurL : PDisasLine; + end; + +@@ -257,12 +265,12 @@ type + Indicator : PIndicator; + constructor Init(var Bounds: TRect); + procedure LoadFunction(Const FuncName : string); +- procedure LoadAddress(Addr : cardinal); ++ procedure LoadAddress(Addr : CORE_ADDR); + function ProcessPChar(p : pchar) : boolean; + procedure HandleEvent(var Event: TEvent); virtual; + procedure WriteSourceString(Const S : string;line : longint); +- procedure WriteDisassemblyString(Const S : string;address : cardinal); +- procedure SetCurAddress(address : cardinal); ++ procedure WriteDisassemblyString(Const S : string;address : CORE_ADDR); ++ procedure SetCurAddress(address : CORE_ADDR); + procedure UpdateCommands; virtual; + function GetPalette: PPalette;virtual; + destructor Done; virtual; +@@ -556,9 +564,6 @@ uses + {$ifdef USE_EXTERNAL_COMPILER} + fpintf, { superseeds version_string of version unit } + {$endif USE_EXTERNAL_COMPILER} +-{$ifndef NODEBUG} +- gdbint, +-{$endif NODEBUG} + {$ifdef VESA}Vesa,{$endif} + FPSwitch,FPSymbol,FPDebug,FPVars,FPUtils,FPCompil,FPHelp, + FPTools,FPIDE,FPCodTmp,FPCodCmp; +@@ -2490,8 +2495,10 @@ begin + Editor^.AddLine(''); + Insert(Editor); + {$ifndef NODEBUG} ++ {$ifndef GDBMI} + if assigned(Debugger) then +- Debugger^.SetWidth(Size.X-1); ++ Debugger^.SetCommand('width ' + IntToStr(Size.X-1)); ++ {$endif GDBMI} + {$endif NODEBUG} + Editor^.silent:=false; + Editor^.AutoRepeat:=true; +@@ -2575,7 +2582,10 @@ begin + While assigned(p) and (p^<>#0) do + begin + pe:=strscan(p,#10); +- if pe<>nil then ++ { if pe-p is more than High(s), discard for this round } ++ if (pe<>nil) and (pe-p > high(s)) then ++ pe:=nil; ++ if (pe<>nil) then + pe^:=#0; + s:=strpas(p); + If IsError then +@@ -2586,16 +2596,16 @@ begin + if pe<>nil then + pe^:=#10; + if pe=nil then +- p:=nil +- else + begin +- if pe-p > High(s) then +- p:=p+High(s)-1 ++ if strlen(p)0 then +- inherited AddLine('$'+hexstr(AAddress,sizeof(PtrUInt)*2)+S) ++ inherited AddLine('$'+hexstr(AAddress,sizeof(CORE_ADDR)*2)+S) + else + inherited AddLine(S); + PL:=DisasLines^.At(DisasLines^.count-1); +@@ -2703,7 +2713,7 @@ begin + MaxAddress:=AAddress; + end; + +-function TDisassemblyEditor.GetCurrentLine(address : cardinal) : PDisasLine; ++function TDisassemblyEditor.GetCurrentLine(address : CORE_ADDR) : PDisasLine; + + function IsCorrectLine(PL : PDisasLine) : boolean; + begin +@@ -2757,9 +2767,9 @@ var + begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; +- Debugger^.Command('set print sym on'); +- Debugger^.Command('set width 0xffffffff'); +- Debugger^.Command('disas '+FuncName); ++ Debugger^.SetCommand('print symbol on'); ++ Debugger^.SetCommand('width 0xffffffff'); ++ Debugger^.Command('disas /m '+FuncName); + p:=StrNew(Debugger^.GetOutput); + ProcessPChar(p); + if (Debugger^.IsRunning) and (FuncName='') then +@@ -2767,15 +2777,15 @@ begin + {$endif NODEBUG} + end; + +-procedure TDisassemblyWindow.LoadAddress(Addr : cardinal); ++procedure TDisassemblyWindow.LoadAddress(Addr : CORE_ADDR); + var + p : pchar; + begin + {$ifndef NODEBUG} + If not assigned(Debugger) then Exit; +- Debugger^.Command('set print sym on'); +- Debugger^.Command('set width 0xffffffff'); +- Debugger^.Command('disas 0x'+HexStr(Addr,8)); ++ Debugger^.SetCommand('print symbol on'); ++ Debugger^.SetCommand('width 0xffffffff'); ++ Debugger^.Command('disas /m 0x'+HexStr(Addr,sizeof(Addr)*2)); + p:=StrNew(Debugger^.GetOutput); + ProcessPChar(p); + if Debugger^.IsRunning and +@@ -2791,7 +2801,7 @@ var + p1: pchar; + pline : pchar; + pos1, pos2, CurLine, PrevLine : longint; +- CurAddr : cardinal; ++ CurAddr : CORE_ADDR; + err : word; + curaddress, cursymofs, CurFile, + PrevFile, line : string; +@@ -2812,7 +2822,7 @@ begin + pline:=strscan(p,#10); + if assigned(pline) then + pline^:=#0; +- line:=strpas(p); ++ line:=trim(strpas(p)); + CurAddr:=0; + if assigned(pline) then + begin +@@ -2822,11 +2832,17 @@ begin + else + p:=nil; + { now process the line } ++ { Remove current position marker } ++ if copy(line,1,3)='=> ' then ++ begin ++ system.delete(line,1,3); ++ end; ++ + { line is hexaddr assembly } + pos1:=pos('<',line); + if pos1>0 then + begin +- curaddress:=copy(line,1,pos1-1); ++ curaddress:=trim(copy(line,1,pos1-1)); + if copy(curaddress,1,2)='0x' then + curaddress:='$'+copy(curaddress,3,length(curaddress)-2); + val(curaddress,CurAddr,err); +@@ -2883,12 +2899,12 @@ begin + Editor^.AddSourceLine(S,line); + end; + +-procedure TDisassemblyWindow.WriteDisassemblyString(Const S : string;address : cardinal); ++procedure TDisassemblyWindow.WriteDisassemblyString(Const S : string;address : CORE_ADDR); + begin + Editor^.AddAssemblyLine(S,address); + end; + +-procedure TDisassemblyWindow.SetCurAddress(address : cardinal); ++procedure TDisassemblyWindow.SetCurAddress(address : CORE_ADDR); + begin + if (addressEditor^.MaxAddress) then + LoadAddress(address); +@@ -4229,7 +4245,7 @@ end; + constructor TFPAboutDialog.Init; + var R,R2: TRect; + C: PUnsortedStringCollection; +- I: integer; ++ I,nblines: integer; + OSStr: string; + procedure AddLine(S: string); + begin +@@ -4256,13 +4272,28 @@ begin + if pos('Fake',GDBVersion)=0 then + begin + R2.Move(0,1); ++ nblines:=1; ++ for i:=1 to length(GDBVersion) do ++ if GDBVersion[i]=#13 then ++ inc(nblines); ++ R2.B.Y:=R2.A.Y+nblines; ++ if nblines>1 then ++ GrowTo(Size.X,Size.Y+nblines-1); ++ {$ifdef GDBMI} ++ if GDBVersionOK then ++ Insert(New(PStaticText, Init(R2, FormatStrStr2(^C'(%s %s, using MI interface)',label_about_debugger,GDBVersion)))) ++ else ++ Insert(New(PStaticText, Init(R2, FormatStrStr(^C'%s',GDBVersion)))); ++ {$else} + Insert(New(PStaticText, Init(R2, FormatStrStr2(^C'(%s %s)',label_about_debugger,GDBVersion)))); +- R2.Move(0,1); ++ {$endif} ++ R2.Move(0,nblines); ++ R2.B.Y:=R2.A.Y+1; + end + else + {$endif NODEBUG} + R2.Move(0,2); +- Insert(New(PStaticText, Init(R2, ^C'Copyright (C) 1998-2016 by'))); ++ Insert(New(PStaticText, Init(R2, ^C'Copyright (C) 1998-2017 by'))); + R2.Move(0,2); + Insert(New(PStaticText, Init(R2, ^C'B‚rczi G bor'))); + R2.Move(0,1); +@@ -4291,6 +4322,9 @@ begin + AddLine(^C'Peter Vreman'); + AddLine(^C'Pierre Muller'); + AddLine(''); ++ AddLine(^C'< GDBMI development >'); ++ AddLine(^C'Nikolay Nikolov'); ++ AddLine(''); + + GetExtent(R); + R.Grow(-1,-1); Inc(R.A.Y,3); +@@ -4386,7 +4420,7 @@ begin + Message(W,evCommand,cmAddChar,pointer(ptrint(ord(Report^.AsciiChar)))); + ClearEvent(Event); + end; +- ++ + cmSearchWindow+1..cmSearchWindow+99 : + if (Event.Command-cmSearchWindow=Number) then + ClearEvent(Event); +diff --git a/fpcsrc/ide/gdbmicon.pas b/fpcsrc/ide/gdbmicon.pas +new file mode 100644 +index 00000000..c190894f +--- /dev/null ++++ b/fpcsrc/ide/gdbmicon.pas +@@ -0,0 +1,545 @@ ++{ ++ Copyright (c) 2015 by Nikolay Nikolov ++ Copyright (c) 1998 by Peter Vreman ++ ++ This is a replacement for GDBCon, implemented on top of GDB/MI, ++ instead of LibGDB. This allows integration of GDB/MI support in the ++ text mode IDE. ++ ++ See the file COPYING.FPC, included in this distribution, ++ for details about the copyright. ++ ++ 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. ++ ++ **********************************************************************} ++ ++unit gdbmicon; ++ ++{$MODE fpc}{$H-} ++ ++{$I globdir.inc} ++ ++interface ++ ++uses ++ gdbmiint, gdbmiwrap; ++ ++type ++ TBreakpointFlags = set of (bfTemporary, bfHardware); ++ TWatchpointType = (wtWrite, wtReadWrite, wtRead); ++ TPrintFormatType = (pfbinary, pfdecimal, pfhexadecimal, pfoctal, pfnatural); ++ ++ TGDBController = object(TGDBInterface) ++ private ++ FRegisterNames: array of AnsiString; ++ procedure UpdateRegisterNames; ++ function GetGdbRegisterNo(const RegName: string): LongInt; ++ function GetRegisterAsString(const RegName, Format: string; var Value: string): Boolean; ++ procedure RunExecCommand(const Cmd: string); ++ protected ++ TBreakNumber, ++ start_break_number: LongInt; ++ in_command: LongInt; ++ ++ procedure CommandBegin(const s: string); virtual; ++ procedure CommandEnd(const s: string); virtual; ++ ++ public ++ constructor Init; ++ destructor Done; ++ ++ procedure Command(const s: string); ++ procedure Reset; virtual; ++ { tracing } ++ procedure StartTrace; ++ procedure Run; virtual; ++ procedure TraceStep; ++ procedure TraceNext; ++ procedure TraceStepI; ++ procedure TraceNextI; ++ procedure Continue; virtual; ++ procedure UntilReturn; virtual; ++ { registers } ++ function GetIntRegister(const RegName: string; var Value: UInt64): Boolean; ++ function GetIntRegister(const RegName: string; var Value: Int64): Boolean; ++ function GetIntRegister(const RegName: string; var Value: UInt32): Boolean; ++ function GetIntRegister(const RegName: string; var Value: Int32): Boolean; ++ function GetIntRegister(const RegName: string; var Value: UInt16): Boolean; ++ function GetIntRegister(const RegName: string; var Value: Int16): Boolean; ++ { set command } ++ function SetCommand(Const SetExpr : string) : boolean; ++ { print } ++ function PrintCommand(const expr : string): AnsiString; ++ function PrintFormattedCommand(const expr : string; Format : TPrintFormatType): AnsiString; ++ { breakpoints } ++ function BreakpointInsert(const location: string; BreakpointFlags: TBreakpointFlags): LongInt; ++ function WatchpointInsert(const location: string; WatchpointType: TWatchpointType): LongInt; ++ function BreakpointDelete(BkptNo: LongInt): Boolean; ++ function BreakpointEnable(BkptNo: LongInt): Boolean; ++ function BreakpointDisable(BkptNo: LongInt): Boolean; ++ function BreakpointCondition(BkptNo: LongInt; const ConditionExpr: string): Boolean; ++ function BreakpointSetIgnoreCount(BkptNo: LongInt; const IgnoreCount: LongInt): Boolean; ++ procedure SetTBreak(tbreakstring : string); ++ { frame commands } ++ procedure Backtrace; ++ function SelectFrameCommand(level :longint) : boolean; ++ function LoadFile(var fn: string): Boolean; ++ procedure SetDir(const s: string); ++ procedure SetArgs(const s: string); ++ end; ++ ++implementation ++ ++uses ++{$ifdef Windows} ++ Windebug, ++{$endif Windows} ++ strings; ++ ++procedure UnixDir(var s : string); ++var i : longint; ++begin ++ for i:=1 to length(s) do ++ if s[i]='\' then ++{$ifdef windows} ++ { Don't touch at '\ ' used to escapes spaces in windows file names PM } ++ if (i=length(s)) or (s[i+1]<>' ') then ++{$endif windows} ++ s[i]:='/'; ++{$ifdef windows} ++ { if we are using cygwin, we need to convert e:\ into /cygdriveprefix/e/ PM } ++ if using_cygwin_gdb and (length(s)>2) and (s[2]=':') and (s[3]='/') then ++ s:=CygDrivePrefix+'/'+s[1]+copy(s,3,length(s)); ++{$endif windows} ++end; ++ ++constructor TGDBController.Init; ++begin ++ inherited Init; ++end; ++ ++destructor TGDBController.Done; ++begin ++ inherited Done; ++end; ++ ++procedure TGDBController.CommandBegin(const s: string); ++begin ++end; ++ ++procedure TGDBController.Command(const s: string); ++begin ++ Inc(in_command); ++ CommandBegin(s); ++ GDBOutputBuf.Reset; ++ GDBErrorBuf.Reset; ++{$ifdef GDB_RAW_OUTPUT} ++ GDBRawBuf.reset; ++{$endif GDB_RAW_OUTPUT} ++ i_gdb_command(s); ++ CommandEnd(s); ++ Dec(in_command); ++end; ++ ++procedure TGDBController.CommandEnd(const s: string); ++begin ++end; ++ ++procedure TGDBController.UpdateRegisterNames; ++var ++ I: LongInt; ++ ResultList: TGDBMI_ListValue; ++begin ++ SetLength(FRegisterNames, 0); ++ Command('-data-list-register-names'); ++ if not GDB.ResultRecord.Success then ++ exit; ++ ResultList := GDB.ResultRecord.Parameters['register-names'].AsList; ++ SetLength(FRegisterNames, ResultList.Count); ++ for I := 0 to ResultList.Count - 1 do ++ FRegisterNames[I] := ResultList.ValueAt[I].AsString; ++end; ++ ++function TGDBController.GetGdbRegisterNo(const RegName: string): LongInt; ++var ++ I: LongInt; ++begin ++ for I := Low(FRegisterNames) to High(FRegisterNames) do ++ if FRegisterNames[I] = RegName then ++ begin ++ GetGdbRegisterNo := I; ++ exit; ++ end; ++ GetGdbRegisterNo := -1; ++end; ++ ++procedure TGDBController.Reset; ++begin ++end; ++ ++procedure TGDBController.StartTrace; ++begin ++ Command('-break-insert -t PASCALMAIN'); ++ if not GDB.ResultRecord.Success then ++ exit; ++ start_break_number := GDB.ResultRecord.Parameters['bkpt'].AsTuple['number'].AsLongInt; ++ Run; ++end; ++ ++procedure TGDBController.RunExecCommand(const Cmd: string); ++begin ++ UserScreen; ++ Command(Cmd); ++ if not GDB.ResultRecord.Success then ++ begin ++ DebuggerScreen; ++ got_error := True; ++ exit; ++ end; ++ WaitForProgramStop; ++end; ++ ++procedure TGDBController.Run; ++begin ++ RunExecCommand('-exec-run'); ++end; ++ ++procedure TGDBController.TraceStep; ++begin ++ RunExecCommand('-exec-step'); ++end; ++ ++procedure TGDBController.TraceNext; ++begin ++ RunExecCommand('-exec-next'); ++end; ++ ++procedure TGDBController.TraceStepI; ++begin ++ RunExecCommand('-exec-step-instruction'); ++end; ++ ++procedure TGDBController.TraceNextI; ++begin ++ RunExecCommand('-exec-next-instruction'); ++end; ++ ++procedure TGDBController.Continue; ++begin ++ RunExecCommand('-exec-continue'); ++end; ++ ++procedure TGDBController.UntilReturn; ++begin ++ RunExecCommand('-exec-finish'); ++end; ++ ++function TGDBController.GetRegisterAsString(const RegName, Format: string; var Value: string): Boolean; ++var ++ RegNo: LongInt; ++ RegNoStr: string; ++begin ++ GetRegisterAsString := False; ++ Value := ''; ++ ++ RegNo := GetGdbRegisterNo(RegName); ++ if RegNo = -1 then ++ exit; ++ Str(RegNo, RegNoStr); ++ Command('-data-list-register-values ' + Format + ' ' + RegNoStr); ++ if not GDB.ResultRecord.Success then ++ exit; ++ Value := GDB.ResultRecord.Parameters['register-values'].AsList.ValueAt[0].AsTuple['value'].AsString; ++ GetRegisterAsString := True; ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: UInt64): Boolean; ++var ++ RegValueStr: string; ++ Code: LongInt; ++begin ++ GetIntRegister := False; ++ Value := 0; ++ if not GetRegisterAsString(RegName, 'x', RegValueStr) then ++ exit; ++ Val(RegValueStr, Value, Code); ++ if Code <> 0 then ++ exit; ++ GetIntRegister := True; ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: Int64): Boolean; ++var ++ U64Value: UInt64; ++begin ++ GetIntRegister := GetIntRegister(RegName, U64Value); ++ Value := Int64(U64Value); ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: UInt32): Boolean; ++var ++ U64Value: UInt64; ++begin ++ GetIntRegister := GetIntRegister(RegName, U64Value); ++ Value := UInt32(U64Value); ++ if (U64Value shr 32) <> 0 then ++ GetIntRegister := False; ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: Int32): Boolean; ++var ++ U32Value: UInt32; ++begin ++ GetIntRegister := GetIntRegister(RegName, U32Value); ++ Value := Int32(U32Value); ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: UInt16): Boolean; ++var ++ U64Value: UInt64; ++begin ++ GetIntRegister := GetIntRegister(RegName, U64Value); ++ Value := UInt16(U64Value); ++ if (U64Value shr 16) <> 0 then ++ GetIntRegister := False; ++end; ++ ++function TGDBController.GetIntRegister(const RegName: string; var Value: Int16): Boolean; ++var ++ U16Value: UInt16; ++begin ++ GetIntRegister := GetIntRegister(RegName, U16Value); ++ Value := Int16(U16Value); ++end; ++ ++ ++{ set command } ++function TGDBController.SetCommand(Const SetExpr : string) : boolean; ++begin ++ SetCommand:=false; ++ Command('-gdb-set '+SetExpr); ++ if error then ++ exit; ++ SetCommand:=true; ++end; ++ ++ ++{ print } ++function TGDBController.PrintCommand(const expr : string): AnsiString; ++begin ++ Command('-data-evaluate-expression '+QuoteString(expr)); ++ if GDB.ResultRecord.Success then ++ PrintCommand:=GDB.ResultRecord.Parameters['value'].AsString ++ else ++ PrintCommand:=AnsiString(GetError); ++end; ++ ++const ++ PrintFormatName : Array[TPrintFormatType] of string[11] = ++ ('binary', 'decimal', 'hexadecimal', 'octal', 'natural'); ++ ++function TGDBController.PrintFormattedCommand(const expr : string; Format : TPrintFormatType): ansistring; ++begin ++ Command('-var-evaluate-expression -f '+PrintFormatName[Format]+' '+QuoteString(expr)); ++ if GDB.ResultRecord.Success then ++ PrintFormattedCommand:=GDB.ResultRecord.Parameters['value'].AsString ++ else ++ PrintFormattedCommand:=AnsiString(GetError); ++end; ++ ++function TGDBController.BreakpointInsert(const location: string; BreakpointFlags: TBreakpointFlags): LongInt; ++var ++ Options: string = ''; ++begin ++ if bfTemporary in BreakpointFlags then ++ Options := Options + '-t '; ++ if bfHardware in BreakpointFlags then ++ Options := Options + '-h '; ++ Command('-break-insert ' + Options + location); ++ if GDB.ResultRecord.Success then ++ BreakpointInsert := GDB.ResultRecord.Parameters['bkpt'].AsTuple['number'].AsLongInt ++ else ++ BreakpointInsert := 0; ++end; ++ ++function TGDBController.WatchpointInsert(const location: string; WatchpointType: TWatchpointType): LongInt; ++begin ++ case WatchpointType of ++ wtWrite: ++ Command('-break-watch ' + location); ++ wtReadWrite: ++ Command('-break-watch -a ' + location); ++ wtRead: ++ Command('-break-watch -r ' + location); ++ end; ++ if GDB.ResultRecord.Success then ++ case WatchpointType of ++ wtWrite: ++ WatchpointInsert := GDB.ResultRecord.Parameters['wpt'].AsTuple['number'].AsLongInt; ++ wtReadWrite: ++ WatchpointInsert := GDB.ResultRecord.Parameters['hw-awpt'].AsTuple['number'].AsLongInt; ++ wtRead: ++ WatchpointInsert := GDB.ResultRecord.Parameters['hw-rwpt'].AsTuple['number'].AsLongInt; ++ end ++ else ++ WatchpointInsert := 0; ++end; ++ ++function TGDBController.BreakpointDelete(BkptNo: LongInt): Boolean; ++var ++ BkptNoStr: string; ++begin ++ Str(BkptNo, BkptNoStr); ++ Command('-break-delete ' + BkptNoStr); ++ BreakpointDelete := GDB.ResultRecord.Success; ++end; ++ ++function TGDBController.BreakpointEnable(BkptNo: LongInt): Boolean; ++var ++ BkptNoStr: string; ++begin ++ Str(BkptNo, BkptNoStr); ++ Command('-break-enable ' + BkptNoStr); ++ BreakpointEnable := GDB.ResultRecord.Success; ++end; ++ ++function TGDBController.BreakpointDisable(BkptNo: LongInt): Boolean; ++var ++ BkptNoStr: string; ++begin ++ Str(BkptNo, BkptNoStr); ++ Command('-break-disable ' + BkptNoStr); ++ BreakpointDisable := GDB.ResultRecord.Success; ++end; ++ ++function TGDBController.BreakpointCondition(BkptNo: LongInt; const ConditionExpr: string): Boolean; ++var ++ BkptNoStr: string; ++begin ++ Str(BkptNo, BkptNoStr); ++ Command('-break-condition ' + BkptNoStr + ' ' + ConditionExpr); ++ BreakpointCondition := GDB.ResultRecord.Success; ++end; ++ ++function TGDBController.BreakpointSetIgnoreCount(BkptNo: LongInt; const IgnoreCount: LongInt): Boolean; ++var ++ BkptNoStr, IgnoreCountStr: string; ++begin ++ Str(BkptNo, BkptNoStr); ++ Str(IgnoreCount, IgnoreCountStr); ++ Command('-break-after ' + BkptNoStr + ' ' + IgnoreCountStr); ++ BreakpointSetIgnoreCount := GDB.ResultRecord.Success; ++end; ++ ++procedure TGDBController.SetTBreak(tbreakstring : string); ++begin ++ Command('-break-insert -t ' + tbreakstring); ++ TBreakNumber := GDB.ResultRecord.Parameters['bkpt'].AsTuple['number'].AsLongInt; ++end; ++ ++procedure TGDBController.Backtrace; ++var ++ FrameList,FrameArgList,ArgList: TGDBMI_ListValue; ++ I,J,arg_count: LongInt; ++ s : ansistring; ++begin ++ { forget all old frames } ++ clear_frames; ++ ++ Command('-stack-list-frames'); ++ if not GDB.ResultRecord.Success then ++ exit; ++ ++ FrameList := GDB.ResultRecord.Parameters['stack'].AsList; ++ frame_count := FrameList.Count; ++ frames := AllocMem(SizeOf(PFrameEntry) * frame_count); ++ for I := 0 to frame_count - 1 do ++ frames[I] := New(PFrameEntry, Init); ++ for I := 0 to FrameList.Count - 1 do ++ begin ++ frames[I]^.address := FrameList.ValueAt[I].AsTuple['addr'].AsCoreAddr; ++ frames[I]^.level := FrameList.ValueAt[I].AsTuple['level'].AsLongInt; ++ if Assigned(FrameList.ValueAt[I].AsTuple['line']) then ++ frames[I]^.line_number := FrameList.ValueAt[I].AsTuple['line'].AsLongInt; ++ if Assigned(FrameList.ValueAt[I].AsTuple['func']) then ++ frames[I]^.function_name := StrNew(PChar(FrameList.ValueAt[I].AsTuple['func'].AsString)); ++ if Assigned(FrameList.ValueAt[I].AsTuple['fullname']) then ++ frames[I]^.file_name := StrNew(PChar(FrameList.ValueAt[I].AsTuple['fullname'].AsString)); ++ end; ++ Command('-stack-list-arguments 1'); ++ if not GDB.ResultRecord.Success then ++ exit; ++ ++ FrameArgList := GDB.ResultRecord.Parameters['stack-args'].AsList; ++ arg_count:=FrameArgList.Count; ++ if arg_count>frame_count then ++ arg_count:=frame_count; ++ for I := 0 to arg_count - 1 do ++ begin ++ ArgList:=FrameArgList.ValueAt[I].AsTuple['args'].AsList; ++ s:='('; ++ for J:=0 to ArgList.Count-1 do ++ begin ++ if J>0 then s:=s+', '; ++ s:=s+ArgList.ValueAt[J].AsTuple['name'].AsString; ++ if Assigned(ArgList.ValueAt[J].AsTuple['value']) then ++ s:=s+':='+ArgList.ValueAt[J].AsTuple['value'].ASString; ++ end; ++ s:=s+')'; ++ frames[I]^.args:=StrNew(pchar(s)); ++ end; ++end; ++ ++function TGDBController.SelectFrameCommand(level :longint) : boolean; ++var ++ LevelStr : String; ++begin ++ Str(Level, LevelStr); ++ Command('-stack-select-frame '+LevelStr); ++ SelectFrameCommand:=not error; ++end; ++ ++function TGDBController.LoadFile(var fn: string): Boolean; ++var ++ cmd: string; ++begin ++ getdir(0,cmd); ++ UnixDir(cmd); ++ Command('-environment-cd ' + cmd); ++ GDBOutputBuf.Reset; ++ GDBErrorBuf.Reset; ++{$ifdef GDB_RAW_OUTPUT} ++ GDBRawBuf.reset; ++{$endif GDB_RAW_OUTPUT} ++ UnixDir(fn); ++ Command('-file-exec-and-symbols ' + fn); ++ if not GDB.ResultRecord.Success then ++ begin ++ LoadFile:=false; ++ exit; ++ end; ++ { the register list may change *after* loading a file, because there } ++ { are gdb versions that support multiple archs, e.g. i386 and x86_64 } ++ UpdateRegisterNames; { so that's why we update it here } ++ LoadFile := True; ++end; ++ ++procedure TGDBController.SetDir(const s: string); ++var ++ hs: string; ++begin ++ hs:=s; ++ UnixDir(hs); ++ { Avoid error message if s is empty } ++ if hs<>'' then ++ Command('-environment-cd ' + hs); ++end; ++ ++procedure TGDBController.SetArgs(const s: string); ++begin ++ Command('-exec-arguments ' + s); ++end; ++ ++end. +diff --git a/fpcsrc/ide/gdbmiint.pas b/fpcsrc/ide/gdbmiint.pas +new file mode 100644 +index 00000000..874d6be8 +--- /dev/null ++++ b/fpcsrc/ide/gdbmiint.pas +@@ -0,0 +1,650 @@ ++{ ++ Copyright (c) 2015 by Nikolay Nikolov ++ Copyright (c) 1998 by Peter Vreman ++ ++ This is a replacement for GDBInt, implemented on top of GDB/MI, ++ instead of LibGDB. This allows integration of GDB/MI support in the ++ text mode IDE. ++ ++ See the file COPYING.FPC, included in this distribution, ++ for details about the copyright. ++ ++ 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. ++ ++ **********************************************************************} ++ ++unit gdbmiint; ++ ++{$MODE fpc}{$H-} ++ ++{$I globdir.inc} ++ ++interface ++ ++uses ++ gdbmiwrap; ++ ++type ++ CORE_ADDR = gdbmiwrap.CORE_ADDR; ++ ++ PPFrameEntry = ^PFrameEntry; ++ PFrameEntry = ^TFrameEntry; ++ TFrameEntry = object ++ private ++ procedure Reset; ++ procedure Clear; ++ public ++ file_name: PChar; ++ function_name: PChar; ++ args: PChar; ++ line_number: LongInt; ++ address: CORE_ADDR; ++ level : longint; ++ constructor Init; ++ destructor Done; ++ end; ++ ++ TGDBBuffer = object ++ private ++ buf: PChar; ++ size, idx: LongInt; ++ procedure Resize(nsize: LongInt); ++ procedure Append(p: PChar); ++ procedure LAppend(p: PChar; len: LongInt); ++ public ++ constructor Init; ++ destructor Done; ++ procedure Reset; ++ end; ++ ++ TGDBInterface = object ++ private ++ user_screen_shown: Boolean; ++{$ifdef GDB_RAW_OUTPUT} ++ output_raw : boolean; ++{$endif GDB_RAW_OUTPUT} ++ protected ++ GDB: TGDBWrapper; ++ ++ procedure i_gdb_command(const S: string); ++ procedure WaitForProgramStop; ++ procedure ProcessResponse; ++ public ++ GDBErrorBuf: TGDBBuffer; ++ GDBOutputBuf: TGDBBuffer; ++{$ifdef GDB_RAW_OUTPUT} ++ { Separate Raw buffer to display everything inside GDB Window ++ but without parsing it twice } ++ GDBRawBuf: TGDBBuffer; ++{$endif GDB_RAW_OUTPUT} ++ got_error: Boolean; ++ reset_command: Boolean; ++ Debuggee_started: Boolean; ++ init_count : longint; ++ { frames and frame info while recording a frame } ++ frames: PPFrameEntry; ++ frame_count: LongInt; ++ command_level: LongInt; ++ signal_name: PChar; ++ signal_string: PChar; ++ current_pc: CORE_ADDR; ++ switch_to_user: Boolean; ++ ++ { init } ++ constructor Init; ++ destructor Done; ++ { from gdbcon } ++ function GetOutput: PChar; ++ function GetError: PChar; ++{$ifdef DEBUG} ++ function GetRaw: PChar; ++{$endif DEBUG} ++ { Lowlevel } ++ procedure Set_debuggee_started; ++ function error: Boolean; ++ function error_num: LongInt; ++ function get_current_frame: PtrInt; ++ function set_current_frame(level: LongInt): Boolean; ++ procedure clear_frames; ++ { Highlevel } ++ procedure DebuggerScreen; ++ procedure UserScreen; ++ procedure FlushAll; virtual; ++ function Query(question: PChar; args: PChar): LongInt; virtual; ++ { Hooks } ++ function DoSelectSourceline(const fn: string; line, BreakIndex: longint): Boolean;virtual; ++ procedure DoStartSession; virtual; ++ procedure DoBreakSession; virtual; ++ procedure DoEndSession(code: LongInt); virtual; ++ procedure DoUserSignal; virtual; ++ procedure DoDebuggerScreen; virtual; ++ procedure DoUserScreen; virtual; ++ function AllowQuit: Boolean; virtual; ++ end; ++ ++const ++ use_gdb_file: Boolean = False; ++ ++var ++ gdb_file: Text; ++ ++function GDBVersion: string; ++function GDBVersionOK: boolean; ++function inferior_pid : longint; ++ ++{$ifdef windows} ++{ We need to do some path conversions if we are using Cygwin GDB } ++var ++ using_cygwin_gdb : boolean; ++{$endif windows} ++implementation ++ ++uses ++ strings; ++ ++constructor TFrameEntry.Init; ++begin ++ Reset; ++end; ++ ++destructor TFrameEntry.Done; ++begin ++ Clear; ++end; ++ ++procedure TFrameEntry.Reset; ++begin ++ file_name := nil; ++ function_name := nil; ++ args := nil; ++ line_number := 0; ++ address := 0; ++ level := 0; ++end; ++ ++procedure TFrameEntry.Clear; ++begin ++ if Assigned(file_name) then ++ StrDispose(file_name); ++ if Assigned(function_name) then ++ StrDispose(function_name); ++ if Assigned(args) then ++ StrDispose(args); ++ Reset; ++end; ++ ++const ++ BlockSize = 2048; ++ ++constructor TGDBBuffer.Init; ++begin ++ buf := nil; ++ size := 0; ++ Resize(BlockSize); ++ Reset; ++end; ++ ++destructor TGDBBuffer.Done; ++begin ++ if Assigned(buf) then ++ FreeMem(buf, size); ++end; ++ ++procedure TGDBBuffer.Reset; ++begin ++ idx := 0; ++ buf[0] := #0; ++end; ++ ++procedure TGDBBuffer.Resize(nsize: LongInt); ++var ++ np: PChar; ++begin ++ nsize := ((nsize + BlockSize - 1) div BlockSize) * BlockSize; ++ GetMem(np, nsize); ++ if Assigned(buf) then ++ begin ++ Move(buf^, np^, size); ++ FreeMem(buf, size); ++ end; ++ buf := np; ++ size := nsize; ++end; ++ ++procedure TGDBBuffer.Append(p: PChar); ++var ++ len: LongInt; ++begin ++ if not Assigned(p) then ++ exit; ++ len := StrLen(p); ++ LAppend(p, len); ++end; ++ ++procedure TGDBBuffer.LAppend(p: PChar; len: LongInt); ++begin ++ if not Assigned(p) then ++ exit; ++ if (len + idx + 1) > size then ++ Resize(len + idx + 1); ++ Move(p^, buf[idx], len); ++ Inc(idx, len); ++ buf[idx] := #0; ++end; ++ ++constructor TGDBInterface.Init; ++begin ++ GDBErrorBuf.Init; ++ GDBOutputBuf.Init; ++ GDB := TGDBWrapper.Create; ++ command_level := 0; ++ Debuggee_started:=false; ++ init_count:=0; ++{$ifdef GDB_RAW_OUTPUT} ++ output_raw:=true; ++ GDBRawBuf.Init; ++{$endif GDB_RAW_OUTPUT} ++{ other standard commands used for fpc debugging } ++ i_gdb_command('-gdb-set print demangle off'); ++ i_gdb_command('-gdb-set gnutarget auto'); ++ i_gdb_command('-gdb-set language auto'); ++ i_gdb_command('-gdb-set print vtbl on'); ++ i_gdb_command('-gdb-set print object on'); ++ i_gdb_command('-gdb-set print null-stop'); ++end; ++ ++destructor TGDBInterface.Done; ++begin ++ clear_frames; ++ GDB.Free; ++ GDBErrorBuf.Done; ++ GDBOutputBuf.Done; ++{$ifdef GDB_RAW_OUTPUT} ++ GDBRawBuf.Done; ++{$endif GDB_RAW_OUTPUT} ++end; ++ ++function TGDBInterface.GetOutput: PChar; ++begin ++ GetOutput := GDBOutputBuf.buf; ++end; ++ ++{$ifdef GDB_RAW_OUTPUT} ++function TGDBInterface.GetRaw: PChar; ++begin ++ GetRaw := GDBRawBuf.buf; ++end; ++{$endif GDB_RAW_OUTPUT} ++ ++function TGDBInterface.GetError: PChar; ++var ++ p: PChar; ++begin ++ p := GDBErrorBuf.buf; ++ if (p^=#0) and got_error then ++ GetError := PChar(PtrInt(GDBOutputBuf.buf) + GDBOutputBuf.idx) ++ else ++ GetError := p; ++end; ++ ++procedure TGDBInterface.Set_debuggee_started; ++begin ++ if not Debuggee_started then ++ begin ++ inc(init_count); ++ Debuggee_started:=true; ++ end; ++end; ++ ++procedure TGDBInterface.i_gdb_command(const S: string); ++var ++ I: LongInt; ++begin ++ Inc(command_level); ++ got_error := False; ++ GDB.Command(S); ++{$ifdef GDB_RAW_OUTPUT} ++ if output_raw then ++ for I := 0 to GDB.RawResponse.Count - 1 do ++ GDBRawBuf.Append(PChar(GDB.RawResponse[I])); ++{$endif GDB_RAW_OUTPUT} ++ ++ for I := 0 to GDB.ConsoleStream.Count - 1 do ++ GDBOutputBuf.Append(PChar(GDB.ConsoleStream[I])); ++ if GDB.ResultRecord.AsyncClass='error' then ++ begin ++ got_error := True; ++ if Assigned(GDB.ResultRecord.Parameters['msg']) then ++ GDBErrorBuf.Append(PChar(GDB.ResultRecord.Parameters['msg'].AsString)); ++ end; ++ ProcessResponse; ++ Dec(command_level); ++end; ++ ++procedure TGDBInterface.WaitForProgramStop; ++label ++ Ignore; ++var ++ StopReason: string; ++ LocalSignalString,LocalSignalName: String; ++ FileName: string = ''; ++ LineNumber: LongInt = 0; ++ Addr: CORE_ADDR; ++ BreakpointNo: LongInt; ++ ExitCode: LongInt; ++begin ++Ignore: ++ GDB.WaitForProgramStop; ++ if not GDB.Alive then ++ begin ++ DebuggerScreen; ++ current_pc := 0; ++ Debuggee_started := False; ++ exit; ++ end; ++ ProcessResponse; ++ StopReason := GDB.ExecAsyncOutput.Parameters['reason'].AsString; ++ case StopReason of ++ 'watchpoint-scope': ++ begin ++ { A watchpoint has gone out of scope (e.g. if it was a local variable). TODO: should we stop ++ the program and notify the user or maybe silently disable it in the breakpoint list and ++ continue execution? The libgdb.a version of the debugger just silently ignores this case. ++ ++ We have: GDB.ExecAsyncOutput.Parameters['wpnum'].AsLongInt } ++ i_gdb_command('-exec-continue'); ++ if not GDB.ResultRecord.Success then ++ begin ++ DebuggerScreen; ++ got_error := True; ++ exit; ++ end; ++ goto Ignore; ++ end; ++ 'signal-received': ++ begin ++ { TODO: maybe show information to the user about the signal ++ we have: ++ GDB.ExecAsyncOutput.Parameters['signal-name'].AsString (e.g. 'SIGTERM') ++ GDB.ExecAsyncOutput.PArameters['signal-meaning'].AsString (e.g. 'Terminated') ++ } ++ LocalSignalName:=GDB.ExecAsyncOutput.Parameters['signal-name'].AsString; ++ LocalSignalString:=GDB.ExecAsyncOutput.PArameters['signal-meaning'].AsString; ++ signal_name:=@LocalSignalName; ++ signal_string:=@LocalSignalString; ++ if (user_screen_shown) then ++ begin ++ DebuggerScreen; ++ DoUserSignal; ++ UserScreen; ++ end ++ else ++ DoUserSignal; ++ i_gdb_command('-exec-continue'); ++ if not GDB.ResultRecord.Success then ++ begin ++ DebuggerScreen; ++ got_error := True; ++ exit; ++ end; ++ goto Ignore; ++ end; ++ 'breakpoint-hit', ++ 'watchpoint-trigger', ++ 'access-watchpoint-trigger', ++ 'read-watchpoint-trigger', ++ 'end-stepping-range', ++ 'function-finished': ++ begin ++ if StopReason = 'breakpoint-hit' then ++ BreakpointNo := GDB.ExecAsyncOutput.Parameters['bkptno'].AsLongInt ++ else if StopReason = 'watchpoint-trigger' then ++ BreakpointNo := GDB.ExecAsyncOutput.Parameters['wpt'].AsTuple['number'].AsLongInt ++ else if StopReason = 'access-watchpoint-trigger' then ++ BreakpointNo := GDB.ExecAsyncOutput.Parameters['hw-awpt'].AsTuple['number'].AsLongInt ++ else if StopReason = 'read-watchpoint-trigger' then ++ BreakpointNo := GDB.ExecAsyncOutput.Parameters['hw-rwpt'].AsTuple['number'].AsLongInt ++ else ++ BreakpointNo := 0; ++ ++ Addr := GDB.ExecAsyncOutput.Parameters['frame'].AsTuple['addr'].AsCoreAddr; ++ if Assigned(GDB.ExecAsyncOutput.Parameters['frame'].AsTuple['fullname']) then ++ FileName := GDB.ExecAsyncOutput.Parameters['frame'].AsTuple['fullname'].AsString; ++ if Assigned(GDB.ExecAsyncOutput.Parameters['frame'].AsTuple['line']) then ++ LineNumber := GDB.ExecAsyncOutput.Parameters['frame'].AsTuple['line'].AsLongInt; ++ ++ { this kills GDB.ExecAsyncOutput, because it may execute other gdb commands, so ++ make sure we have read all parameters that we need to local variables before that } ++ DebuggerScreen; ++ ++ set_debuggee_started; ++ current_pc := Addr; ++ if not DoSelectSourceLine(FileName, LineNumber, BreakpointNo) then ++ begin ++ UserScreen; ++ i_gdb_command('-exec-continue'); ++ if not GDB.ResultRecord.Success then ++ begin ++ DebuggerScreen; ++ got_error := True; ++ exit; ++ end; ++ goto Ignore; ++ end; ++ end; ++ 'exited-signalled': ++ begin ++ DebuggerScreen; ++ current_pc := 0; ++ Debuggee_started := False; ++ { TODO: maybe show information to the user about the signal ++ we have: ++ GDB.ExecAsyncOutput.Parameters['signal-name'].AsString (e.g. 'SIGTERM') ++ GDB.ExecAsyncOutput.PArameters['signal-meaning'].AsString (e.g. 'Terminated') ++ } ++ DoEndSession(1); ++ end; ++ 'exited': ++ begin ++ ExitCode := LongInt(GDB.ExecAsyncOutput.Parameters['exit-code'].AsLongWord); ++ DebuggerScreen; ++ current_pc := 0; ++ Debuggee_started := False; ++ DoEndSession(ExitCode); ++ end; ++ 'exited-normally': ++ begin ++ DebuggerScreen; ++ current_pc := 0; ++ Debuggee_started := False; ++ DoEndSession(0); ++ end; ++ end; ++end; ++ ++procedure TGDBInterface.ProcessResponse; ++//var ++// NAO: TGDBMI_AsyncOutput; ++// Code: LongInt; ++begin ++// for NAO in GDB.NotifyAsyncOutput do ++// begin ++// if NAO.AsyncClass = 'breakpoint-created' then ++// begin ++// Writeln('BREAKPOINT created!'); ++// Val(NAO.Parameters['bkpt'].AsTuple['number'].AsString, last_breakpoint_number, Code); ++// Writeln('last_breakpoint_number=', last_breakpoint_number); ++// end; ++// end; ++end; ++ ++function TGDBInterface.error: Boolean; ++begin ++ error := got_error or not GDB.Alive; ++end; ++ ++function TGDBInterface.error_num: LongInt; ++begin ++ error_num := 0; { TODO } ++end; ++ ++function TGDBInterface.get_current_frame: PtrInt; ++begin ++ i_gdb_command('-stack-info-frame'); ++ if GDB.ResultRecord.Success then ++ get_current_frame := GDB.ResultRecord.Parameters['frame'].AsTuple['level'].AsLongInt ++ else ++ get_current_frame := 0; ++end; ++ ++function TGDBInterface.set_current_frame(level: LongInt): Boolean; ++var ++ s: string; ++begin ++ str(level,s); ++ { Note: according to the gdb docs, '-stack-select-frame' is deprecated in favor of passing the '--frame' option to every command } ++ i_gdb_command('-stack-select-frame '+s); ++ set_current_frame := GDB.ResultRecord.Success; ++end; ++ ++procedure TGDBInterface.clear_frames; ++var ++ I: LongInt; ++begin ++ for I := 0 to frame_count - 1 do ++ Dispose(frames[I], Done); ++ if Assigned(frames) then ++ begin ++ FreeMem(frames, SizeOf(Pointer) * frame_count); ++ frames := nil; ++ end; ++ frame_count := 0; ++end; ++ ++procedure TGDBInterface.DebuggerScreen; ++begin ++ if user_screen_shown then ++ DoDebuggerScreen; ++ user_screen_shown := False; ++end; ++ ++procedure TGDBInterface.UserScreen; ++begin ++ if switch_to_user then ++ begin ++ if not user_screen_shown then ++ DoUserScreen; ++ user_screen_shown := True; ++ end; ++end; ++ ++procedure TGDBInterface.FlushAll; ++begin ++end; ++ ++function TGDBInterface.Query(question: PChar; args: PChar): LongInt; ++begin ++ Query := 0; ++end; ++ ++function TGDBInterface.DoSelectSourceline(const fn: string; line, BreakIndex: LongInt): Boolean; ++begin ++end; ++ ++procedure TGDBInterface.DoStartSession; ++begin ++end; ++ ++procedure TGDBInterface.DoBreakSession; ++begin ++end; ++ ++procedure TGDBInterface.DoEndSession(code: LongInt); ++begin ++end; ++ ++procedure TGDBInterface.DoUserSignal; ++begin ++end; ++ ++procedure TGDBInterface.DoDebuggerScreen; ++begin ++end; ++ ++procedure TGDBInterface.DoUserScreen; ++begin ++end; ++ ++function TGDBInterface.AllowQuit: Boolean; ++begin ++ AllowQuit := True; ++end; ++ ++function inferior_pid : longint; ++begin ++ inferior_pid:=0; {inferior_ptid.pid; } ++end; ++ ++ ++var ++ CachedGDBVersion: string; ++ CachedGDBVersionOK : boolean; ++ ++function GDBVersion: string; ++var ++ GDB: TGDBWrapper; ++{$ifdef windows} ++ i : longint; ++ line :string; ++{$endif windows} ++begin ++ if CachedGDBVersion <> '' then ++ begin ++ GDBVersion := CachedGDBVersion; ++ exit; ++ end; ++ GDBVersion := ''; ++ GDB := TGDBWrapper.Create; ++ GDB.Command('-gdb-version'); ++ if GDB.ConsoleStream.Count > 0 then ++ GDBVersion := GDB.ConsoleStream[0]; ++ if (GDBVersion <> '') and (GDBVersion[Length(GDBVersion)]=#10) then ++ Delete(GDBVersion, Length(GDBVersion), 1); ++{$ifdef windows} ++ i:=0; ++ using_cygwin_gdb:=false; ++ while i < GDB.ConsoleStream.Count do ++ begin ++ line:=GDB.ConsoleStream[i]; ++ if pos('This GDB was configured',line) > 0 then ++ using_cygwin_gdb:=pos('cygwin',line) > 0; ++ inc(i); ++ end; ++{$endif windows} ++ GDB.Free; ++ CachedGDBVersion := GDBVersion; ++ if GDBVersion = '' then ++ begin ++ GDBVersion := 'GDB missing or does not work'#13 ++ +#3'Consider using -G command line option'#13 ++ +#3'or set FPIDE_GDBPROC environment variable'#13 ++ +#3'to specify full path to GDB'; ++ CachedGDBVersionOK := false; ++ end; ++end; ++ ++function GDBVersionOK: boolean; ++var ++ S : string; ++begin ++ { Be sure GDBVersion is called } ++ S:=GDBVersion; ++ GDBVersionOK := CachedGDBVersionOK; ++end; ++ ++begin ++ CachedGDBVersion := ''; ++ CachedGDBVersionOK := true; ++end. +diff --git a/fpcsrc/ide/gdbmiproc.pas b/fpcsrc/ide/gdbmiproc.pas +new file mode 100644 +index 00000000..4b2b0970 +--- /dev/null ++++ b/fpcsrc/ide/gdbmiproc.pas +@@ -0,0 +1,156 @@ ++{ ++ Copyright (c) 2015 by Nikolay Nikolov ++ ++ This unit implements a class, which launches gdb in GDB/MI mode ++ and allows sending textual commands to it and receiving the response ++ ++ See the file COPYING.FPC, included in this distribution, ++ for details about the copyright. ++ ++ 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. ++ ++ **********************************************************************} ++ ++unit GDBMIProc; ++ ++{$MODE objfpc}{$H+} ++ ++{$I globdir.inc} ++ ++interface ++ ++uses ++ SysUtils, Classes, Process; ++ ++type ++ TGDBProcess = class ++ private ++ FProcess: TProcess; ++ FDebugLog: TextFile; ++ ++ function IsAlive: Boolean; ++ procedure GDBWrite(const S: string); ++ procedure DebugLn(const S: string); ++ procedure DebugErrorLn(const S: string); ++ public ++ constructor Create; ++ destructor Destroy; override; ++ function GDBReadLn: string; ++ procedure GDBWriteLn(const S: string); ++ property Alive: Boolean read IsAlive; ++ end; ++ ++var ++ GdbProgramName: string = 'gdb'; ++ ++implementation ++ ++uses ++ fputils; ++ ++var ++ DebugLogEnabled: Boolean = False; ++ ++function TGDBProcess.IsAlive: Boolean; ++begin ++ Result := Assigned(FProcess) and FProcess.Running; ++end; ++ ++function TGDBProcess.GDBReadLn: string; ++var ++ C: Char; ++begin ++ Result := ''; ++ while FProcess.Running do ++ begin ++ FProcess.Output.Read(C, 1); ++{$ifdef windows} ++ { On windows we expect both #13#10 and #10 } ++ if C = #13 then ++ begin ++ FProcess.Output.Read(C, 1); ++ if C <> #10 then ++ { #13 not followed by #10, what should we do? } ++ Result := Result + #13; ++ end; ++{$endif windows} ++ if C = #10 then ++ begin ++ DebugLn(Result); ++ exit; ++ end; ++ Result := Result + C; ++ end; ++end; ++ ++constructor TGDBProcess.Create; ++begin ++ if DebugLogEnabled then ++ begin ++ AssignFile(FDebugLog, 'gdblog.txt'); ++ Rewrite(FDebugLog); ++ CloseFile(FDebugLog); ++ end; ++ FProcess := TProcess.Create(nil); ++ FProcess.Options := [poUsePipes, poStdErrToOutput]; ++ if (ExeExt<>'') and (pos(ExeExt,LowerCaseStr(GdbProgramName))=0) then ++ FProcess.Executable := GdbProgramName+ExeExt ++ else ++ FProcess.Executable := GdbProgramName; ++ FProcess.Parameters.Add('--interpreter=mi'); ++ try ++ FProcess.Execute; ++ except ++ on e: Exception do ++ begin ++ DebugErrorLn('Could not start GDB: ' + e.Message); ++ FreeAndNil(FProcess); ++ end; ++ end; ++end; ++ ++destructor TGDBProcess.Destroy; ++begin ++ FProcess.Free; ++ inherited Destroy; ++end; ++ ++procedure TGDBProcess.DebugLn(const S: string); ++begin ++ if DebugLogEnabled then ++ begin ++ Append(FDebugLog); ++ Writeln(FDebugLog, S); ++ CloseFile(FDebugLog); ++ end; ++end; ++ ++procedure TGDBProcess.DebugErrorLn(const S: string); ++begin ++ DebugLn('ERROR: ' + S); ++end; ++ ++procedure TGDBProcess.GDBWrite(const S: string); ++begin ++ FProcess.Input.Write(S[1], Length(S)); ++end; ++ ++procedure TGDBProcess.GDBWriteln(const S: string); ++begin ++ if not IsAlive then ++ begin ++ DebugErrorLn('Trying to send command to a dead GDB: ' + S); ++ exit; ++ end; ++ DebugLn(S); ++ GDBWrite(S + #10); ++end; ++ ++begin ++ if GetEnvironmentVariable('FPIDE_GDBLOG') = '1' then ++ DebugLogEnabled := True; ++ if GetEnvironmentVariable('FPIDE_GDBPROG') <> '' then ++ GdbProgramName := GetEnvironmentVariable('FPIDE_GDBPROG'); ++end. +diff --git a/fpcsrc/ide/gdbmiwrap.pas b/fpcsrc/ide/gdbmiwrap.pas +new file mode 100644 +index 00000000..2198aef4 +--- /dev/null ++++ b/fpcsrc/ide/gdbmiwrap.pas +@@ -0,0 +1,559 @@ ++{ ++ Copyright (c) 2015 by Nikolay Nikolov ++ ++ This unit provides a wrapper around GDB and implements parsing of ++ the GDB/MI command result records. ++ ++ See the file COPYING.FPC, included in this distribution, ++ for details about the copyright. ++ ++ 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. ++ ++ **********************************************************************} ++ ++unit gdbmiwrap; ++ ++{$MODE objfpc}{$H+} ++{$ASSERTIONS on} ++ ++{$I globdir.inc} ++ ++interface ++ ++uses ++ SysUtils, Classes, GDBMIProc; ++ ++type ++{$ifdef TARGET_IS_64BIT} ++ { force 64bit if target compilation CPU is 64-bit address CPU } ++ CORE_ADDR = Qword; ++{$else} ++ CORE_ADDR = PtrUInt; ++{$endif} ++ ++ TGDBMI_TupleValue = class; ++ TGDBMI_ListValue = class; ++ TGDBMI_Value = class ++ function AsString: string; ++ function AsInt64: Int64; ++ function AsQWord: QWord; ++ function AsLongInt: LongInt; ++ function AsLongWord: LongWord; ++ function AsCoreAddr: CORE_ADDR; ++ function AsTuple: TGDBMI_TupleValue; ++ function AsList: TGDBMI_ListValue; ++ end; ++ ++ { "C string\n" } ++ TGDBMI_StringValue = class(TGDBMI_Value) ++ FStringValue: string; ++ public ++ constructor Create(const S: string); ++ property StringValue: string read FStringValue; ++ end; ++ ++ (* {...} or [...] *) ++ TGDBMI_TupleOrListValue = class(TGDBMI_Value) ++ private ++ FNames: array of string; ++ FValues: array of TGDBMI_Value; ++ function GetValue(const AName: string): TGDBMI_Value; ++ public ++ destructor Destroy; override; ++ procedure Clear; ++ procedure Add(AName: string; AValue: TGDBMI_Value); ++ function HasNames: Boolean; ++ function IsEmpty: Boolean; ++ property Values [const AName: string]: TGDBMI_Value read GetValue; default; ++ end; ++ ++ (* {} or {variable=value,variable=value,variable=value} *) ++ TGDBMI_TupleValue = class(TGDBMI_TupleOrListValue) ++ end; ++ ++ { [] or [value,value,value] or [variable=value,variable=value,variable=value] } ++ TGDBMI_ListValue = class(TGDBMI_TupleOrListValue) ++ private ++ function GetCount: LongInt; ++ function GetValueAt(AIndex: LongInt): TGDBMI_Value; ++ public ++ property Count: LongInt read GetCount; ++ property ValueAt [AIndex: LongInt]: TGDBMI_Value read GetValueAt; ++ end; ++ ++ TGDBMI_AsyncOutput = class ++ FAsyncClass: string; ++ FParameters: TGDBMI_TupleValue; ++ public ++ constructor Create; ++ destructor Destroy; override; ++ procedure Clear; ++ property AsyncClass: string read FAsyncClass write FAsyncClass; ++ property Parameters: TGDBMI_TupleValue read FParameters; ++ end; ++ ++ TGDBMI_ResultRecord = class(TGDBMI_AsyncOutput) ++ public ++ function Success: Boolean; ++ end; ++ ++ TGDBMI_AsyncOutput_List = array of TGDBMI_AsyncOutput; ++ ++ TGDBWrapper = class ++ private ++ FProcess: TGDBProcess; ++ FRawResponse: TStringList; ++ FConsoleStream: TStringList; ++ FExecAsyncOutput: TGDBMI_AsyncOutput; ++ FResultRecord: TGDBMI_ResultRecord; ++ ++ function IsAlive: Boolean; ++ procedure ReadResponse; ++ public ++ NotifyAsyncOutput: TGDBMI_AsyncOutput_List; ++ ++ constructor Create; ++ destructor Destroy; override; ++ procedure Command(S: string); ++ procedure WaitForProgramStop; ++ property RawResponse: TStringList read FRawResponse; ++ property ConsoleStream: TStringList read FConsoleStream; ++ property ExecAsyncOutput: TGDBMI_AsyncOutput read FExecAsyncOutput; ++ property ResultRecord: TGDBMI_ResultRecord read FResultRecord write FResultRecord; ++ property Alive: Boolean read IsAlive; ++ end; ++ ++function QuoteString(S: string): string; ++function C2PascalNumberPrefix(const S: string): string; ++ ++implementation ++ ++function QuoteString(S: string): string; ++var ++ I: LongInt; ++begin ++ I := 1; ++ Result := ''; ++ while I <= Length(S) do ++ begin ++ case S[I] of ++ '''': Result := Result + '\'''; ++ '"': Result := Result + '\"'; ++ #10: Result := Result + '\n'; ++ #13: Result := Result + '\r'; ++ #9: Result := Result + '\t'; ++ #11: Result := Result + '\v'; ++ #8: Result := Result + '\b'; ++ #12: Result := Result + '\f'; ++ #7: Result := Result + '\a'; ++ '\': Result := Result + '\\'; ++ '?': Result := Result + '\?'; ++ else ++ Result := Result + S[I]; ++ end; ++ Inc(I); ++ end; ++ Result := '"' + Result + '"'; ++end; ++ ++function C2PascalNumberPrefix(const S: string): string; ++begin ++ { hex: 0x -> $ } ++ if (Length(S) >= 3) and (s[1] = '0') and ((s[2] = 'x') or (s[2] = 'X')) then ++ exit('$' + Copy(S, 3, Length(S) - 2)); ++ ++ { oct: 0 -> & } ++ if (Length(S) >= 2) and (s[1] = '0') and ((s[2] >= '0') and (s[2] <= '7')) then ++ exit('&' + Copy(S, 2, Length(S) - 1)); ++ ++ Result := S; ++end; ++ ++function TGDBMI_Value.AsString: string; ++begin ++ Result := (self as TGDBMI_StringValue).StringValue; ++end; ++ ++function TGDBMI_Value.AsInt64: Int64; ++begin ++ Result := StrToInt64(C2PascalNumberPrefix(AsString)); ++end; ++ ++function TGDBMI_Value.AsQWord: QWord; ++begin ++ Result := StrToQWord(C2PascalNumberPrefix(AsString)); ++end; ++ ++function TGDBMI_Value.AsLongInt: LongInt; ++begin ++ Result := StrToInt(C2PascalNumberPrefix(AsString)); ++end; ++ ++function TGDBMI_Value.AsLongWord: LongWord; ++const ++ SInvalidInteger = '"%s" is an invalid integer'; ++var ++ S: string; ++ Error: LongInt; ++begin ++ S := C2PascalNumberPrefix(AsString); ++ Val(S, Result, Error); ++ if Error <> 0 then ++ raise EConvertError.CreateFmt(SInvalidInteger,[S]); ++end; ++ ++function TGDBMI_Value.AsCoreAddr: CORE_ADDR; ++begin ++{$if defined(TARGET_IS_64BIT)} ++ Result := AsQWord; ++{$elseif defined(CPU64)} ++ Result := AsQWord; ++{$else} ++ Result := AsLongWord; ++{$endif} ++end; ++ ++function TGDBMI_Value.AsTuple: TGDBMI_TupleValue; ++begin ++ Result := self as TGDBMI_TupleValue; ++end; ++ ++function TGDBMI_Value.AsList: TGDBMI_ListValue; ++begin ++ Result := self as TGDBMI_ListValue; ++end; ++ ++constructor TGDBMI_StringValue.Create(const S: string); ++begin ++ FStringValue := S; ++end; ++ ++destructor TGDBMI_TupleOrListValue.Destroy; ++begin ++ Clear; ++ inherited Destroy; ++end; ++ ++procedure TGDBMI_TupleOrListValue.Clear; ++var ++ I: LongInt; ++begin ++ SetLength(FNames, 0); ++ for I := Low(FValues) to High(FValues) do ++ FreeAndNil(FValues[I]); ++ SetLength(FValues, 0); ++end; ++ ++procedure TGDBMI_TupleOrListValue.Add(AName: string; AValue: TGDBMI_Value); ++begin ++ Assert(AValue <> nil); ++ Assert(IsEmpty or (HasNames = (AName <> ''))); ++ if AName <> '' then ++ begin ++ SetLength(FNames, Length(FNames) + 1); ++ FNames[Length(FNames) - 1] := AName; ++ end; ++ SetLength(FValues, Length(FValues) + 1); ++ FValues[Length(FValues) - 1] := AValue; ++end; ++ ++function TGDBMI_TupleOrListValue.HasNames: Boolean; ++begin ++ Result := Length(FNames) > 0; ++end; ++ ++function TGDBMI_TupleOrListValue.IsEmpty: Boolean; ++begin ++ Result := Length(FValues) = 0; ++end; ++ ++function TGDBMI_TupleOrListValue.GetValue(const AName: string): TGDBMI_Value; ++var ++ I: LongInt; ++begin ++ for I := Low(FNames) to High(FNames) do ++ if FNames[I] = AName then ++ begin ++ Result := FValues[I]; ++ exit; ++ end; ++ Result := nil; ++end; ++ ++function TGDBMI_ListValue.GetCount: LongInt; ++begin ++ Result := Length(FValues); ++end; ++ ++function TGDBMI_ListValue.GetValueAt(AIndex: LongInt): TGDBMI_Value; ++begin ++ Assert((AIndex >= Low(FValues)) and (AIndex <= High(FValues))); ++ Result := FValues[AIndex]; ++end; ++ ++constructor TGDBMI_AsyncOutput.Create; ++begin ++ FParameters := TGDBMI_TupleValue.Create; ++end; ++ ++destructor TGDBMI_AsyncOutput.Destroy; ++begin ++ FParameters.Free; ++ inherited Destroy; ++end; ++ ++procedure TGDBMI_AsyncOutput.Clear; ++begin ++ AsyncClass := ''; ++ Parameters.Clear; ++end; ++ ++function TGDBMI_ResultRecord.Success: Boolean; ++begin ++ { according to the GDB docs, 'done' and 'running' should be treated identically by clients } ++ Result := (AsyncClass='done') or (AsyncClass='running'); ++end; ++ ++function ParseCString(const CStr: string; var NextCharPos: LongInt): string; ++begin ++ if (NextCharPos <= Length(CStr)) and (CStr[NextCharPos] = '"') then ++ Inc(NextCharPos); ++ Result := ''; ++ while NextCharPos <= Length(CStr) do ++ begin ++ if CStr[NextCharPos] = '"' then ++ begin ++ Inc(NextCharPos); ++ exit; ++ end ++ else if CStr[NextCharPos] = '\' then ++ begin ++ Inc(NextCharPos); ++ if NextCharPos <= Length(CStr) then ++ case CStr[NextCharPos] of ++ '''': Result := Result + ''''; ++ '"': Result := Result + '"'; ++ 'n': Result := Result + #10; ++ 'r': Result := Result + #13; ++ 't': Result := Result + #9; ++ 'v': Result := Result + #11; ++ 'b': Result := Result + #8; ++ 'f': Result := Result + #12; ++ 'a': Result := Result + #7; ++ '\': Result := Result + '\'; ++ '?': Result := Result + '?'; ++ {\0, \000, \xhhh} ++ end; ++ end ++ else ++ Result := Result + CStr[NextCharPos]; ++ Inc(NextCharPos); ++ end; ++end; ++ ++function ParseIdentifier(const S: string; var NextCharPos: LongInt): string; ++begin ++ Result := ''; ++ while (NextCharPos <= Length(S)) and (S[NextCharPos] in ['A'..'Z', 'a'..'z', '0'..'9', '-']) do ++ begin ++ Result := Result + S[NextCharPos]; ++ Inc(NextCharPos); ++ end; ++end; ++ ++function ParseValue(const S: string; var NextCharPos: LongInt): TGDBMI_Value; ++var ++ CStr: string; ++ Tuple: TGDBMI_TupleValue; ++ List: TGDBMI_ListValue; ++ ++ Name: string; ++ Value: TGDBMI_Value; ++begin ++ Assert(NextCharPos <= Length(S)); ++ case S[NextCharPos] of ++ '"': ++ begin ++ CStr := ParseCString(S, NextCharPos); ++ Result := TGDBMI_StringValue.Create(CStr); ++ end; ++ '{': ++ begin ++ Inc(NextCharPos); ++ Assert(NextCharPos <= Length(S)); ++ Tuple := TGDBMI_TupleValue.Create; ++ Result := Tuple; ++ while (NextCharPos <= Length(S)) and (S[NextCharPos] <> '}') do ++ begin ++ Name := ParseIdentifier(S, NextCharPos); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] = '='); ++ Inc(NextCharPos); ++ Value := ParseValue(S, NextCharPos); ++ Tuple.Add(Name, Value); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] in [',', '}']); ++ if S[NextCharPos] = ',' then ++ Inc(NextCharPos); ++ end; ++ if (NextCharPos <= Length(S)) and (S[NextCharPos] = '}') then ++ Inc(NextCharPos); ++ end; ++ '[': ++ begin ++ Inc(NextCharPos); ++ Assert(NextCharPos <= Length(S)); ++ List := TGDBMI_ListValue.Create; ++ Result := List; ++ if S[NextCharPos] in ['"', '{', '['] then ++ begin ++ { list of values, no names } ++ while (NextCharPos <= Length(S)) and (S[NextCharPos] <> ']') do ++ begin ++ Value := ParseValue(S, NextCharPos); ++ List.Add('', Value); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] in [',', ']']); ++ if S[NextCharPos] = ',' then ++ Inc(NextCharPos); ++ end; ++ end ++ else ++ begin ++ { list of name=value pairs (like a tuple) } ++ while (NextCharPos <= Length(S)) and (S[NextCharPos] <> ']') do ++ begin ++ Name := ParseIdentifier(S, NextCharPos); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] = '='); ++ Inc(NextCharPos); ++ Value := ParseValue(S, NextCharPos); ++ List.Add(Name, Value); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] in [',', ']']); ++ if S[NextCharPos] = ',' then ++ Inc(NextCharPos); ++ end; ++ end; ++ if (NextCharPos <= Length(S)) and (S[NextCharPos] = ']') then ++ Inc(NextCharPos); ++ end; ++ else ++ Assert(False); ++ end; ++end; ++ ++procedure ParseAsyncOutput(const S: string; AsyncOutput: TGDBMI_AsyncOutput; var NextCharPos: LongInt); ++var ++ Name: string; ++ Value: TGDBMI_Value; ++begin ++ AsyncOutput.Clear; ++ AsyncOutput.AsyncClass := ParseIdentifier(S, NextCharPos); ++ while NextCharPos <= Length(S) do ++ begin ++ Assert(S[NextCharPos] = ','); ++ Inc(NextCharPos); ++ Name := ParseIdentifier(S, NextCharPos); ++ Assert(NextCharPos <= Length(S)); ++ Assert(S[NextCharPos] = '='); ++ Inc(NextCharPos); ++ Value := ParseValue(S, NextCharPos); ++ AsyncOutput.Parameters.Add(Name, Value); ++ end; ++end; ++ ++function TGDBWrapper.IsAlive: Boolean; ++begin ++ Result := Assigned(FProcess) and FProcess.Alive; ++end; ++ ++procedure TGDBWrapper.ReadResponse; ++var ++ S: string; ++ I: LongInt; ++ NextCharPos: LongInt; ++ NAO: TGDBMI_AsyncOutput; ++begin ++ FRawResponse.Clear; ++ FConsoleStream.Clear; ++ ExecAsyncOutput.Clear; ++ for I := Low(NotifyAsyncOutput) to High(NotifyAsyncOutput) do ++ FreeAndNil(NotifyAsyncOutput[I]); ++ SetLength(NotifyAsyncOutput, 0); ++ if not FProcess.Alive then ++ exit; ++ repeat ++ S := FProcess.GDBReadLn; ++ FRawResponse.Add(S); ++ if Length(S) >= 1 then ++ case S[1] of ++ '~': ++ begin ++ NextCharPos := 2; ++ FConsoleStream.Add(ParseCString(S, NextCharPos)); ++ end; ++ '*': ++ begin ++ NextCharPos := 2; ++ ParseAsyncOutput(S, ExecAsyncOutput, NextCharPos); ++ end; ++ '^': ++ begin ++ NextCharPos := 2; ++ ParseAsyncOutput(S, ResultRecord, NextCharPos); ++ end; ++ '=': ++ begin ++ NextCharPos := 2; ++ NAO := TGDBMI_AsyncOutput.Create; ++ try ++ ParseAsyncOutput(S, NAO, NextCharPos); ++ SetLength(NotifyAsyncOutput, Length(NotifyAsyncOutput) + 1); ++ NotifyAsyncOutput[Length(NotifyAsyncOutput) - 1] := NAO; ++ NAO := nil; ++ finally ++ NAO.Free; ++ end; ++ end; ++ end; ++ until (S = '(gdb) ') or (S = '(gdb)') or not FProcess.Alive; ++end; ++ ++constructor TGDBWrapper.Create; ++begin ++ FRawResponse := TStringList.Create; ++ FConsoleStream := TStringList.Create; ++ FProcess := TGDBProcess.Create; ++ FExecAsyncOutput := TGDBMI_AsyncOutput.Create; ++ FResultRecord := TGDBMI_ResultRecord.Create; ++ ReadResponse; ++end; ++ ++destructor TGDBWrapper.Destroy; ++begin ++ if Alive then ++ Command('-gdb-exit'); ++ FProcess.Free; ++ FResultRecord.Free; ++ FExecAsyncOutput.Free; ++ FConsoleStream.Free; ++ FRawResponse.Free; ++end; ++ ++procedure TGDBWrapper.Command(S: string); ++begin ++ FProcess.GDBWriteLn(S); ++ ReadResponse; ++end; ++ ++procedure TGDBWrapper.WaitForProgramStop; ++begin ++ repeat ++ ReadResponse; ++ until (ExecAsyncOutput.AsyncClass = 'stopped') or not FProcess.Alive; ++end; ++ ++end. +diff --git a/fpcsrc/ide/globdir.inc b/fpcsrc/ide/globdir.inc +index 520779f3..b8370a77 100644 +--- a/fpcsrc/ide/globdir.inc ++++ b/fpcsrc/ide/globdir.inc +@@ -195,3 +195,29 @@ + {$ifdef FPC_ARMHF} + {$define FPC_ARMEL32} + {$endif FPC_ARMHF} ++ ++{ Set TARGET_IS_64BIT for corresponding compilation targets } ++{$ifdef X86_64} ++ {$define TARGET_IS_64BIT} ++{$endif} ++{$ifdef IA64} ++ {$define TARGET_IS_64BIT} ++{$endif} ++{$ifdef ALPHA} ++ {$define TARGET_IS_64BIT} ++{$endif} ++{$ifdef POWERPC64} ++ {$define TARGET_IS_64BIT} ++{$endif} ++{$ifdef AARCH64} ++ {$define TARGET_IS_64BIT} ++{$endif} ++ ++{$ifdef GDBMI} ++ {$ifdef DEBUG} ++ {$define GDB_RAW_OUTPUT} ++ {$endif DEBUG} ++ {$ifdef Windows} ++ {$define GDB_WINDOWS_ALWAYS_USE_ANOTHER_CONSOLE} ++ {$endif Windows} ++{$endif GDBMI} +diff --git a/fpcsrc/ide/weditor.pas b/fpcsrc/ide/weditor.pas +index a777ee23..4b967438 100644 +--- a/fpcsrc/ide/weditor.pas ++++ b/fpcsrc/ide/weditor.pas +@@ -1076,7 +1076,7 @@ begin + BMFScan := NotFoundValue; + exit; + end; +- s2[0]:=chr(len); { sets the length to that of the search String } ++ SetLength(s2,len); { sets the length to that of the search String } + found:=False; + numb:=pred(len); + While (not found) and (numb=0) do +@@ -4802,8 +4802,13 @@ begin + end; + + procedure TCustomCodeEditor.BreakLine; ++var ++ SCP: TPoint; + begin +- NotImplemented; Exit; ++ { Like insert new line, but leave current pos unchanged } ++ SCP:=CurPos; ++ InsertNewLine; ++ SetCurPtr(SCP.X,SCP.Y); + end; + + procedure TCustomCodeEditor.BackSpace; +@@ -6800,8 +6805,7 @@ begin + S:=GetLineText(Line); + { Remove all traling spaces PM } + if not Editor^.IsFlagSet(efKeepTrailingSpaces) then +- While (Length(S)>0) and (S[Length(S)]=' ') do +- Dec(S[0]); ++ s:=RTrim(S,False); // removes trailing #0 too + { if FlagSet(efUseTabCharacters) then + S:=CompressUsingTabs(S,TabSize); + } +diff --git a/fpcsrc/ide/windebug.pas b/fpcsrc/ide/windebug.pas +index 1e06f126..8a067a7d 100644 +--- a/fpcsrc/ide/windebug.pas ++++ b/fpcsrc/ide/windebug.pas +@@ -36,7 +36,11 @@ implementation + {$ifndef NODEBUG} + + uses +- gdbint, ++ {$ifdef GDBMI} ++ gdbmiint, ++ {$else GDBMI} ++ gdbint, ++ {$endif GDBMI} + strings, + windows; + +diff --git a/fpcsrc/ide/wresourc.pas b/fpcsrc/ide/wresourc.pas +index 7005666a..b31bb34a 100644 +--- a/fpcsrc/ide/wresourc.pas ++++ b/fpcsrc/ide/wresourc.pas +@@ -780,6 +780,9 @@ begin + Fail; + End; + MyStream:=true; ++ {$ifdef HASAMIGA} ++ Flush; ++ {$endif} + end; + + constructor TResourceFile.LoadFile(AFileName: string); diff --git a/patches/fix-IDE-data-file-location.patch b/patches/fix-IDE-data-file-location.patch new file mode 100644 index 00000000..bed6e231 --- /dev/null +++ b/patches/fix-IDE-data-file-location.patch @@ -0,0 +1,97 @@ +Description: Align fp IDE template file paths with Debian standards + The fp IDE looks for template files in /usr/bin where itself is installed. + However this is not conform with Debian standard for file locations. + This patch fixes this by making the IDE looking for templates in the base + installation directory. + Location of IDE template files in Debian distribution is: + /usr/lib/$(DEB_TARGET_MULTIARCH)/fpc/3.2.2/ide/ + as for examples: + /usr/lib/x86_64-linux-gnu/fpc/3.2.2/ide + /usr/lib/arm-linux-gnueabihf/fpc/3.2.2/ide +Author: Abou Al Montacir +index 54d0ffd1..39ae6079 100644 +--- a/fpcsrc/packages/ide/fpcompil.pas ++++ b/fpcsrc/packages/ide/fpcompil.pas +@@ -911,6 +911,8 @@ begin + + MainFile:=FileName; + SetStatus('Writing switches to file...'); ++ if SwitchesPath = '/etc/'+SwitchesName then ++ SwitchesPath := SwitchesName; + WriteSwitches(SwitchesPath); + { leaving open browsers leads to crashes !! (PM) } + SetStatus('Preparing symbol info...'); +Index: fpc/fpcsrc/packages/ide/fpmake.pp +=================================================================== +--- fpc.orig/fpcsrc/packages/ide/fpmake.pp ++++ fpc/fpcsrc/packages/ide/fpmake.pp +@@ -282,16 +282,16 @@ begin + T.Directory:='compiler'; + T.Install:=false; + +- P.InstallFiles.Add('fp.ans','$(bininstalldir)'); +- P.InstallFiles.Add('gplprog.pt','$(bininstalldir)'); +- P.InstallFiles.Add('gplunit.pt','$(bininstalldir)'); +- P.InstallFiles.Add('program.pt','$(bininstalldir)'); +- P.InstallFiles.Add('unit.pt','$(bininstalldir)'); +- P.InstallFiles.Add('cvsco.tdf','$(bininstalldir)'); +- P.InstallFiles.Add('cvsdiff.tdf','$(bininstalldir)'); +- P.InstallFiles.Add('cvsup.tdf','$(bininstalldir)'); +- P.InstallFiles.Add('grep.tdf','$(bininstalldir)'); +- P.InstallFiles.Add('tpgrep.tdf','$(bininstalldir)'); ++ P.InstallFiles.Add('fp.ans','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('gplprog.pt','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('gplunit.pt','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('program.pt','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('unit.pt','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('cvsco.tdf','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('cvsdiff.tdf','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('cvsup.tdf','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('grep.tdf','$(baseinstalldir)/ide'); ++ P.InstallFiles.Add('tpgrep.tdf','$(baseinstalldir)/ide'); + P.InstallFiles.Add('fp32.ico', [win32, win64], '$(bininstalldir)'); + + with P.Sources do +index b493cafd..15806a7a 100644 +--- a/fpcsrc/packages/ide/fpini.pas ++++ b/fpcsrc/packages/ide/fpini.pas +@@ -154,6 +154,17 @@ const + ieShowReadme = 'ShowReadme'; + ieEditKeys = 'EditKeys'; + ++const ++{$ifdef CPUARMHF} ++ gnu = 'gnueabihf'; ++{$endif CPUARMHF} ++{$ifdef CPUARMEL} ++ gnu = 'gnueabi'; ++{$endif CPUARMEL} ++{$ifndef CPUARM} ++ gnu = 'gnu'; ++{$endif CPUARM} ++ FullTarget = {$I %FPCTARGETCPU%} + '-' + {$I %FPCTARGETOS%} + '-' + gnu; + + Procedure InitDirs; + begin +@@ -182,7 +193,7 @@ begin + SystemIDEDir:=FExpand(DirOf(system.paramstr(0))+'../lib/fpc/'+version_string+'/ide/text'); + If Not ExistsDir(SystemIDEdir) Then + begin +- SystemIDEDir:=FExpand(DirOf(system.paramstr(0))+'../lib64/fpc/'+version_string+'/ide/text'); ++ SystemIDEDir:=FExpand(DirOf(system.paramstr(0))+'../lib/'+LowerCase(FullTarget)+'/fpc/'+version_string+'/ide'); + If Not ExistsDir(SystemIDEdir) Then + SystemIDEDir:='/usr/lib/fpc/'+version_string+'/ide/text'; + end; +diff --git a/fpcsrc/packages/ide/fpswitch.pas b/fpcsrc/packages/ide/fpswitch.pas +index e46266f0..196f2151 100644 +--- a/fpcsrc/packages/ide/fpswitch.pas ++++ b/fpcsrc/packages/ide/fpswitch.pas +@@ -1392,6 +1392,8 @@ begin + AddLongIntItem('Local ~h~eap size','h'); + end;} + SwitchesPath:=LocateFile(SwitchesName); ++ if ExistsFile('/etc/'+SwitchesName) then ++ SwitchesPath:='/etc/'+SwitchesName; + if SwitchesPath='' then + SwitchesPath:=SwitchesName; + SwitchesPath:=FExpand(SwitchesPath); diff --git a/patches/fix-encoding-of-localization-files-to-be-utf8.patch b/patches/fix-encoding-of-localization-files-to-be-utf8.patch new file mode 100644 index 00000000..bbc2b139 --- /dev/null +++ b/patches/fix-encoding-of-localization-files-to-be-utf8.patch @@ -0,0 +1,334 @@ +From: Abou Al Montacir +Date: Wed, 15 Jan 2014 21:49:04 +0100 +Subject: Change path of localization fies to fit Debian standard. (Closes: Bug#73368) +Bug-Debian: http://bugs.debian.org/73368 + +Index: fpc/fpcsrc/utils/fpdoc/intl/dglobals.de.po +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/dglobals.de.po ++++ fpc/fpcsrc/utils/fpdoc/intl/dglobals.de.po +@@ -1,6 +1,6 @@ + #: dglobals:sdocpackagetitle + msgid "Reference for package '%s'" +-msgstr "Referenz für Paket '%s'" ++msgstr "Referenz für Paket '%s'" + + #: dglobals:sdocprograms + msgid "Programs" +@@ -12,7 +12,7 @@ msgstr "Units" + + #: dglobals:sdocunittitle + msgid "Reference for unit '%s'" +-msgstr "Referenz für Unit '%s'" ++msgstr "Referenz für Unit '%s'" + + #: dglobals:sdocinterfacesection + msgid "Interface section" +@@ -60,11 +60,11 @@ msgstr "Variablen" + + #: dglobals:sdocunitoverview + msgid "Overview of unit '%s'" +-msgstr "Überblick über Unit '%s'" ++msgstr "Überblick über Unit '%s'" + + #: dglobals:sdocoverview + msgid "Overview" +-msgstr "Überblick" ++msgstr "Überblick" + + #: dglobals:sdocsearch + msgid "Search" +@@ -104,11 +104,11 @@ msgstr "Bemerkung: " + + #: dglobals:sdocmethodoverview + msgid "Method overview" +-msgstr "Überblick über die Methoden" ++msgstr "Überblick über die Methoden" + + #: dglobals:sdocpropertyoverview + msgid "Property overview" +-msgstr "Überblick über die Eigenschaften" ++msgstr "Überblick über die Eigenschaften" + + #: dglobals:sdocpage + msgid "Page" +@@ -152,11 +152,11 @@ msgstr "Wert" + + #: dglobals:sdocexplanation + msgid "Explanation" +-msgstr "Erklärung" ++msgstr "Erklärung" + + #: dglobals:sdocvaluesforenum + msgid "Enumeration values for type %s" +-msgstr "Aufzählungswerte für Typ %s" ++msgstr "Aufzählungswerte für Typ %s" + + #: dglobals.sdocup + msgid "Up" +@@ -164,7 +164,7 @@ msgstr "Hoch" + + #: dglobals.sdocnext + msgid "Next" +-msgstr "Nächste" ++msgstr "Nächste" + + #: dglobals.sdocprevious + msgid "Previous" +Index: fpc/fpcsrc/utils/fpdoc/intl/dwriter.de.po +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/dwriter.de.po ++++ fpc/fpcsrc/utils/fpdoc/intl/dwriter.de.po +@@ -4,23 +4,23 @@ msgstr "Beim Schreiben der Datei \"%s\" + + #: dwriter:serrinvalidshortdescr + msgid "Invalid short description" +-msgstr "Ungültige Kurzbeschreibung" ++msgstr "Ungültige Kurzbeschreibung" + + #: dwriter:serrinvaliddescr + msgid "Invalid description (illegal XML element: \"%s\")" +-msgstr "Ungültige Beschreibung (illegales XML-Element: \"%s\")" ++msgstr "Ungültige Beschreibung (illegales XML-Element: \"%s\")" + + #: dwriter:serrinvalidparacontent + msgid "Invalid paragraph content" +-msgstr "Ungültiger Absatzinhalt (in

-Element)" ++msgstr "Ungültiger Absatzinhalt (in

-Element)" + + #: dwriter:serrinvalidelementinlist + msgid "Invalid element in list - only \"li\" allowed" +-msgstr "Ungültiges Element in Liste - nur \"li\" ist erlaubt" ++msgstr "Ungültiges Element in Liste - nur \"li\" ist erlaubt" + + #: dwriter:serrinvalidlistcontent + msgid "Invalid list content" +-msgstr "Ungültiger Listeninhalt" ++msgstr "Ungültiger Listeninhalt" + + #: dwriter:serrlistisempty + msgid "List is empty - need at least one \"li\" element" +@@ -28,11 +28,11 @@ msgstr "Liste ist leer - brauche mindest + + #: dwriter:serrinvalidremarkcontent + msgid "Invalid content (illegal XML element: \"%s\")" +-msgstr "Ungültiger -Inhalt (illegales XML-Element: \"%s\")" ++msgstr "Ungültiger -Inhalt (illegales XML-Element: \"%s\")" + + #: dwriter:serrinvaliddefinitiontermcontent + msgid "Invalid content in definition term" +-msgstr "Ungültiger Inhalt in Definitionsterm" ++msgstr "Ungültiger Inhalt in Definitionsterm" + + #: dwriter:serrdefinitionentrymissing + msgid "Definition entry after definition term is missing" +@@ -40,11 +40,11 @@ msgstr "Definitionseintrag nach Definiti + + #: dwriter:serrtableinvalidbordervalue + msgid "Invalid \"border\" value for " +-msgstr "Ungültiger \"border\"-Wert für
" ++msgstr "Ungültiger \"border\"-Wert für
" + + #: dwriter:serrinvalidtablecontent + msgid "Invalid table content" +-msgstr "Ungültiger Tabelleninhalt" ++msgstr "Ungültiger Tabelleninhalt" + + #: dwriter:serrtablerowempty + msgid "Table row is empty (no \"td\" elements found)" +@@ -52,7 +52,7 @@ msgstr "Tabellenzeile ist leer (keine \" + + #: dwriter:serrinvalidcontentbeforesectiontitle + msgid "Invalid content before section title" +-msgstr "Ungültiger Inhalt vor Abschnittstitel" ++msgstr "Ungültiger Inhalt vor Abschnittstitel" + + #: dwriter:serrsectiontitleexpected + msgid "Section title (\"title\" element) expected" +@@ -76,5 +76,5 @@ msgstr "Warnung: Ziel-ID von " +-msgstr "Benötige einen Ausgabedateinamen, bitte geben Sie einen mit --output= an" ++msgstr "Benötige einen Ausgabedateinamen, bitte geben Sie einen mit --output= an" + + #: fpdoc:swritingpages + msgid "Writing %d pages..." +Index: fpc/fpcsrc/utils/fpdoc/intl/fpdocmk.de.po +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/fpdocmk.de.po ++++ fpc/fpcsrc/utils/fpdoc/intl/fpdocmk.de.po +@@ -18,33 +18,33 @@ msgstr "" + + #: fpdocmk:stitle + msgid "FPDocMK - Makefile.fpc processor for Free Pascal Documentation Tool" +-msgstr "FPDocMK - Makefile.fpc-Prozessor für das " ++msgstr "FPDocMK - Makefile.fpc-Prozessor für das " + "Free-Pascal-Dokumentationswerkzeug" + + #: fpdocmk:scopyright + msgid "(c) 2003 Areca Systems GmbH / Sebastian Guenther, sg@freepascal.org" +-msgstr "(c) 2003 Areca Systems GmbH / Sebastian Günther, sg@freepascal.org" ++msgstr "(c) 2003 Areca Systems GmbH / Sebastian Günther, sg@freepascal.org" + + #: fpdocmk:scmdlinehelp + msgid "See documentation for usage." +-msgstr "Lesen Sie die Dokumentation für Infos zur Benutzung." ++msgstr "Lesen Sie die Dokumentation für Infos zur Benutzung." + + #: fpdocmk:scmdlineinvalidoption + msgid "Ignoring unknown option \"%s\"" +-msgstr "Ignoriere unbekannte Option »%s«" ++msgstr "Ignoriere unbekannte Option »%s«" + + #: fpdocmk:scmdlineinvalidformat + msgid "Invalid format \"%s\" specified" +-msgstr "Ungültiges Format »%s« gewählt" ++msgstr "Ungültiges Format »%s« gewählt" + + #: fpdocmk:scmdlineoutputoptionmissing + msgid "Need an output path or filename, please specify one with --output=" +-msgstr "Benötige einen Ausgabepfad oder -dateinamen; " ++msgstr "Benötige einen Ausgabepfad oder -dateinamen; " + "bitte geben Sie mit --output= einen an." + + #: fpdocmk:sneedpackagename + msgid "No package name specified. Please specify one using the --package option." +-msgstr "Kein Paketname gewählt. Bitte geben Sie mit der Option --package " ++msgstr "Kein Paketname gewählt. Bitte geben Sie mit der Option --package " + "einen an." + + #: fpdocmk:sdone +Index: fpc/fpcsrc/utils/fpdoc/intl/fpdocstr.de.po +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/fpdocstr.de.po ++++ fpc/fpcsrc/utils/fpdoc/intl/fpdocstr.de.po +@@ -50,11 +50,11 @@ msgstr "Alias-Typ" + + #: fpdocstr:sptreetypealiastype + msgid "\"type\" alias type" +-msgstr "Alias-Typ »type«" ++msgstr "Alias-Typ »type«" + + #: fpdocstr:sptreeclassoftype + msgid "\"class of\" type" +-msgstr "»class-of«-Typ" ++msgstr "»class-of«-Typ" + + #: fpdocstr:sptreerangetype + msgid "Range type" +@@ -66,11 +66,11 @@ msgstr "Array-Typ" + + #: fpdocstr:sptreeenumvalue + msgid "Enumeration value" +-msgstr "Aufzählungswert" ++msgstr "Aufzählungswert" + + #: fpdocstr:sptreeenumtype + msgid "Enumeration type" +-msgstr "Aufzählungstyp" ++msgstr "Aufzählungstyp" + + #: fpdocstr:sptreesettype + msgid "Set type" +@@ -118,7 +118,7 @@ msgstr "Eigenschaft" + + #: fpdocstr:sptreeoverloadedprocedure + msgid "Overloaded procedure" +-msgstr "Überladene Prozedur" ++msgstr "Überladene Prozedur" + + #: fpdocstr:sptreeprocedure + msgid "Procedure" +@@ -138,7 +138,7 @@ msgstr "Destruktor" + + #: fpdocstr:sdocpackagetitle + msgid "Reference for package '%s'" +-msgstr "Referenz für das Paket »%s«" ++msgstr "Referenz für das Paket »%s«" + + #: fpdocstr:sdocprograms + msgid "Programs" +@@ -150,7 +150,7 @@ msgstr "Units" + + #: fpdocdef:sdocunittitle + msgid "Reference for unit '%s'" +-msgstr "Referenz für Unit »%s«" ++msgstr "Referenz für Unit »%s«" + + #: fpdocdef:sdocinterfacesection + msgid "Interface section" +@@ -166,7 +166,7 @@ msgstr "Verwendete Units" + + #: fpdocdef:sdocusedunitsbyunitxy + msgid "Used units by unit '%s'" +-msgstr "Von Unit »%s« verwendete Units" ++msgstr "Von Unit »%s« verwendete Units" + + #: fpdocdef:sdocconststypesvars + msgid "Constants, types and variables" +@@ -198,7 +198,7 @@ msgstr "Variablen" + + #: fpdocdef:sdocoverview + msgid "Overview" +-msgstr "Überblick" ++msgstr "Überblick" + + #: fpdocdef:sdocsearch + msgid "Search" +@@ -234,11 +234,11 @@ msgstr "Bemerkung: " + + #: fpdocstr:sdocmethodoverview + msgid "Method overview" +-msgstr "Überblick über die Methoden" ++msgstr "Überblick über die Methoden" + + #: fpdocstr:sdocpropertyoverview + msgid "Property overview" +-msgstr "Überblick über die Eigenschaften" ++msgstr "Überblick über die Eigenschaften" + + #: fpdocstr:sdocpage + msgid "Page" +Index: fpc/fpcsrc/utils/fpdoc/intl/makeskel.de.po +=================================================================== +--- fpc.orig/fpcsrc/utils/fpdoc/intl/makeskel.de.po ++++ fpc/fpcsrc/utils/fpdoc/intl/makeskel.de.po +@@ -1,10 +1,10 @@ + #: makeskel:stitle + msgid "MakeSkel - FPDoc skeleton XML description file generator" +-msgstr "MakeSkel - Skelett-Generator für FPDoc-XML-Beschreibungsdateien" ++msgstr "MakeSkel - Skelett-Generator für FPDoc-XML-Beschreibungsdateien" + + #: makeskel:scopyright + msgid "(c) 2000 - 2003 Areca Systems GmbH / Sebastian Guenther, sg@freepascal.org" +-msgstr "(c) 2000 - 2003 Areca Systems GmbH / Sebastian Günther, sg@freepascal.org" ++msgstr "(c) 2000 - 2003 Areca Systems GmbH / Sebastian Günther, sg@freepascal.org" + + #: makeskel:scmdlinehelp + msgid "See documentation for usage." diff --git a/patches/fix-samplecfg-tool.patch b/patches/fix-samplecfg-tool.patch new file mode 100644 index 00000000..67de771d --- /dev/null +++ b/patches/fix-samplecfg-tool.patch @@ -0,0 +1,58 @@ +From: Abou Al Montacir +Date: Wed, 30 Dec 2020 22:21:46 +0100 +Description: Fix samplecfg tool to be compatible with multiarch compiler paths. + (Closes: Bug#975351) + +Index: fpc/fpcsrc/compiler/utils/samplecfg +=================================================================== +--- fpc.orig/fpcsrc/compiler/utils/samplecfg ++++ fpc/fpcsrc/compiler/utils/samplecfg +@@ -15,7 +15,7 @@ if [ $# = 0 ]; then + echo 'confdir = Path to /etc' + echo 'Example :' + echo 'samplecfg /usr/local/lib/fpc/3.0.2' +- exit 1 ++ fpcdir=${1:-`dirname $0`} + fi + if [ "$2" ]; then + sysdir="$2" +@@ -23,17 +23,19 @@ if [ "$2" ]; then + else + sysdir=/etc + fi +-FPCBIN=`dirname "$1"`/../../bin/fpc +-FPBIN=`dirname "$1"`/../../bin/fp +-FPPKGBIN=`dirname "$1"`/../../bin/fppkg +-FPCMKCFGBIN=`dirname "$1"`/../../bin/fpcmkcfg +-SHAREPATH=`dirname "$1"`/../../share/fpc/\$fpcversion ++fpcdir=`realpath -s "${fpcdir}"` ++echo 'Running with fpcdir="'${fpcdir}'"' ++FPCBIN=/usr/bin/fpc ++FPBIN=/usr/bin/fp ++FPPKGBIN=/usr/bin/fppkg ++FPCMKCFGBIN=/usr/bin/fpcmkcfg ++SHAREPATH=/usr/share/fpc/\$fpcversion + # Look for one in the PATH, if no new one was installed. + if [ ! -f $FPCMKCFGBIN ]; then + FPCMKCFGBIN=fpcmkcfg + fi + +-sysfpdirbase=`dirname "$1"`/`"$FPCBIN" -iV` ++sysfpdirbase=`dirname "${fpcdir}"`/`"$FPCBIN" -iV` + sysfpdirbase2=$sysfpdirbase/ide + sysfpdir=$sysfpdirbase2/text + +@@ -72,10 +74,10 @@ if [ -f "$FPBIN" ] ; then + fi + + # set right path to FPC with $fpcversion +-FPCPATH=`dirname "$1"`/\$fpcversion ++FPCPATH=`dirname "${fpcdir}"` + # set right prefix to FPC +-FPCGLOBALPATH=`dirname "$1"` +-FPCGLOBALPREFIX="$FPCGLOBALPATH"/../../ ++FPCGLOBALPATH=`dirname "${FPCPATH}"` ++FPCGLOBALPREFIX=/usr + + # Write (.)fpc.cfg + echo Writing sample configuration file to $fpccfgfile diff --git a/patches/fix-spelling-errors-3.patch b/patches/fix-spelling-errors-3.patch new file mode 100644 index 00000000..229039da --- /dev/null +++ b/patches/fix-spelling-errors-3.patch @@ -0,0 +1,16 @@ +Description: some more Lintian detection spelling misstakes +Author: Paul Gevers + +Index: fpc/fpcsrc/utils/fpcm/fpcmake.ini +=================================================================== +--- fpc.orig/fpcsrc/utils/fpcm/fpcmake.ini ++++ fpc/fpcsrc/utils/fpcm/fpcmake.ini +@@ -109,7 +109,7 @@ ifdef inUnix + PATHSEP=/ + else + PATHSEP:=$(subst /,\,/) +-# cygwin bash or sh can not handle backslashs ++# cygwin bash or sh can not handle backslashes + ifdef inCygWin + PATHSEP=/ + endif diff --git a/patches/fix-units-path-to-be-multi-arch-safe.patch b/patches/fix-units-path-to-be-multi-arch-safe.patch new file mode 100644 index 00000000..d1d6d8b8 --- /dev/null +++ b/patches/fix-units-path-to-be-multi-arch-safe.patch @@ -0,0 +1,99 @@ +From: Abou Al Montacir +Date: Sun, 12 Nov 2017 22:24:15 +0100 +Description: Change path of unit files to make it support MA co-installation. + (Closes: Bug#73368) +Bug-Debian: http://bugs.debian.org/73368 + +Index: fpc/fpcsrc/utils/fpcm/fpcmake.ini +=================================================================== +--- fpc.orig/fpcsrc/utils/fpcm/fpcmake.ini ++++ fpc/fpcsrc/utils/fpcm/fpcmake.ini +@@ -338,6 +338,11 @@ endif + + export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE + ++ifndef DEB_HOST_MULTIARCH ++DEB_HOST_MULTIARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) ++endif ++export DEB_HOST_MULTIARCH ++ + [fpmakefpcdetect] + ##################################################################### + # FPC Binary and Version Detection +@@ -415,7 +420,7 @@ ifeq ($(FPCDIR),wrong) + ifdef inUnix + override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) + ifeq ($(wildcard $(FPCDIR)/units),) +-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) ++override FPCDIR=/usr/lib/${DEB_HOST_MULTIARCH}/fpc/$(FPC_VERSION) + endif + else + override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) +@@ -641,7 +646,7 @@ endif + ifndef INSTALL_BASEDIR + ifdef UNIXHier + ifdef INSTALL_FPCPACKAGE +-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) ++INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/${DEB_HOST_MULTIARCH}/fpc/$(FPC_VERSION) + else + INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) + endif +@@ -684,7 +689,7 @@ endif + # Where to install shared libraries + ifndef INSTALL_LIBDIR + ifdef UNIXHier +-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib ++INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib/${DEB_HOST_MULTIARCH} + else + INSTALL_LIBDIR:=$(INSTALL_UNITDIR) + endif +@@ -794,7 +799,7 @@ INSTALL_DATADIR=$(INSTALL_BASEDIR) + endif + + ifndef INSTALL_SHAREDDIR +-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib ++INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib/${DEB_HOST_MULTIARCH} + endif + + ##################################################################### +Index: fpc/fpcsrc/packages/fpmkunit/src/fpmkunit.pp +=================================================================== +--- fpc.orig/fpcsrc/packages/fpmkunit/src/fpmkunit.pp ++++ fpc/fpcsrc/packages/fpmkunit/src/fpmkunit.pp +@@ -4538,6 +4538,9 @@ begin + BinInstallDir:=''; + LibInstallDir:=''; + ExamplesInstallDir:=''; ++ if GlobalUnitDir = '' then begin ++ GlobalUnitDir := FBaseInstallDir; ++ end; + end; + + +@@ -4884,6 +4887,17 @@ end; + ****************************************************************************} + + procedure TFPCDefaults.CompilerDefaults; ++const ++{$ifdef CPUARMHF} ++ gnu = 'gnueabihf'; ++{$endif CPUARMHF} ++{$ifdef CPUARMEL} ++ gnu = 'gnueabi'; ++{$endif CPUARMEL} ++{$ifndef CPUARM} ++ gnu = 'gnu'; ++{$endif CPUARM} ++ FullTarget = {$I %FPCTARGETCPU%} + '-' + {$I %FPCTARGETOS%} + '-' + gnu; + var + BD : String; + begin +@@ -4894,7 +4908,7 @@ begin + BD:=FixPath(GetEnvironmentVariable('FPCDIR'), False); + if BD='' then + begin +- BD:='/usr/local/lib/fpc/'+FCompilerVersion; ++ BD:='/usr/lib/' + LowerCase(FullTarget) + '/fpc/'+FCompilerVersion; + if not DirectoryExists(BD) and + DirectoryExists('/usr/lib/fpc/'+FCompilerVersion) then + BD:='/usr/lib/fpc/'+FCompilerVersion; diff --git a/patches/fix-utest-version-lists.patch b/patches/fix-utest-version-lists.patch new file mode 100644 index 00000000..3e47f183 --- /dev/null +++ b/patches/fix-utest-version-lists.patch @@ -0,0 +1,25 @@ +Description: fix version lists in utests.pp + utests.pp has three version lists, the first defining an enumerated type + and then the second two defining textual versions and svn branches + for each enumeration entry. + + Unfortunately the first list was not consistent with each other resulting + in a compile error. This patch expands the first list to match the + others. +Author: Peter Michael Green + +--- fpc-3.2.0+dfsg.orig/fpcsrc/tests/utils/testsuite/utests.pp ++++ fpc-3.2.0+dfsg/fpcsrc/tests/utils/testsuite/utests.pp +@@ -211,7 +211,11 @@ type + ver_3_0_3, + ver_3_0_4, + ver_3_0_5, +- ver_3_1_1); ++ ver_3_1_1, ++ ver_3_2_0, ++ ver_3_2_1, ++ ver_3_3_1 ++); + + const + ver_trunk = high (known_versions); diff --git a/patches/fix_make_files_generation.patch b/patches/fix_make_files_generation.patch new file mode 100644 index 00000000..7e6b231b --- /dev/null +++ b/patches/fix_make_files_generation.patch @@ -0,0 +1,96 @@ +From: Abou Al Montacir +Date: Sun, 04 Dec 2017 23:55:22 +0100 +Description: Fix sub directories in Makefile.fpc to allor recursive generation. + +Index: fpc/fpcsrc/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/Makefile.fpc ++++ fpc/fpcsrc/Makefile.fpc +@@ -7,7 +7,7 @@ name=fpc + version=3.2.2 + + [target] +-dirs=compiler rtl utils packages installer ++dirs=compiler rtl utils packages installer tests + + [require] + nortl=y +Index: fpc/fpcsrc/packages/ide/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/packages/ide/Makefile.fpc ++++ fpc/fpcsrc/packages/ide/Makefile.fpc +@@ -5,6 +5,9 @@ + name=ide + version=3.2.2 + ++[target] ++dirs=fakegdb compiler ++ + [require] + packages=rtl fpmkunit rtl-extra fv chm regexpr + packages_go32v2=graph +Index: fpc/fpcsrc/packages/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/packages/Makefile.fpc ++++ fpc/fpcsrc/packages/Makefile.fpc +@@ -2,6 +2,9 @@ + # + # Makefile.fpc for Free Pascal Packages + # ++[target] ++dirs= paszlib fcl-process hash libtar fpmkunit ++ + [require] + packages=rtl + +Index: fpc/fpcsrc/utils/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/utils/Makefile.fpc ++++ fpc/fpcsrc/utils/Makefile.fpc +@@ -1,6 +1,9 @@ + # + # Makefile.fpc for running fpmake + # ++[target] ++dirs=fpcm debugsvr dxegen fpcmkcfg fpcreslipo fpcres fpdoc fppkg fprcp h2pas importtl instantfpc mksymbian pas2fpm pas2jni pas2js pas2ut rmwait tply unicode json2pas ++ + [require] + packages=rtl fpmkunit fcl-json + +Index: fpc/fpcsrc/utils/fpcm/fpmake.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpcm/fpmake.pp ++++ fpc/fpcsrc/utils/fpcm/fpmake.pp +@@ -215,7 +215,7 @@ begin + {$endif ALLPACKAGES} + P.Version:='3.2.2'; + +- P.Dependencies.Add('fcl-base'); ++ //P.Dependencies.Add('fcl-base'); + + T:=P.Targets.AddProgram('fpcmake.pp'); + +Index: fpc/fpcsrc/tests/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/tests/Makefile.fpc ++++ fpc/fpcsrc/tests/Makefile.fpc +@@ -10,6 +10,7 @@ fpcdir=.. + rule=allexectests + + [target] ++dirs=tstunits utils + programs=gparmake createlst + + [rules] +Index: fpc/fpcsrc/tests/utils/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/tests/utils/Makefile.fpc ++++ fpc/fpcsrc/tests/utils/Makefile.fpc +@@ -13,6 +13,7 @@ fpcdir=../.. + nortl=y + + [target] ++dirs=testsuite + programs=dotest fptime fail testfail digest concat $(DBDIGEST) $(MSDOSPROG) + programs_win32=prepup + programs_win64=prepup diff --git a/patches/fix_powerpc_ftbfs_with_new_glibc.patch b/patches/fix_powerpc_ftbfs_with_new_glibc.patch new file mode 100644 index 00000000..08144279 --- /dev/null +++ b/patches/fix_powerpc_ftbfs_with_new_glibc.patch @@ -0,0 +1,41 @@ +Description: fp-compiler is not installable on powerpc since glibc 2.23 and + segfaults, this patch is a combination of patches. +Source: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/unix/dl.pp?r1=34368&r2=34365&pathrev=34368 +Source: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=826300#131 +Author: florian +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=826300 +Bug: http://bugs.freepascal.org/view.php?id=29594 + +Index: fpc/fpcsrc/rtl/unix/dl.pp +=================================================================== +--- fpc.orig/fpcsrc/rtl/unix/dl.pp ++++ fpc/fpcsrc/rtl/unix/dl.pp +@@ -31,8 +31,9 @@ const + {$define ELF} // ELF symbol versioning. + {$endif} + +-{$if defined(linux) and defined(cpuarm)} +-{ arm-linux seems to require this } ++{$if defined(linux) and (defined(cpuarm) or defined(cpupowerpc))} ++{ some linux targets seem to require this, if libc is not linked ++ the wrong start up code is used } + {$linklib c} + {$endif} + +--- a/fpcsrc/rtl/linux/powerpc/cprt0.as ++++ b/fpcsrc/rtl/linux/powerpc/cprt0.as +@@ -88,12 +88,8 @@ main_stub: + .globl _haltproc + .type _haltproc, @function + _haltproc: +- lis 11, ___fpc_ret@ha +- lwz 1, ___fpc_ret@l(11) +- addi 1, 1, 16 +- lwz 0, 0(1) +- mtlr 0 +- blr ++ bl _exit ++ b _haltproc + + # li 0, 1 /* exit call */ + # lis 3, operatingsystem_result@h diff --git a/patches/fix_source_location_for_documentation.patch b/patches/fix_source_location_for_documentation.patch new file mode 100644 index 00000000..0493316e --- /dev/null +++ b/patches/fix_source_location_for_documentation.patch @@ -0,0 +1,295 @@ +Index: fpc/fpcdocs/fcl-project.xml +=================================================================== +--- fpc.orig/fpcdocs/fcl-project.xml ++++ fpc/fpcdocs/fcl-project.xml +@@ -14,48 +14,48 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -103,7 +103,7 @@ + + + +- ++ + + + +Index: fpc/fpcdocs/rtl-project.xml +=================================================================== +--- fpc.orig/fpcdocs/rtl-project.xml ++++ fpc/fpcdocs/rtl-project.xml +@@ -14,96 +14,96 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + diff --git a/patches/glibc2.34.patch b/patches/glibc2.34.patch new file mode 100644 index 00000000..5a54a6bd --- /dev/null +++ b/patches/glibc2.34.patch @@ -0,0 +1,188 @@ +Description: Adjust startup code for glibc 2.34 + Based on the corresponding changes made in glibc: + https://sourceware.org/git/?p=glibc.git;a=commit;h=035c012e32c11e84d64905efaf55e74f704d3668 +Bug: https://gitlab.com/freepascal.org/fpc/source/-/issues/39295 +Author: Graham Inggs +Last-Update: 2022-08-12 + +--- a/fpcsrc/rtl/linux/powerpc64/cprt0.as ++++ b/fpcsrc/rtl/linux/powerpc64/cprt0.as +@@ -351,8 +351,8 @@ + start_addresses: + .quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/ + .quad main_stub +- .quad __libc_csu_init +- .quad __libc_csu_fini ++ .quad 0 ++ .quad 0 + .size start_adresses, .-start_addresses + + /* +--- a/fpcsrc/rtl/linux/powerpc64/gprt0.as ++++ b/fpcsrc/rtl/linux/powerpc64/gprt0.as +@@ -351,8 +351,8 @@ + start_addresses: + .quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/ + .quad main_stub +- .quad __libc_csu_init +- .quad __libc_csu_fini ++ .quad 0 ++ .quad 0 + .size start_adresses, .-start_addresses + + /* +--- a/fpcsrc/rtl/linux/aarch64/cprt0.as ++++ b/fpcsrc/rtl/linux/aarch64/cprt0.as +@@ -41,10 +41,8 @@ + init, fini, rtld_fini, stack_end) */ + adrp x0,:got:PASCALMAIN + ldr x0,[x0,#:got_lo12:PASCALMAIN] +- adrp x3,:got:__libc_csu_init +- ldr x3,[x3,#:got_lo12:__libc_csu_init] +- adrp x4,:got:__libc_csu_fini +- ldr x4,[x4,#:got_lo12:__libc_csu_fini] ++ mov x3, #0 ++ mov x4, #0 + bl __libc_start_main + + /* This should never happen */ +--- a/fpcsrc/rtl/linux/i386/si_c21.inc ++++ b/fpcsrc/rtl/linux/i386/si_c21.inc +@@ -35,8 +35,6 @@ + + {$asmmode att} + +-procedure __libc_csu_init; cdecl; external; +-procedure __libc_csu_fini; cdecl; external; + procedure libc_start_main; external name '__libc_start_main'; + procedure libc_exit(code: longint); cdecl; external name 'exit'; + +@@ -93,8 +91,8 @@ + pushl %esp { stack_end } + pushl %edx { function to be registered with + atexit(), passed by loader } +- pushl $__libc_csu_fini +- pushl $__libc_csu_init ++ pushl $0 ++ pushl $0 + pushl %esi { Push second argument: argv. } + pushl %ecx { Push first argument: argc. } + +--- a/fpcsrc/rtl/linux/x86_64/cprt0.as ++++ b/fpcsrc/rtl/linux/x86_64/cprt0.as +@@ -61,9 +61,8 @@ + which grow downwards). */ + pushq %rsp + +- /* Pass address of our own entry points to .fini and .init. */ +- movq __libc_csu_init@GOTPCREL(%rip), %rcx +- movq __libc_csu_fini@GOTPCREL(%rip), %r8 ++ xorl %r8d, %r8d ++ xorl %ecx, %ecx + + movq main_stub@GOTPCREL(%rip), %rdi + +--- a/fpcsrc/rtl/linux/arm/cprt0.as ++++ b/fpcsrc/rtl/linux/arm/cprt0.as +@@ -82,10 +82,10 @@ + + /* Set up the other arguments in registers */ + ldr a1, =PASCALMAIN +- ldr a4, =_init ++ ldr a4, = #0 + + /* Push fini */ +- str ip, [sp, #-4]! ++ str a4, [sp, #-4]! + + /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */ + +--- a/fpcsrc/rtl/linux/powerpc64/si_g.inc ++++ b/fpcsrc/rtl/linux/powerpc64/si_g.inc +@@ -657,9 +657,6 @@ + Process start/halt + ******************************************************************************} + +-procedure __libc_csu_init; cdecl; external; +-procedure __libc_csu_fini; cdecl; external; +- + procedure __libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl; external; + + type +@@ -745,8 +742,8 @@ + end + = (sda_base: nil; {* was _SDA_BASE_ but not in 64-bit ABI } + main: @main_stub; +- libc_csu_init: @__libc_csu_init; +- libc_csu_fini: @__libc_csu_fini ++ libc_csu_init: pointer(0); ++ libc_csu_fini: pointer(0) + ); + + procedure call_libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl; +--- a/fpcsrc/rtl/linux/powerpc64/si_c.inc ++++ b/fpcsrc/rtl/linux/powerpc64/si_c.inc +@@ -657,9 +657,6 @@ + Process start/halt + ******************************************************************************} + +-procedure __libc_csu_init; cdecl; external; +-procedure __libc_csu_fini; cdecl; external; +- + procedure __libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl; external; + + var +@@ -724,8 +721,8 @@ + end + = (sda_base: nil; {* was _SDA_BASE_ but not in 64-bit ABI } + main: @main_stub; +- libc_csu_init: @__libc_csu_init; +- libc_csu_fini: @__libc_csu_fini ++ libc_csu_init: pointer(0); ++ libc_csu_fini: pointer(0) + ); + + +--- a/fpcsrc/rtl/linux/powerpc/cprt0.as ++++ b/fpcsrc/rtl/linux/powerpc/cprt0.as +@@ -35,8 +35,8 @@ + start_addresses: + .long _SDA_BASE_ + .long main_stub +- .long __libc_csu_init +- .long __libc_csu_fini ++ .long 0 ++ .long 0 + .size start_adresses, .-start_addresses + + .section ".text" +--- a/fpcsrc/rtl/linux/mips/cprt0.as ++++ b/fpcsrc/rtl/linux/mips/cprt0.as +@@ -113,10 +113,9 @@ + and $29, -2 * 4 + subu $29, 32 + +- lw $7,%got(__libc_csu_init)($gp) /* init */ +- lw $8,%got(__libc_csu_fini)($gp) /* fini */ ++ move $7, $0 + +- sw $8, 16($29) /* fini */ ++ sw $0, 16($29) + sw $2, 20($29) /* rtld_fini */ + sw $29, 24($29) /* stack_end */ + +--- a/fpcsrc/rtl/linux/m68k/cprt0.as ++++ b/fpcsrc/rtl/linux/m68k/cprt0.as +@@ -41,8 +41,10 @@ + + pea (%sp) /* highest available stack address */ + pea (%a1) /* termination function provided by kernel */ +- pea __libc_csu_fini +- pea __libc_csu_init ++ ++ clr.l -(%sp) ++ clr.l -(%sp) ++ + pea (%a0) /* argv */ + move.l %d0,-(%sp) /* argc */ + pea PASCALMAIN diff --git a/patches/honor_SOURCE_DATE_EPOCH_in_date.patch b/patches/honor_SOURCE_DATE_EPOCH_in_date.patch new file mode 100644 index 00000000..ffe63809 --- /dev/null +++ b/patches/honor_SOURCE_DATE_EPOCH_in_date.patch @@ -0,0 +1,55 @@ +Description: Reproducible builds requires that the build time stamp is not + recorded in binaries. In FPC they are fuild in via the $INCLUDE %DATE% + directive which calls getdatestr in globals.pas. To allow reproducible builds + we should honor the SOURCE_DATE_EPOCH environment variable. To not depend on + the dateutil unit, we include the required code from that package here. +Author: Paul Gevers +Author: Abou Al Montacir + +Index: fpc/fpcsrc/compiler/globals.pas +=================================================================== +--- fpc.orig/fpcsrc/compiler/globals.pas ++++ fpc/fpcsrc/compiler/globals.pas +@@ -559,6 +559,7 @@ interface + startsystime : TSystemTime; + + function getdatestr:string; ++ Function UnixToDateTime(const AValue: Int64): TDateTime; + function gettimestr:string; + function filetimestring( t : longint) : string; + function getrealtime(const st: TSystemTime) : real; +@@ -816,12 +817,34 @@ implementation + get the current date in a string YY/MM/DD + } + var ++ Year,Month,Day: Word; + st: TSystemTime; ++ SourceDateEpoch: string; + begin ++ SourceDateEpoch := GetEnvironmentVariable('SOURCE_DATE_EPOCH'); ++ if Length(SourceDateEpoch)>0 then ++ begin ++ DecodeDate(UnixToDateTime(StrToInt64(SourceDateEpoch)),Year,Month,Day); ++ getdatestr:=L0(Year)+'/'+L0(Month)+'/'+L0(Day); ++ end ++ else ++ begin + GetLocalTime(st); + getdatestr:=L0(st.Year)+'/'+L0(st.Month)+'/'+L0(st.Day); ++ end; + end; + ++ Function UnixToDateTime(const AValue: Int64): TDateTime; ++ { Code copied from fpcsrc/packages/rtl-objpas/src/inc/dateutil.inc and ++ fpcsrc/rtl/objpas/sysutils/datih.inc } ++ const ++ TDateTimeEpsilon = 2.2204460493e-16 ; ++ UnixEpoch = TDateTime(-2415018.5) + TDateTime(2440587.5) ; ++ begin ++ Result:=UnixEpoch + AValue/SecsPerDay; ++ if (UnixEpoch>=0) and (Result<-TDateTimeEpsilon) then ++ Result:=int(Result-1.0+TDateTimeEpsilon)-frac(1.0+frac(Result)); ++ end; + + function filetimestring( t : longint) : string; + { diff --git a/patches/m68k-disable-FPU-inlining.patch b/patches/m68k-disable-FPU-inlining.patch new file mode 100644 index 00000000..3f5bd924 --- /dev/null +++ b/patches/m68k-disable-FPU-inlining.patch @@ -0,0 +1,24 @@ +Description: Disable FPU inlining on m68k + There is a bug in the FPU code on m68k which causes the + bootstrap to fail (upstream bug #37250). Until the bug + has been fixed, disable FPU inlining to work around the + issue and fix the bootstrap on m68k. + . +Author: John Paul Adrian Glaubitz +Forwarded: https://bugs.freepascal.org/view.php?id=37250 +Last-Update: 2021-01-22 + +--- fpc-3.2.0+dfsg.orig/fpcsrc/compiler/m68k/n68kadd.pas ++++ fpc-3.2.0+dfsg/fpcsrc/compiler/m68k/n68kadd.pas +@@ -148,10 +148,7 @@ implementation + + function t68kaddnode.inlineable_realconstnode(const n: tnode): boolean; + begin +- result:=(n.nodetype = realconstn) and +- not ((trealconstnode(n).value_real=MathInf.Value) or +- (trealconstnode(n).value_real=MathNegInf.Value) or +- (trealconstnode(n).value_real=MathQNaN.value)); ++ result:=false; + end; + + diff --git a/patches/ncurses6.patch b/patches/ncurses6.patch new file mode 100644 index 00000000..d3bf4796 --- /dev/null +++ b/patches/ncurses6.patch @@ -0,0 +1,26 @@ +Patch to update ncurses.pp for ncurses 6 by Sven Joachim +Taken from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894049#39 +Index: fpc/fpcsrc/packages/ncurses/src/ncurses.pp +=================================================================== +--- fpc.orig/fpcsrc/packages/ncurses/src/ncurses.pp ++++ fpc/fpcsrc/packages/ncurses/src/ncurses.pp +@@ -69,6 +69,7 @@ const + NCURSES_VERSION_MINOR = 6; + NCURSES_VERSION_PATCH = 20061217; + NCURSES_VERSION = '5.6'; ++ NCURSES_MOUSE_VERSION = 2; + + {$MACRO ON} + {$IFNDEF NCURSES_MOUSE_VERSION} +@@ -78,9 +79,9 @@ const + + type + pchtype = ^chtype; +- chtype = culong; ++ chtype = cuint; + pmmask_t = ^mmask_t; +- mmask_t = culong; ++ mmask_t = cuint; + + { colors } + var diff --git a/patches/pas2jni-cthreads.patch b/patches/pas2jni-cthreads.patch new file mode 100644 index 00000000..ba446a31 --- /dev/null +++ b/patches/pas2jni-cthreads.patch @@ -0,0 +1,22 @@ +Description: Make pas2jni use cthreads on Unices + The "pas2jni" util program shipped with FPC uses threads, + but is compiled without thread support and fails to + actually do anything useful when run. +Forwarded: https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/185 +Origin: vendor, https://src.fedoraproject.org/rpms/fpc/c/9c5c41eb5df798f8967c0c384a4c28aa52b250a3 +Author: Artur Frenszek-Iwicki +Last-Update: 2022-03-16 + +--- a/fpcsrc/utils/pas2jni/pas2jni.pas ++++ b/fpcsrc/utils/pas2jni/pas2jni.pas +@@ -22,7 +22,9 @@ + {$mode objfpc}{$H+} + program pas2jni; + +-uses SysUtils, Classes, writer, ppuparser; ++uses ++ {$IFDEF UNIX}cthreads,{$ENDIF} ++ SysUtils, Classes, writer, ppuparser; + + var + w: TWriter; diff --git a/patches/ppc64el-toc-fixes.patch b/patches/ppc64el-toc-fixes.patch new file mode 100644 index 00000000..b59129ef --- /dev/null +++ b/patches/ppc64el-toc-fixes.patch @@ -0,0 +1,262 @@ +Description: Fix missing TOC loads on ppc64el + A backport of upstream commits: + - https://gitlab.com/freepascal.org/fpc/source/-/commit/12f48c230bccd49f368be1e5a2855cb6c3a60c0f + - https://gitlab.com/freepascal.org/fpc/source/-/commit/9314bbbf080418827eef94a8bc392ce0497bf72b + - https://gitlab.com/freepascal.org/fpc/source/-/commit/2de72c854115908271912cd9b260a607c826eadb + - https://gitlab.com/freepascal.org/fpc/source/-/commit/83c18df69a79fe1035a0cf0bc0897c60d1af0293 + - https://gitlab.com/freepascal.org/fpc/source/-/commit/68b5ca633ca71a83c29b78cd3669bf15477cd94f + Some modifications were made to make the changes apply cleanly to v3.2.2. +Bug: https://gitlab.com/freepascal.org/fpc/source/-/issues/39542 +Origin: vendor, https://src.fedoraproject.org/rpms/fpc/c/01634e7f70132cc0bc1cab278edc8449e73ac1f9 +Author: Artur Frenszek-Iwicki +Last-Update: 2022-02-07 + +--- a/fpcsrc/compiler/ncgvmt.pas ++++ b/fpcsrc/compiler/ncgvmt.pas +@@ -1222,14 +1222,25 @@ + tmps : string; + pd : TProcdef; + ImplIntf : TImplementedInterface; +-{$ifdef cpuhighleveltarget} + wrapperpd: tprocdef; + wrapperinfo: pskpara_interface_wrapper; +-{$else} +- tmplist: tasmlist; +- oldfileposinfo: tfileposinfo; +-{$endif cpuhighleveltarget} ++ tmplist: tasmlist; ++ oldfileposinfo: tfileposinfo; ++ usehighlevelwrapper: Boolean; + begin ++{$if defined(cpuhighleveltarget)} ++ usehighlevelwrapper:=true; ++{$else defined(cpuhighleveltarget)} ++ { on PPC systems that use a TOC the linker needs to be able to insert ++ an instruction to restore the TOC register after every branch ++ between code fragments that use a different TOC (which has to be ++ executed when that "branch" returns). So we can't use tail call ++ branches to routines potentially using a different TOC there } ++ if target_info.system in systems_ppc_toc then ++ usehighlevelwrapper:=true ++ else ++ usehighlevelwrapper:=false; ++{$endif defined(cpuhighleveltarget)} + for i:=0 to _class.ImplementedInterfaces.count-1 do + begin + ImplIntf:=TImplementedInterface(_class.ImplementedInterfaces[i]); +@@ -1246,43 +1257,47 @@ + not is_objectpascal_helper(tprocdef(pd).struct) then + tobjectdef(tprocdef(pd).struct).register_vmt_call(tprocdef(pd).extnumber); + tmps:=CreateWrapperName(_Class,ImplIntf,j,pd); +-{$ifdef cpuhighleveltarget} +- new(wrapperinfo); +- wrapperinfo^.pd:=pd; +- wrapperinfo^.offset:=ImplIntf.ioffset; +- { insert the wrapper procdef in the current unit's local +- symbol table, but set the owning "struct" to the current +- class (so self will have the correct type) } +- wrapperpd:=create_procdef_alias(pd,tmps,tmps, +- current_module.localsymtable,_class, +- tsk_interface_wrapper,wrapperinfo); +- include(wrapperpd.procoptions,po_noreturn); +-{$else cpuhighleveltarget} +- oldfileposinfo:=current_filepos; +- if pd.owner.iscurrentunit then +- current_filepos:=pd.fileinfo +- else +- begin +- current_filepos.moduleindex:=current_module.unit_index; +- current_filepos.fileindex:=1; +- current_filepos.line:=1; +- current_filepos.column:=1; +- end; +- { create wrapper code } +- tmplist:=tasmlist.create; +- new_section(tmplist,sec_code,tmps,target_info.alignment.procalign); +- tmplist.Concat(tai_function_name.create(tmps)); +- hlcg.init_register_allocators; +- hlcg.g_intf_wrapper(tmplist,pd,tmps,ImplIntf.ioffset); +- hlcg.done_register_allocators; +- if ((cs_debuginfo in current_settings.moduleswitches) or +- (cs_use_lineinfo in current_settings.globalswitches)) and +- (target_dbg.id<>dbg_stabx) then +- current_debuginfo.insertlineinfo(tmplist); +- list.concatlist(tmplist); +- tmplist.Free; +- current_filepos:=oldfileposinfo; +-{$endif cpuhighleveltarget} ++ ++ if usehighlevelwrapper then ++ begin ++ new(wrapperinfo); ++ wrapperinfo^.pd:=pd; ++ wrapperinfo^.offset:=ImplIntf.ioffset; ++ { insert the wrapper procdef in the current unit's local ++ symbol table, but set the owning "struct" to the current ++ class (so self will have the correct type) } ++ wrapperpd:=create_procdef_alias(pd,tmps,tmps, ++ current_module.localsymtable,_class, ++ tsk_interface_wrapper,wrapperinfo); ++ include(wrapperpd.implprocoptions,pio_thunk); ++ end ++ else ++ begin ++ oldfileposinfo:=current_filepos; ++ if pd.owner.iscurrentunit then ++ current_filepos:=pd.fileinfo ++ else ++ begin ++ current_filepos.moduleindex:=current_module.unit_index; ++ current_filepos.fileindex:=1; ++ current_filepos.line:=1; ++ current_filepos.column:=1; ++ end; ++ { create wrapper code } ++ tmplist:=tasmlist.create; ++ new_section(tmplist,sec_code,tmps,target_info.alignment.procalign); ++ tmplist.Concat(tai_function_name.create(tmps)); ++ hlcg.init_register_allocators; ++ hlcg.g_intf_wrapper(tmplist,pd,tmps,ImplIntf.ioffset); ++ hlcg.done_register_allocators; ++ if ((cs_debuginfo in current_settings.moduleswitches) or ++ (cs_use_lineinfo in current_settings.globalswitches)) and ++ (target_dbg.id<>dbg_stabx) then ++ current_debuginfo.insertlineinfo(tmplist); ++ list.concatlist(tmplist); ++ tmplist.Free; ++ current_filepos:=oldfileposinfo; ++ end; + end; + end; + end; +--- a/fpcsrc/compiler/powerpc64/cgcpu.pas ++++ b/fpcsrc/compiler/powerpc64/cgcpu.pas +@@ -337,10 +337,6 @@ + reference_reset_base(tmpref, reg, 0, ctempposinvalid, sizeof(pint), []); + a_load_ref_reg(list, OS_ADDR, OS_ADDR, tmpref, tempreg); + +- { save TOC pointer in stackframe } +- reference_reset_base(tmpref, NR_STACK_POINTER_REG, get_rtoc_offset, ctempposinvalid, 8, []); +- a_load_reg_ref(list, OS_ADDR, OS_ADDR, NR_RTOC, tmpref); +- + { move actual function pointer to CTR register } + list.concat(taicpu.op_reg(A_MTCTR, tempreg)); + +@@ -1269,6 +1265,13 @@ + end; + end; + ++ { save current RTOC for restoration after calls if necessary } ++ if pi_do_call in current_procinfo.flags then ++ begin ++ reference_reset_base(href,NR_STACK_POINTER_REG,get_rtoc_offset,ctempposinvalid,target_info.stackalign,[]); ++ a_load_reg_ref(list,OS_ADDR,OS_ADDR,NR_RTOC,href); ++ end; ++ + { CR register not used by FPC atm } + + { keep R1 allocated??? } +--- a/fpcsrc/compiler/ppcgen/cgppc.pas ++++ b/fpcsrc/compiler/ppcgen/cgppc.pas +@@ -1055,6 +1055,7 @@ + (assigned(ref.symbol) and + not assigned(ref.relsymbol)) then + begin ++ include(current_procinfo.flags,pi_needs_got); + tmpreg := load_got_symbol(list, ref.symbol.name, asmsym2indsymflags(ref.symbol)); + if (ref.base = NR_NO) then + ref.base := tmpreg +--- a/fpcsrc/compiler/ppcgen/hlcgppc.pas ++++ b/fpcsrc/compiler/ppcgen/hlcgppc.pas +@@ -183,11 +183,16 @@ + system_powerpc_darwin, + system_powerpc64_darwin: + list.concat(taicpu.op_sym(A_B,tcgppcgen(cg).get_darwin_call_stub(procdef.mangledname,false))); +- else if use_dotted_functions then +- {$note ts:todo add GOT change?? - think not needed :) } +- list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol('.' + procdef.mangledname,AT_FUNCTION))) + else +- list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(procdef.mangledname,AT_FUNCTION))) ++ begin ++ if use_dotted_functions then ++ {$note ts:todo add GOT change?? - think not needed :) } ++ list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol('.' + procdef.mangledname,AT_FUNCTION))) ++ else ++ list.concat(taicpu.op_sym(A_B,current_asmdata.RefAsmSymbol(procdef.mangledname,AT_FUNCTION))); ++ if (target_info.system in ([system_powerpc64_linux]+systems_aix)) then ++ list.concat(taicpu.op_none(A_NOP)); ++ end; + end; + List.concat(Tai_symbol_end.Createname(labelname)); + end; +--- a/fpcsrc/compiler/psub.pas ++++ b/fpcsrc/compiler/psub.pas +@@ -2306,8 +2306,10 @@ + } + if (not pd.forwarddef) and + (pd.hasforward) and +- (proc_get_importname(pd)<>'') then +- call_through_new_name(pd,proc_get_importname(pd)) ++ (proc_get_importname(pd)<>'') then begin ++ call_through_new_name(pd,proc_get_importname(pd)) ++ include(pd.implprocoptions,pio_thunk); ++ end + else + {$endif cpuhighleveltarget} + begin +--- a/fpcsrc/compiler/symconst.pas ++++ b/fpcsrc/compiler/symconst.pas +@@ -425,7 +425,17 @@ + { the routine contains no code } + pio_empty, + { the inline body of this routine is available } +- pio_has_inlininginfo ++ pio_has_inlininginfo, ++ { inline is not possible (has assembler block, etc) } ++ pio_inline_not_possible, ++ { a nested routine accesses a local variable from this routine } ++ pio_nested_access, ++ { a stub/thunk } ++ pio_thunk, ++ { compiled with fastmath enabled } ++ pio_fastmath, ++ { inline is forbidden (calls get_frame) } ++ pio_inline_forbidden + ); + timplprocoptions = set of timplprocoption; + +--- a/fpcsrc/compiler/systems.pas ++++ b/fpcsrc/compiler/systems.pas +@@ -393,6 +393,16 @@ + on the caller side rather than on the callee side } + systems_caller_copy_addr_value_para = [system_aarch64_ios,system_aarch64_darwin,system_aarch64_linux]; + ++ { all PPC systems that use a TOC register to address globals } ++ { TODO: not used by Darwin, but don't know about others (JM) } ++ systems_ppc_toc = [ ++ system_powerpc_linux, ++ system_powerpc64_linux, ++ system_powerpc_aix, ++ system_powerpc64_aix, ++ system_powerpc_macosclassic ++ ]; ++ + { pointer checking (requires special code in FPC_CHECKPOINTER, + and can never work for libc-based targets or any other program + linking to an external library) +--- a/fpcsrc/compiler/utils/ppuutils/ppudump.pp ++++ b/fpcsrc/compiler/utils/ppuutils/ppudump.pp +@@ -3087,7 +3087,12 @@ + const + piopt : array[low(timplprocoption)..high(timplprocoption)] of tpiopt=( + (mask:pio_empty; str:'IsEmpty'), +- (mask:pio_has_inlininginfo; str:'HasInliningInfo') ++ (mask:pio_has_inlininginfo; str:'HasInliningInfo'), ++ (mask:pio_inline_not_possible; str:'InlineNotPossible'), ++ (mask:pio_nested_access; str:'NestedAccess'), ++ (mask:pio_thunk; str:'Thunk'), ++ (mask:pio_fastmath; str:'FastMath'), ++ (mask:pio_inline_forbidden; str:'InlineForbidden') + ); + var + i: timplprocoption; diff --git a/patches/prevent_date_in_fpcdocs.patch b/patches/prevent_date_in_fpcdocs.patch new file mode 100644 index 00000000..deba8017 --- /dev/null +++ b/patches/prevent_date_in_fpcdocs.patch @@ -0,0 +1,17 @@ +Description: Timestamps in fpc documentation are hindering reproducible builds + Don't add the date to the footer of docs generated by fpdoc +Author: Paul Gevers +Forwarded: no +Index: fpc/fpcdocs/Makefile.fpc +=================================================================== +--- fpc.orig/fpcdocs/Makefile.fpc ++++ fpc/fpcdocs/Makefile.fpc +@@ -115,7 +115,7 @@ ifeq ($(HIDEPROTECTED),YES) + FCLOPTS+= --hide-protected + endif + +-FPDOCHTMLOPTS=--footer-date="mmm dd yyyy" ++FPDOCHTMLOPTS= + + ifeq (chm,$(HTMLFMT)) + HTMLSUFFIX:=.chm diff --git a/patches/relpath.patch b/patches/relpath.patch new file mode 100644 index 00000000..da168258 --- /dev/null +++ b/patches/relpath.patch @@ -0,0 +1,76 @@ +This patch adds an utility for computing relative path according to a given +base directory. This is useful for libraries that are to install .lpk in +order to be used with lazarus. As these libraries may be compiled without +need to build depend on Lazarus, we add it in fp-utils package which is likely +to be used by any big project which build depends on fp-compiler. + +Index: fpc/fpcsrc/utils/relpath.pas +=================================================================== +--- /dev/null ++++ fpc/fpcsrc/utils/relpath.pas +@@ -0,0 +1,16 @@ ++program relpath; ++uses ++ SysUtils; ++ ++var ++ BaseDir: string; ++ TargetDir: string; ++begin ++ TargetDir := ParamStr(1); ++ BaseDir := ParamStr(2); ++ if BaseDir = '' ++ then begin ++ BaseDir := GetCurrentDir; ++ end; ++ WriteLn(ExtractRelativePath(IncludeTrailingPathDelimiter(BaseDir), TargetDir)); ++end. +Index: fpc/install/man/man1/relpath.1 +=================================================================== +--- /dev/null ++++ fpc/install/man/man1/relpath.1 +@@ -0,0 +1,32 @@ ++.TH relpath 1 "7 May 2013" "Free Pascal" "Relative path computing tool" ++.SH NAME ++relpath \- The Free Pascal file deletion tool. ++ ++.SH SYNOPSIS ++ ++.B relpath ++[\fIfile or directory\fR] [\fIbase directory\fR] ++ ++.SH DESCRIPTION ++ ++.B relpath ++This is an utility for computing relative path according to a given base ++directory. This is useful for libraries that are to install .lpk in order to be ++used with lazarus. As these libraries may be compiled without need to build ++depend on Lazarus, we add it in fp-utils package which is likely to be used by ++any big project which build depends on fp-compiler. ++ ++.SH USAGE ++ ++.B relpath ++takes the following arguments: ++.TP ++.B file or directory ++The target file or directory for which relative path should be computed. ++.TP ++.B base directory ++The base directory according to which the relative patch should be computed. ++ ++.SH SEE ALSO ++.IP ++.BR readlink (1) +Index: fpc/fpcsrc/utils/fpmake.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/fpmake.pp ++++ fpc/fpcsrc/utils/fpmake.pp +@@ -89,6 +89,7 @@ begin + P.Targets.AddProgram('mkinsadd.pp'); + P.Targets.AddProgram('postw32.pp'); + P.Targets.AddProgram('rmcvsdir.pp'); ++ P.Targets.AddProgram('relpath.pas'); + P.Targets.AddProgram('grab_vcsa.pp',[linux]); + T:=P.Targets.AddProgram('fpcsubst.pp'); + T.Dependencies.AddUnit('usubst'); diff --git a/patches/remove-depreciated-ncursus-variables-declaration.patch b/patches/remove-depreciated-ncursus-variables-declaration.patch new file mode 100644 index 00000000..5178fea6 --- /dev/null +++ b/patches/remove-depreciated-ncursus-variables-declaration.patch @@ -0,0 +1,25 @@ +Description: Removed declaration of legacy ncursus variables. + These variables are now internal and no more exported by new ncursus libraries. +Author: Abou Al Montacir +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789091 + +diff --git a/fpcsrc/packages/ncurses/src/form.pp b/fpcsrc/packages/ncurses/src/form.pp +index a930b75a..136a8d2f 100644 +--- a/fpcsrc/packages/ncurses/src/form.pp ++++ b/fpcsrc/packages/ncurses/src/form.pp +@@ -232,15 +232,6 @@ var + TYPE_IPV4 : PFIELDTYPE external libform name 'TYPE_IPV4'; + {$endif darwin} + +-(* Default objects *) +-{$ifndef darwin} +- _nc_Default_Form : PFORM;cvar;external; +- _nc_Default_Field : PFIELD;cvar;external; +-{$else darwin} +- _nc_Default_Form : PFORM external libform name '_nc_Default_Form'; +- _nc_Default_Field : PFIELD external libform name '_nc_Default_Field'; +-{$endif darwin} +- + (* FIELDTYPE routines *) + function new_fieldtype(field_check: TFieldCheck; char_check:TCharCheck):PFIELDTYPE; cdecl;external libform; + diff --git a/patches/rename-instantfpc-to-ifpc.patch b/patches/rename-instantfpc-to-ifpc.patch new file mode 100644 index 00000000..bfa6ca9e --- /dev/null +++ b/patches/rename-instantfpc-to-ifpc.patch @@ -0,0 +1,165 @@ +This patch renames instantfpc to ifpc (Instant Free Pascal Compiler) and adds +man files for it. + +Index: fpc/install/man/man1/ifpc.1 +=================================================================== +--- /dev/null ++++ fpc/install/man/man1/ifpc.1 +@@ -0,0 +1,54 @@ ++.TH ifpc 1 "18 May 2013" "Free Pascal" "Instant pascal code interpreter" ++.SH NAME ++ifpc \- The Free Pascal Interpreter. ++ ++.SH SYNOPSIS ++ ++.B ifpc ++[\fI\-h\fR] [\fI\-v\fR] [\fIcompiler options\fR] <\fIsource file\fR> ++[\fIprogram parameters\fR] ++ ++.SH DESCRIPTION ++ ++.B ifpc ++This is a pascal code interpreter program. It compiles source and runs the ++ generated program. ++ ++Source is compared with the cache. If cache is not valid then then source is ++copied to cache with the shebang line commented and cached source is compiled. ++If compilation fails the fpc output is written to stdout and and exit code 1 ++is returned ++If compilation was successful the program is executed. ++If the compiler options contains \-B the program is always recompiled. ++If the environment option INSTANTFPCOPTIONS is set it is passed to compiler as ++the first parameters. ++ ++.SH USAGE ++ ++.B ifpc ++takes the following arguments: ++.TP ++.B \-h ++Prints this help message and exit. ++.TP ++.B \-v ++Prints version and exit. ++.TP ++.B \-\-get\-cache ++Prints current cache directory and exit. ++.TP ++.B \-\-set\-cache= ++Set the cache to be used. Otherwise using environment variable INSTANTFPCCACHE. ++.TP ++.B \-\-compiler= ++Normally fpc is searched in PATH and used as compiler. ++.TP ++.B \-\-skip\-run ++Do not execute the program. Useful to test if script compiles ++.TP ++.B \-B ++Always recompile. ++ ++.SH SEE ALSO ++.IP ++.BR fpc (1) +Index: fpc/fpcsrc/utils/instantfpc/instantfpc.pas +=================================================================== +--- fpc.orig/fpcsrc/utils/instantfpc/instantfpc.pas ++++ fpc/fpcsrc/utils/instantfpc/instantfpc.pas +@@ -28,39 +28,40 @@ const + Version = '1.3'; + // 1.3 compile in a separate directory, so that parallel invocations do not overwrite link.res files + ++var ++ BinPath, BinName: string; + + Procedure Usage(Err : string); +- + begin + if (Err<>'') then + Writeln('Error : ',Err); +- writeln('instantfpc '+Version); ++ writeln(BinName, ' ', Version); + writeln; + writeln('Run pascal source files as scripts.'); + writeln('Normal usage is to add to a program source file a first line'); +- writeln('("shebang") "#!/usr/bin/instantfpc".'); ++ writeln('("shebang") "#!', BinPath, BinName, '".'); + writeln('Then you can execute the source directly in the terminal/console.'); + writeln; +- writeln('instantfpc -h'); ++ writeln(BinName, ' -h'); + writeln(' Print this help message and exit.'); + writeln; +- writeln('instantfpc -v'); ++ writeln(BinName, ' -v'); + writeln(' Print version and exit.'); + writeln; +- writeln('instantfpc [compiler options] [program parameters]'); ++ writeln(BinName, ' [compiler options] [program parameters]'); + writeln(' Compiles source and runs program.'); + writeln(' Source is compared with the cache. If cache is not valid then'); + writeln(' source is copied to cache with the shebang line commented and'); + writeln(' cached source is compiled.'); + writeln(' If compilation fails the fpc output is written to stdout and'); +- writeln(' instantfpc exits with error code 1.'); ++ writeln(' ', BinName, ' exits with error code 1.'); + writeln(' If compilation was successful the program is executed.'); + writeln(' If the compiler options contains -B the program is always'); + writeln(' compiled.'); + writeln(' If the environment option INSTANTFPCOPTIONS is set it is'); + writeln(' passed to the compiler as first parameters.'); + writeln; +- writeln('instantfpc --get-cache'); ++ writeln(BinName, ' --get-cache'); + writeln(' Prints current cache directory and exit.'); + writeln; + writeln('Options:'); +@@ -109,7 +110,7 @@ begin + if (P='') then exit; + if p='-v' then + begin +- writeln('instantfpc '+Version); ++ writeln(BinName, ' ', Version); + Halt(1); + end + else if p='-h' then +@@ -147,6 +148,8 @@ begin + { For example: + /usr/bin/instantfpc -MObjFpc -Sh ./envvars.pas param1 + } ++ BinPath := ExtractFilePath(ParamStr(0)); ++ BinName := 'ifpc'; + for i:=1 to Paramcount do + begin + p:=ParamStr(i); +Index: fpc/fpcsrc/utils/instantfpc/Makefile.fpc +=================================================================== +--- fpc.orig/fpcsrc/utils/instantfpc/Makefile.fpc ++++ fpc/fpcsrc/utils/instantfpc/Makefile.fpc +@@ -3,7 +3,7 @@ + # + + [package] +-name=instantfpc ++name=ifpc + version=3.2.2 + + [require] +Index: fpc/fpcsrc/utils/instantfpc/ifpc.pas +=================================================================== +--- /dev/null ++++ fpc/fpcsrc/utils/instantfpc/ifpc.pas +@@ -0,0 +1 @@ ++{$INCLUDE instantfpc.pas} +Index: fpc/fpcsrc/utils/instantfpc/fpmake.pp +=================================================================== +--- fpc.orig/fpcsrc/utils/instantfpc/fpmake.pp ++++ fpc/fpcsrc/utils/instantfpc/fpmake.pp +@@ -35,7 +35,7 @@ begin + + P.OSes := [win32,win64,wince,haiku,linux,freebsd,openbsd,netbsd,darwin,iphonesim,ios,solaris,aix]; + +- T:=P.Targets.AddProgram('instantfpc.pas'); ++ T:=P.Targets.AddProgram('ifpc.pas'); + T.Dependencies.AddUnit('instantfptools'); + + P.Targets.AddUnit('instantfptools.pas').Install:=False; diff --git a/patches/series b/patches/series new file mode 100644 index 00000000..5b9ded59 --- /dev/null +++ b/patches/series @@ -0,0 +1,37 @@ +version.diff +fix-FPCDIR-in-fpcmake.diff +relpath.patch +rename-instantfpc-to-ifpc.patch +use-bfd-explicitly.diff +change-path-of-localization-files-to-fit-Debian-standar.patch +fix-encoding-of-localization-files-to-be-utf8.patch +prevent_date_in_fpcdocs.patch +disable_building_gnome1_and_gtk1.patch +fix-IDE-data-file-location.patch +honor_SOURCE_DATE_EPOCH_in_date.patch +armhf-tags.patch +fix_source_location_for_documentation.patch +fix-spelling-errors-3.patch +remove-depreciated-ncursus-variables-declaration.patch +drop-jsminifier-from-build-as-we-strip-it.patch +create-directory-before-copy-in-Makefile.fpc.patch +fix-units-path-to-be-multi-arch-safe.patch +fix_make_files_generation.patch +#fix-IDE-GDB-support.patch +clean_man_pages.patch +ncurses6.patch +m68k-disable-FPU-inlining.patch +Fix-liking-with-libc-when-PIC-is-enabled.patch +fix-utest-version-lists.patch +fix-samplecfg-tool.patch +0-dba65567f1b2fb3fd283886b262dc72875a6360b.patch +1-3ef2ab1019a395a9392578b653958c14e19f81e0.patch +2-28b2b299da00443c49e92d7f5fe4d4a2d0c1a557.patch +3-8a31764a7b14c47cbd51abd25672d43aaba8b6b9.patch +4-1c3fc6e2dfa10f7a2221b97fa0da55a7406a0f07.patch +glibc2.34.patch +ppc64el-toc-fixes.patch +pas2jni-cthreads.patch +change_fpmake_to_install_missing_package_examples.patch +Fix-missing-crtbeginS.o-on-mipsel.patch +5-85c7368759f5fb53aa23e03c8cc27c2deb424b62.patch diff --git a/patches/use-bfd-explicitly.diff b/patches/use-bfd-explicitly.diff new file mode 100644 index 00000000..10f619cf --- /dev/null +++ b/patches/use-bfd-explicitly.diff @@ -0,0 +1,32 @@ +Description: Use ld.bfd explicitly + Freepascal is broken with ld.gold, previously we conflicted with binutils-gold + but that makes us uninstallable with the new binutils. + + So instead we take the approach of patching fpc to use ld.bfd directly +Author: Peter Michael Green +Bug-Debian: http://bugs.debian.org/620815 +Bug-Debian: http://bugs.debian.org/624525 +Bug-Debian: http://bugs.debian.org/717651 + +Index: fpc/fpcsrc/compiler/systems/t_linux.pas +=================================================================== +--- fpc.orig/fpcsrc/compiler/systems/t_linux.pas ++++ fpc/fpcsrc/compiler/systems/t_linux.pas +@@ -1408,7 +1408,7 @@ begin + if HasExports then + cmdstr:=cmdstr+' -E'; + +- success:=DoExec(FindUtil(utilsprefix+BinStr),CmdStr,true,false); ++ success:=DoExec(FindUtil(utilsprefix+BinStr)+'.bfd',CmdStr,true,false); + + { Create external .dbg file with debuginfo } + if success and (cs_link_separate_dbg_file in current_settings.globalswitches) then +@@ -1476,7 +1476,7 @@ begin + Replace(cmdstr,'$SONAME',SoNameStr); + Replace(cmdstr,'$MAP',mapstr); + Replace(cmdstr,'$GCSECTIONS',GCSectionsStr); +- success:=DoExec(FindUtil(utilsprefix+binstr),cmdstr,true,false); ++ success:=DoExec(FindUtil(utilsprefix+binstr)+'.bfd',cmdstr,true,false); + + { Strip the library ? } + if success and (cs_link_strip in current_settings.globalswitches) then diff --git a/patches/version.diff b/patches/version.diff new file mode 100644 index 00000000..e6c60ba4 --- /dev/null +++ b/patches/version.diff @@ -0,0 +1,29 @@ +This patch adds Debian build version to compiler full version. + +Index: fpc/fpcsrc/compiler/version.pas +=================================================================== +--- fpc.orig/fpcsrc/compiler/version.pas ++++ fpc/fpcsrc/compiler/version.pas +@@ -81,6 +81,9 @@ function full_version_string:string; + + implementation + ++const ++ FullVersionString={$INCLUDE version.inc}; ++ + function version_string:string; + begin + version_string := version_nr+'.'+release_nr+'.'+patch_nr; +@@ -89,11 +92,7 @@ end; + + function full_version_string:string; + begin +- full_version_string := version_nr+'.'+release_nr+'.'+patch_nr+minorpatch +-{$ifdef REVINC} +- +'-r'+{$i revision.inc} +-{$endif REVINC} +- ; ++ full_version_string := FullVersionString; + end; + + end. diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..c0b46843 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] fp-compiler.templates.in diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..20053a96 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,127 @@ +# Czech PO debconf template translation of fpc. +# Copyright (C) 2012 Michal Simunek +# This file is distributed under the same license as the fpc package. +# Michal Simunek , 2012 - 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc 2.6.2-6\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-06-12 10:02+0200\n" +"Last-Translator: Michal Simunek \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Přejmenovat \"/etc/fpc.cfg\" na \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC nyní podporuje možnost mít na stejném systému nainstalováno vícero " +"verzí. Příkazem update-alternatives lze nastavit výchozí verze pro\n" +" * fpc (kompilátor);\n" +" * fpc.cfg (konfigurační soubor);\n" +" * fp-utils (pomocné nástroje)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Bez ohledu na to, že si můžete vybrat výchozí verzi, jsou konfigurační " +"soubory vždy zpětně kompatibilní, takže by mělo být vždy bezpečné použít " +"nejnovější verzi." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Pokud chcete, aby se v systému pro konfigurační soubor FPC používal systém " +"alternativ, musíte přijmout přejmenování souboru \"/etc/fpc.cfg\"; jinak " +"bude nutné, aby jste si jej spravovali sami." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Výchozí kompilátor zdrojových souborů .rc pro MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC podporuje kompilování programů založených na zdrojových souborech MS " +"Windows ve formátu .rc." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"V případě, že chcete mít možnost kompilovat projekty používající soubory ." +"rc, budete v první řadě muset ručně nainstalovat balíček mingw32-binutils. " +"mingw32-binutils je navrhován kompilátorem fp-compiler, ale automaticky jej " +"neinstaluje." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Pokud chcete vložit vlastní kompilátor souborů .rc, který se na tomto " +"seznamu nenachází, nebo pokud tuto funkci chcete prostě zakázat, zvolte " +"prosím \"Select manually\"." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Pokud výchozí kompilátor souborů .rc nechcete používat, ponechte políčko " +"prázdné." diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..8dd4af06 --- /dev/null +++ b/po/da.po @@ -0,0 +1,126 @@ +# Danish translation fpc. +# Copyright (c) 2014 fpc & nedenstÃ¥ende oversættere. +# This file is distributed under the same license as the fpc package. +# Joe Hansen , 2012, 2013, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-10-04 17:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Omdøb »/etc/fpc.cfg« til »/etc/fpc.cfg.bak«?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC understøtter nu at der er installeret flere versioner pÃ¥ det samme " +"system. Kommandoen update-alternatives kan bruges til at angive en " +"standardversion for\n" +" * fpc (kompileren);\n" +" * fpc.cfg (konfigurationsfilen);\n" +" * fp-utils (hjælpeværktøjerne)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Uanset versionen du vælger som standard, sÃ¥ er konfigurationsfilerne altid " +"bagud kompatible, sÃ¥ det bør være sikkert at bruge den seneste version." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"For at bruge systemet for alternativerne pÃ¥ den for hele systemet brugte FPC-" +"konfigurationsfil, sÃ¥ skal du acceptere omdøbelse af »/etc/fpc.cfg«; ellers " +"skal du selv hÃ¥ndtere dette manuelt." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Vælg manuelt" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Standard for MS Windows .rc-ressourcekompiler:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC understøtter kompilering af programmer, som indlejrer ressourcer som MS " +"Windows .rc-format-filer pÃ¥ alle platforme hvor MinGW windres-værktøjet er " +"tilgængeligt." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"For at kunne kompilere projekter med brug af .rc-filer, sÃ¥ skal du først " +"manuelt installere pakken mingw32-binutils. Mingw32-binutils foreslÃ¥s af fp-" +"compiler men installeres ikke automatisk." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Hvis du ønsker at indtaste en tilpasset .rc-fil-kompiler, som ikke fremgÃ¥r " +"af denne liste eller hvis du simpelthen ønsker at deaktivere denne funktion, " +"sÃ¥ vælg »Vælg manuelt«." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Hvis du ikke ønsker at bruge en standard .rc-fil-kompiler, sÃ¥ efterland tom." diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..954a8604 --- /dev/null +++ b/po/de.po @@ -0,0 +1,128 @@ +# Translation of the fpc debconf template to German. +# Copyright (C) 1999 Peter Vreman. +# This file is distributed under the same license as the fpc package. +# Copyright of this file Chris Leick 2012-2014. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc 2.6.4+dfsg-4\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-10-02 18:05+0100\n" +"Last-Translator: Chris Leick \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "»/etc/fpc.cfg« in »/etc/fpc.cfg.bak« umbenennen?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC unterstützt nun mehrere auf demselben System installierte Versionen. Der " +"Befehl »update-alternatives« kann zum Setzen einer Standardversion für\n" +" * fpc (den Compiler),\n" +" * fpc.cfg (die Konfigurationsdatei) und\n" +" * fp-utils (die Hilfswerkzeuge)\n" +"benutzt werden." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Egal welche Version als Vorgabe gewählt wird, die Konfigurationsdateien sind " +"immer abwärtskompatibel, so dass die Verwendung der neuesten Version stets " +"sicher möglich sein sollte." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Um das Alternatives-System auf die systemweite Konfigurationsdatei " +"anzuwenden, müssen Sie dem Umbenennen von »/etc/fpc.cfg« zustimmen, " +"andernfalls müssen Sie dies selbst verwalten." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Manuelle Auswahl" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Standard-Compiler für .rc-Ressourcen unter MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC unterstützt Kompilierprogramme, die Ressourcen als Dateien im .rc-Format " +"von MS Windows auf allen Plattformen einbetten, auf denen das MinGW-Windres-" +"Werkzeug verfügbar ist." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Um Projekte mittels .rc-Dateien kompilieren zu können, müssen Sie zuerst das " +"Paket »mingw32-binutils« manuell installieren. »mingw32-binutils« wird durch " +"»fp-compiler« vorgeschlagen, aber nicht automatisch bezogen." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Falls Sie einen benutzerdefinierten Compiler für .rc-Dateien eingeben " +"möchten, der nicht in dieser Liste erscheint oder falls Sie diese " +"Funktionalität deaktivieren wollen, wählen Sie bitte »Manuelle Auswahl«." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Falls Sie keinen Standard-Compiler für .rc-Dateien verwenden möchten, lassen " +"Sie dies leer." diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..d0e6aca3 --- /dev/null +++ b/po/es.po @@ -0,0 +1,155 @@ +# fpc translation to Spanish +# Copyright (C) 2012 Software in the Public Interest, SPI Inc. +# This file is distributed under the same license as the fpc package. +# +# Changes: +# - Initial translation +# Matías Bellone , 2012 +# +# - Updates +# Matías Bellone , 2013 +# +# Traductores, si no conoce el formato PO, merece la pena leer la +# documentación de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Equipo de traducción al español, por favor lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducción de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas y normas de traducción en +# http://www.debian.org/intl/spanish/notas +# +# - La guía de traducción de po's de debconf: +# /usr/share/doc/po-debconf/README-trans +# o http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Si tiene dudas o consultas sobre esta traducción consulte con el último +# traductor (campo Last-Translator) y ponga en copia a la lista de +# traducción de Debian al español () +# +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-12-03 19:06-0300\n" +"Last-Translator: Matías Bellone \n" +"Language-Team: Debian L10N Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "¿Desea renombrar «/etc/fpc.cfg» a «/etc/fpc.cfg.bak»?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC ahora puede tener múltiples versiones instaladas en el mismo sistema. " +"Puede utilizar la orden «update-alternatives» para definir la versión " +"predeterminada de: * fpc (el compilador);\n" +" * fpc.cfg (el archivo de configuración);\n" +" * fp-utils (las heramientas de ayuda)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Los archivos de configuración siempre son compatibles con versiones " +"anteriores sin importar la versión que elija como predeterminada, por lo que " +"siempre debería ser seguro utilizar la última versión." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Debe aceptar cambiar el nombre de «/etc/fpc.cfg» para utilizar el sistema de " +"alternativas en la configuración de FPC para todo el equipo, de lo contrario " +"deberá administrarlo a mano por su cuenta." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Seleccionar manualmente" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Compilador predeterminado de recursos .rc de MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC puede compilar programas que incluyen recursos en archivos con formato ." +"rc de MS Windows en todas las plataformas en las que esté disponible la " +"herramienta «windres» de MinGW." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Para poder compilar proyectos que utilizan archivos .rc, primero debe " +"instalar el paquete mingw32-binutils. El paquete fp-compiler sugiere el " +"paquete mingw32-binutils, pero no se lo instalará automáticamente." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Si desea utilizar un compilador de archivos .rc personalizado que no se " +"encuentra en esta lista o si desea desactivar esta funcionalidad, seleccione " +"«Seleccionar manualmente»." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Si no desea utilizar un compilador de archivos .rc predeterminado, deje este " +"valor vacío." diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..c7f47fae --- /dev/null +++ b/po/fr.po @@ -0,0 +1,131 @@ +# Translation of fpc debconf templates to French +# Copyright (C) 2012, 2013 Debian French l10n team +# This file is distributed under the same license as the fpc package. +# +# David Prévot , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-11-14 17:34-0400\n" +"Last-Translator: David Prévot \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Faut-il renommer « /etc/fpc.cfg » en « /etc/fpc.cfg.bak » ?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"Plusieurs versions de FPC peuvent maintenant être installées sur le même " +"système. La commande update-alternatives permet de définir une version par " +"défaut pour :\n" +" - fpc (le compilateur) ;\n" +" - fpc.cfg (le fichier de configuration) ;\n" +" - fp-utils (les outils d'assistance)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Quelle que soit la version choisie par défaut, les fichiers de configuration " +"sont toujours rétrocompatibles, il devrait donc être toujours possible " +"d'utiliser la dernière version." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Afin d’utiliser le système d’alternatives pour le fichier de configuration " +"global de FPC, vous devez accepter de renommer « /etc/fpc.cfg », sinon vous " +"devrez gérer cela vous-même." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Sélectionnez vous-même" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Compilateur de ressources .rc MS Windows par défaut :" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC permet de compiler des programmes contenant des ressources au format .rc " +"de MS Windows sur toutes les plateformes où l’outil MinGW windres est " +"disponible." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Pour pouvoir compiler des projets utilisant des fichiers .rc, vous devez " +"d’abord installer vous-même le paquet mingw32-binutils. Ce paquet est en " +"effet seulement suggéré par fp-compiler et n’est donc pas installé par " +"défaut." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Pour sélectionner un compilateur de fichiers .rc personnalisé qui n’est pas " +"présent dans cette liste, ou simplement pour désactiver cette " +"fonctionnalité, veuillez choisir « Sélectionnez vous-même »." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Si vous ne voulez pas utiliser de compilateur de fichiers .rc par défaut, " +"laissez ce champ vide." diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..7b13b22c --- /dev/null +++ b/po/hu.po @@ -0,0 +1,125 @@ +# Italian translation of fpc debconf messages. +# Copyright (C) 2012, Beatrice Torracca +# This file is distributed under the same license as the fpc package. +# Beatrice Torracca , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor \n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "\"/etc/fpc.cfg\" átnevezése erre: \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"Az FPC támogatja több változat egyidejű telepítését ugyanarra a gépre. Az " +"update-alternatives parancs használható az alapértelmezett változat " +"kiválasztására a következőkhöz:\n" +" * fpc (a fordító);\n" +" * fpc.cfg (a beállítások fájlja);\n" +" * fp-utils (a segédeszközök)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Bármely változatot szeretné alapértelmezetté tenni, a beállítási fájlok " +"mindig visszafelé kompatibilisek, így nyugodtan használhatja a legutóbbit." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Az alternatív FPC beállítások rendszerének egész rendszerre kiterjedő " +"használatához el kell fogadnia a(z) \"/etc/fpc.cfg\" fájl átnevezését; " +"máskülönben saját kezűleg kell ezt kiviteleznie." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Alapértelmezett MS Windows .rc erőforrásfordító:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"Az FPC támogatja olyan programok fordítását, melyek beágyazott MS Windows ." +"rc formátumú erőforrásfájlokat tartalmaznak, minden olyan platformon ahol a " +"MinGW windres eszköz elérhető." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Olyan projektek fordításához, melyek .rc fájlokat használnak, kézzel kell " +"telepítenie a mingw32-binutils csomagot. A mingw32-binutils ajánlott az fp-" +"compiler csomaghoz, de nincs automatikusan telepítve." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Ha egyéni .rc fájl fordítót szeretne, mely nem szerepel e listában vagy " +"egyszerűen nem szeretné használni e lehetőséget, válassza a \"Kézi " +"kiválasztás\"-t!" + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "Ha nincs szüksége alapértelmezett .rc fájl fordítóra, hagyja üresen!" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..2df5374e --- /dev/null +++ b/po/it.po @@ -0,0 +1,129 @@ +# Italian translation of fpc debconf messages. +# Copyright (C) 2014, fpc's package copyright holder +# This file is distributed under the same license as the fpc package. +# Beatrice Torracca , 2012, 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-10-01 13:31+0200\n" +"Last-Translator: Beatrice Torracca \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Rinominare «/etc/fpc.cfg» in «/etc/fpc.cfg.bak»?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC permette adesso di avere più versioni installate sullo stesso sistema. " +"Il comando update-alternatives può essere usato per impostare una versione " +"predefinita per\n" +" * fpc (il compilatore);\n" +" * fpc.cfg (il file di configurazione);\n" +" * fp-utils (gli strumenti ausiliari)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Indipendentemente da quale versione si scelga come predefinita, i file di " +"configurazione sono sempre compatibili all'indietro, perciò dovrebbe in ogni " +"caso essere sicuro scegliere di usare la versione più recente." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Per usare il sistema di alternative per il file di configurazione FPC a " +"livello di sistema, si deve accettare di rinominare «/etc/fpc.cfg»; in caso " +"contrario si dovrà gestire la cosa da soli manualmente." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Selezione manuale" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Compilatore predefinito di risorse .rc di MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC permette la compilazione di programmi che incorporano risorse come file " +"in formato .rc di MS Windows su tutte le piattaforme su cui è disponibile lo " +"strumento MinGW windres." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Per poter compilare i progetti che usano file .rc, è necessario installare " +"prima manualmente il pacchetto mingw32-binutils. mingw32-binutils è " +"suggerito da fp-compiler, ma non viene richiamato automaticamente." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Se si desidera indicare un compilatore di file .rc personalizzato che non " +"appare in questo elenco o se si desidera semplicemente disabilitare questa " +"funzionalità, selezionare «Selezione manuale»" + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Se non si desidera usare un compilatore di file .rc predefinito, lasciare " +"vuoto questo campo." diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..74997d6e --- /dev/null +++ b/po/ja.po @@ -0,0 +1,126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the fpc package. +# victory , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-09-22 03:49+0900\n" +"Last-Translator: victory \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "「/etc/fpc.cfg」を「/etc/fpc.cfg.bak」に変更しますか?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC は現在同一システムに複数バージョンが混在することをサポートしています。" +"update-alternatives コマンドを使って、以下のファイルにデフォルトのバージョン" +"をセットすることが可能です\n" +" * fpc (コンパイラ)\n" +" * fpc.cfg (設定ファイル)\n" +" * fp-utils (補助ツール)" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"デフォルトにどのバージョンを選んでも、設定ファイルは常に後方互換なので、最新" +"版の使用はいつでも安全です。" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"システムワイドの FPC 設定ファイルにより代替システムを使用する場合、「/etc/" +"fpc.cfg」ファイルの改名を受け入れないといけません。受け入れない場合は手作業で" +"自ら管理する必要があります。" + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "手作業で指定する" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "デフォルトの MS Windows .rc リソースコンパイラ:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC は MS Windows の .rc 形式のファイルにリソースを埋め込んだプログラムの、" +"MinGW windres ツールが利用できるあらゆるプラットフォーム上でのコンパイルをサ" +"ポートしています。" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +".rc ファイルを使っているプロジェクトをコンパイルできるようにするためにはまず " +"mingw32-binutils パッケージを手作業でインストールする必要があります。mingw32-" +"binutils は fp-compiler で提案されていますが自動的にインストールはされませ" +"ん。" + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"一覧に表示されない独自の .rc ファイルのコンパイラを指定したい、あるいはこの機" +"能を単に無効化したい場合は、「手作業で指定する」を選択ください。" + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"デフォルトの .rc ファイルコンパイラを使いたくない場合は空白にしてください。" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..faf35641 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,130 @@ +# Dutch translation of the fpc debconf templates. +# Copyright (C) 2014 Debian Pascal team +# This file is distributed under the same license as the fpc package. +# Paul Gevers , 2014 +# +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-09-29 21:12+0100\n" +"Last-Translator: Paul Gevers \n" +"Language-Team: Debian Dutch l10n Team \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Dutch\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Hernoem \"/etc/fpc.cfg\" naar \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC ondersteunt het nu dat meerdere versies simultaan geïnstalleerd zijn. " +"Het commando update-alternatives kan gebruikt worden om de standaardversie " +"in te stellen voor:\n" +" * fpc (de compiler)\n" +" * fpc.cfg (het configuratiebestand)\n" +" * fp-utils (de hulpgereedschappen)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Welke versie u ook als standaard kiest, de configuratiebestanden zijn altijd " +"achterwaarts verenigbaar. Het zou dus altijd veilig moeten zijn om de " +"laatste versie te gebruiken." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Als u het alternatieven-systeem wilt gebuiken voor het systeembrede " +"configuratiebestand van FPC, dan is het noodzakelijk dat u het hernoemen van " +"\"/etc/fpc.cfg\" accepteert. Als u dat niet doet, zult u dit handmatig " +"moeten afhandelen." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Handmatig selecteren" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Standaardcompiler voor MS-Windows .rc-bronnen:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"Op alle platformen waar MinGW windres beschikbaar is, ondersteunt FPC het " +"compileren van programma's die bronnen inbouwen als MS-Windowsbestanden van " +"het \".rc\" formaat." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Om projecten te kunnen compileren die gebruik maken van .rc-bestanden, is " +"het nodig dat het pakket mingw32-binutils is geïnstalleerd. mingw32-binutils " +"wordt gesuggereerd door fp-compiler maar wordt niet automatisch geselecteerd " +"voor installatie." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Selecteer \"Handmatig selecteren\" als u een compiler voor .rc-bestanden " +"wilt invoeren die niet in de lijst voorkomt of als u deze functionaliteit " +"simpelweg wilt uitschakelen." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Laat dit leeg als u geen standaardcompiler voor .rc-bestanden wilt gebruiken." diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..b7aabd6c --- /dev/null +++ b/po/pl.po @@ -0,0 +1,132 @@ +# Translation of fpc debconf templates to Polish. +# Copyright (C) 2012 +# This file is distributed under the same license as the fpc package. +# +# Michał Kułach , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-11-20 20:50+0100\n" +"Last-Translator: Michał Kułach \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Zmienić nazwę pliku \"/etc/fpc.cfg\" na \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC obsługuje obecnie instalację wielu wersji w tym samym systemie. " +"Polecenie update-alternatives może zostać użyte do wybrania domyślnej wersji " +"do\n" +" * fpc (kompilatora),\n" +" * fpc.cfg (pliku konfiguracyjnego),\n" +" * fp-utils (narzędzi pomocniczych)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Niezależnie od wyboru wersji domyślnej, pliki konfiguracyjne są zawsze " +"wstecznie kompatybilne, więc korzystanie z najnowszej wersji powinno być " +"całkowicie bezpieczne." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Aby używać systemu alternatyw na poziomie systemowego pliku konfiguracyjnego " +"FPC, konieczne jest zaakceptowanie zmiany nazwy \"/etc/fpc.cfg\" - w " +"przeciwnym razie konieczne będzie samodzielne zarządzanie wspomnianym " +"plikiem." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Wybierz ręcznie" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Domyślny kompilator zasobu .rc MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC obsługuje programy kompilujące które osadzają zasoby w formacie .rc MS " +"Windows na wszystkich platformach na których dostępne jest narzędzie MinGW " +"windres." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Aby móc kompilować projekty za pomocą plików .rc konieczna jest uprzednia " +"ręczna instalacja pakietu mingw32-binutils. Jest to zależność pakietu " +"mingw32-binutils na poziomie \"poleca\", lecz nie jest ona wybierana " +"automatycznie." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Aby wprowadzić własny kompilator plików .rc nie uwidoczniony na tej liście " +"lub aby wyłączyć tę funkcję, proszę wybrać \"Wybierz ręcznie\"." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Jeśli nie chce się używać domyślnego kompilatora plików .rc, należy " +"pozostawić to pole puste." diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..649c3dbe --- /dev/null +++ b/po/pt.po @@ -0,0 +1,131 @@ +# Portuguese translation for fpc's debconf messages +# Copyright (C) 2012 the fpc's copyright holder +# This file is distributed under the same license as the fpc package. +# +# Rui Branco , 2012. +# Américo Monteiro , 2013. +msgid "" +msgstr "" +"Project-Id-Version: fpc >2.6.2-6\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-11-27 21:05+0000\n" +"Last-Translator: Américo Monteiro \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Alterar o nome de \"/etc/fpc.cfg\" para \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"O FPC suporta agora múltiplas versões instaladas no mesmo sistema. O comando " +"update-alternatives pode ser utilizado para definir a versão predefinida " +"para\n" +" * fpc (o compilador)\n" +" * fpc.cfg (o ficheiro do configuração)\n" +" * fp-utils (as ferramentas de ajuda)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Qualquer que seja a versão que escolha como predefinição, os ficheiros de " +"configuração são sempre compatíveis com anteriores, deste modo deverá ser " +"sempre seguro usar a versão mais recente." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"De modo a usar o sistema de alternativas abrangendo todo o sistema, deverá " +"aceitar a mudança de nome do ficheiro de configuração do FPC, para \"/etc/" +"fpc.cfg\"; de outro modo terá que você fazê-lo manualmente." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Seleccionar Manualmente" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Compilador predefinido de recursos .rc do MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"O FPC suporta compilar programas que têm embebidos recursos como ficheiros " +"de formato .rc do MS Windows em todas as plataformas onde a ferramenta MinGW " +"windres esteja disponível." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"De modo a ser capaz de compilar projectos que usem ficheiros .rc, primeiro " +"precisa de instalar manualmente o pacote mingw32-binutils. O mingw32-" +"binutils é sugerido pelo fp-compiler mas não adicionado automaticamente." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Se desejar adicionar um compilador personalizado de ficheiros .rc que não " +"aparece nesta lista ou se simplesmente deseja desactivar esta " +"funcionalidade, por favor escolha \"Seleccionar Manualmente\"." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Se não deseja usar um compilador predefinido de ficheiros .rc, deixe isto em " +"vazio." diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..8510e078 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,128 @@ +# Debconf translations for fpc. +# Copyright (C) 2014 fpc's COPYRIGHT HOLDER +# This file is distributed under the same license as the fpc package. +# José de Figueiredo , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2015-02-14 23:20-0300\n" +"Last-Translator: José de Figueiredo \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Renomear \"/etc/fpc.cfg\" para \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"Agora o FPC suporta ter múltiplas versões instaladas no mesmo sistema. O " +"comando update-alternatives pode ser usado para escolher uma versão padrão " +"para:\n" +" * fpc (o compilador);\n" +" * fpc.cfg (o arquivo de configuração);\n" +" * fp-utils (as ferramentas de apoio)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Para qualquer versão que você escolher como padrão, os arquivos de " +"configuração serão sempre retro-compatíveis, por isso deve ser sempre seguro " +"usar a última versão." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Para utilizar o sistema de alternativas no arquivo global do sistema de " +"configuração do FPC, você precisa aceitar renomear \"/etc/fpc.cfg\"; caso " +"contrário, você precisará gerenciar isto manualmente por si mesmo." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Selecionar manualmente" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Compilador de recurso .rc MS Windows padrão:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"O FPC tem suporte a compilar programas que incorporam recursos como arquivos " +"no formato .rc do MS Windows em todas as plataformas onde a ferramenta MinGW " +"windres estiver disponível." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Para poder compilar projetos usando arquivos .rc, primeiro você precisa " +"instalar manualmente o pacote mingw32-binutils. O mingw32-binutils é " +"sugerido pelo fp-compiler, mas não é trazido automaticamente." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Se você quiser informar um compilador de arquivos .rc personalizado que não " +"aparece nesta lista ou se você simplesmente quiser desabilitar esta " +"característica, por favor, selecione \"Selecionar manualmente\"." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Se você não quer usar um compilador de arquivos .rc padrão, deixe em branco." diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..e4a984d8 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,128 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the fpc package. +# +# Yuri Kozlov , 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: fpc 2.6.2-6\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-11-12 19:34+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Переименовать «/etc/fpc.cfg» в «/etc/fpc.cfg.bak»?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"Теперь в систему можно установить сразу несколько версий FPC. Для выбора " +"версии по умолчанию можно использовать команду update-alternatives. Можно " +"выбрать разный:\n" +" * fpc (компилятор);\n" +" * fpc.cfg (файл настройки);\n" +" * fp-utils (вспомогательные инструменты)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Какую бы версию вы не выбрали, файлы настройки всегда обратно совместимы, " +"поэтому можно всегда без опаски выбирать самую новую версию." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Чтобы использовать систему альтернатив системный файла настройки FPC нужно " +"разрешить переименовывать в «/etc/fpc.cfg»; в противном случае вам каждый " +"раз нужно будет делать это вручную." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Указать вручную" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Компилятор ресурсов MS Windows .rc по умолчанию:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC поддерживает программы компиляции, которые встраивают файлы ресурсов " +"(такие как MS Windows .rc) на всех платформах, где доступна программа MinGW " +"windres." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Чтобы можно было компилировать проекты с файлами .rc, во-первых, вам нужно " +"вручную установить mingw32-binutils. Наличие пакета mingw32-binutils " +"предполагается fp-compiler, но он не вытягивается автоматически." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Если вы хотите указать другой компилятор файлов .rc, которого нет в списке " +"или хотите совсем отключить эту возможность, выберите «Указать вручную»." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Если вы не хотите использовать компилятор файлов .rc по умолчанию, оставьте " +"это поле пустым." diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..1bdbdeed --- /dev/null +++ b/po/sk.po @@ -0,0 +1,133 @@ +# Slovak translations for fpc package +# Slovenské preklady pre balík fpc. +# Copyright (C) 2012 THE fpc'S COPYRIGHT HOLDER +# This file is distributed under the same license as the fpc package. +# Slavko , 2012, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: fpc 2.6.2-6\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2013-11-23 20:22+0100\n" +"Last-Translator: Slavko \n" +"Language-Team: slovenčina \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-POFile-SpellExtra: fp-utils fpc FPC cfg etc update-alternatives bak\n" +"X-Generator: Gtranslator 2.91.6\n" +"X-POFile-SpellExtra: resource windres mingw32-binutils MinGW rc\n" +"X-POFile-SpellExtra: fp-compiler\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "PremenovaÅ¥ „/etc/fpc.cfg” na „/etc/fpc.cfg.bak”?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC teraz podporuje viacero nainÅ¡talovaných verzií na jednom stroji. Na " +"nastavenie predvolenej verzie možno použiÅ¥ príkaz update-alternatives pre\n" +" * fpc (kompilátor);\n" +" * fpc.cfg (konfiguračný súbor);\n" +" * fp-utils (pomocné nástroje)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Ako predvolenú môžete zvoliÅ¥ ktorúkoľvek verziu, konfiguračné súbory sú vždy " +"spätne kompatibilné, takže by malo byÅ¥ vždy bezpečné používaÅ¥ najnovÅ¡iu " +"verziu." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"Aby ste mohli používaÅ¥ systém alternatív na systémový konfiguračný súbor " +"FPC, musíte potvrdiÅ¥ premenovanie „/etc/fpc.cfg”; inak to budete musieÅ¥ " +"spravovaÅ¥ manuálne." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "VybraÅ¥ manuálne" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Predvolený kompilátor .rc resource MS Windows:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC podporuje programy na zostavovanie, ktoré zahrnú zdroje ako súbory vo " +"formáte MS Windows .rc na vÅ¡etkých platformách, kde je dostupný nástroj " +"MinGW windres." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"Aby ste mohli zostavovaÅ¥ projekty pomocou pomocou súborov .rc, musíte najprv " +"manuálne nainÅ¡talovaÅ¥ balík mingw32-binutils. Balík mingw32-binutils je " +"navrhovaný balíkom fp-compiler, ale nie je zvolený automaticky." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Ak chcete zadaÅ¥ vlastný kompilátor súboru .rc, ktorý nie je v tomto zozname, " +"alebo ak chcete jednoducho vypnúť túto vlastnosÅ¥, prosím, vyberte možnosÅ¥ " +"„VybraÅ¥ manuálne”." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Ak nechcete používaÅ¥ predvolený kompilátor súboru .rc, nechajte toto pole " +"prázdne." diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..6a1b64f2 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,128 @@ +# Translation of fpc debconf template to Swedish +# Copyright (C) 2014 Martin Bagge +# This file is distributed under the same license as the fpc package. +# +# Martin Bagge , 2012, 2014 +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: 2014-09-30 13:13+0100\n" +"Last-Translator: Martin Bagge / brother \n" +"Language-Team: Swedish \n" +"Language: Swedish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "Byt namn pÃ¥ \"/etc/fpc.cfg\" till \"/etc/fpc.cfg.bak\"?" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" +"FPC har nu stöd för att ha flera versioner installerade pÃ¥ samma system. " +"Kommandot update-alternatives kan användas för att sätta en standardversion " +"för\n" +" * fpc (kompileraren);\n" +" * fpc.cfg (inställningsfilen);\n" +" * fp-utils (hjälpverktygen)." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" +"Inställningsfilerna fungerar pÃ¥ äldre versioner oberoende vilken version du " +"anger som standard, därför är senaste versionen som standard ett säkert val." + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" +"För att kunna använda alternativsystemet för systemets inställningsfil för " +"FPC mÃ¥ste du tillÃ¥ta att \"/etc/fpc.cfg\" byter namn annars behöver du " +"hantera detta manuellt." + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "Manuell hantering" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "Standardkompilator för MS Windows .rc-resurser:" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" +"FPC har stöd för kompilering av program som bäddar in resurser som MS " +"Windows .rc-format-filer pÃ¥ alla plattformar där MinGW windres-verktyg finns " +"tillgängligt." + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" +"För att kunna kompilera projekt med .rc-filer behöver du först manuellt " +"installera paketet mingw32-binutils. mingw32-binutils föreslÃ¥s av fp-" +"compiler men installeras inte automatiskt." + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" +"Om du vill ange en alternativ kompilator för .rc-filer som inte visas i " +"denna lista eller om du helt enkelt vill avaktivera den här funktionen ange " +"\"Manuell hantering\"." + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" +"Vill du inte använda en standardkompilator för .rc-filer kan detta fält " +"lämnas tomt." diff --git a/po/templates.pot b/po/templates.pot new file mode 100644 index 00000000..9aa7cb39 --- /dev/null +++ b/po/templates.pot @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: fpc\n" +"Report-Msgid-Bugs-To: fpc@packages.debian.org\n" +"POT-Creation-Date: 2015-06-19 17:31+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "Rename \"/etc/fpc.cfg\" to \"/etc/fpc.cfg.bak\"?" +msgstr "" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"FPC now supports having multiple versions installed on the same system. The " +"update-alternatives command can be used to set a default version for\n" +" * fpc (the compiler);\n" +" * fpc.cfg (the configuration file);\n" +" * fp-utils (the helper tools)." +msgstr "" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"Whatever version you may choose as default, the configuration files are " +"always backward compatible, so it should always be safe to use the latest " +"version." +msgstr "" + +#. Type: boolean +#. Description +#: ../fp-compiler.templates.in:2001 +msgid "" +"In order to use the alternatives system on the system wide FPC configuration " +"file you must accept renaming \"/etc/fpc.cfg\"; otherwise you will need to " +"manage this manually by yourself." +msgstr "" + +#. Type: select +#. Choices +#. This string should be in sync with the translation in the description +#: ../fp-compiler.templates.in:3001 +msgid "Select manually" +msgstr "" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "Default MS Windows .rc resource compiler:" +msgstr "" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"FPC supports compiling programs that embed resources as MS Windows .rc-" +"format files on all platforms where the MinGW windres tool is available." +msgstr "" + +#. Type: select +#. Description +#. Type: string +#. Description +#: ../fp-compiler.templates.in:3002 ../fp-compiler.templates.in:4001 +msgid "" +"In order to be able to compile projects using .rc files, you need first to " +"manually install the package mingw32-binutils. mingw32-binutils is suggested " +"by fp-compiler but not pulled in automatically." +msgstr "" + +#. Type: select +#. Description +#. "Select manually" should be in sync with the text elsewhere in the +#. translation +#: ../fp-compiler.templates.in:3002 +msgid "" +"If you want to enter a custom .rc file compiler that does not appear in this " +"list or if you simply want to disable this feature, please select \"Select " +"manually\"." +msgstr "" + +#. Type: string +#. Description +#: ../fp-compiler.templates.in:4001 +msgid "If you don't want to use a default .rc file compiler, leave this blank." +msgstr "" diff --git a/rules b/rules new file mode 100755 index 00000000..9e5c0469 --- /dev/null +++ b/rules @@ -0,0 +1,549 @@ +#!/usr/bin/make -f +# debian/rules for Free Pascal + +DEB_PACKAGE_NAME = fpc +export DEB_BUILD_MAINT_OPTIONS := hardening=+bindnow +export DH_ALWAYS_EXCLUDE := COPYING:LICENSE +export LANG:=C + +# Documentation type to use pdf/html +ifeq (${DEBDOCTYPE},) +DOCTYPE=html +# HTML Converter l2h/4ht/hevea or html for (default) +CONVERTER=hevea +else +DOCTYPE=${DEBDOCTYPE} +CONVERTER=${DOCTYPE} +endif +# Include standard dpkg-buildpackage variables +include /usr/share/dpkg/architecture.mk +# Undefine FPC if it was set +unexport FPC +# Build new compiler name +CPU_SOURCE=${DEB_BUILD_ARCH_CPU} +CPU_TARGET=${DEB_HOST_ARCH_CPU} +# Take care that Debian uses amd64 while FPC perfers x86_64 instead +CPU_SOURCE := $(subst amd64,x86_64,${CPU_SOURCE}) +CPU_TARGET := $(subst amd64,x86_64,${CPU_TARGET}) +# Take care that Debian uses arm64 while FPC perfers aarch64 instead +CPU_SOURCE := $(subst arm64,aarch64,${CPU_SOURCE}) +CPU_TARGET := $(subst arm64,aarch64,${CPU_TARGET}) +# Take care that debian uses ppc64/-el while FPC prefers powerpc64 instead +ifeq ($(DEB_HOST_ARCH_CPU),ppc64el) +CPU_SOURCE := $(subst ppc64el,powerpc64,${CPU_SOURCE}) +CPU_TARGET := $(subst ppc64el,powerpc64,${CPU_TARGET}) +else +CPU_SOURCE := $(subst ppc64,powerpc64,${CPU_SOURCE}) +CPU_TARGET := $(subst ppc64,powerpc64,${CPU_TARGET}) +endif +# Shuld get rid of this one day, as it is done automatically by FPC make files +ifeq ($(CPU_TARGET),m68k) +PPSUF=68k +endif +ifeq ($(CPU_TARGET),i386) +PPSUF=386 +endif +ifeq ($(CPU_TARGET),x86_64) +PPSUF=x64 +endif +ifeq ($(CPU_TARGET),powerpc) +PPSUF=ppc +endif +ifeq ($(CPU_TARGET),powerpc64) +PPSUF=ppc64 +endif +ifeq ($(CPU_TARGET),alpha) +PPSUF=axp +endif +ifeq ($(CPU_TARGET),arm) +PPSUF=arm +endif +ifeq ($(CPU_TARGET),aarch64) +PPSUF=a64 +endif +ifeq ($(CPU_TARGET),sparc) +PPSUF=sparc +endif +ifeq ($(CPU_TARGET),sparc64) +PPSUF=sparc64 +endif +ifeq ($(CPU_TARGET),mips) +PPSUF=mips +endif +ifeq ($(CPU_TARGET),mipsel) +PPSUF=mipsel +endif + +ifneq ($(CPU_SOURCE),$(CPU_TARGET)) +PPPRE=ppcross +else +PPPRE=ppc +endif + +PPNEW=$(PPPRE)$(PPSUF) +# Take care that Debian uses kfreebsd while FPC prefers freebsd +OS_TARGET=$(subst kfreebsd,freebsd,${DEB_HOST_ARCH_OS}) +# FPC uses FPCTARGET to identify the target for which the binaries are +# produced. This is generally a couple of target CPU and target OS names +# separated by a dash. +FPCTARGET=$(CPU_TARGET)-$(OS_TARGET) +# Get version information from changelog file +DEB_VERSION:=$(shell dpkg-parsechangelog --show-field Version) +DEB_DATE:=$(shell date --utc --date="`dpkg-parsechangelog --show-field Date`" +%Y/%m/%d) +DEB_UPSTREAM_VERSION:=$(shell echo $(DEB_VERSION) | cut -f 1 -d -) +export DEB_UPSTREAM_MAIN_VERSION:=$(shell echo ${DEB_UPSTREAM_VERSION} | sed -e 's/^\([0-9\.]*\).*/\1/') +DEB_BUILD=$(lastword $(subst -, ,${DEB_VERSION})) +ifndef PACKAGESUFFIX +export PACKAGESUFFIX=-${DEB_UPSTREAM_MAIN_VERSION} +endif +# Get directories +INSTALL_DIR=${CURDIR}/debian/tmp +BIN_DIR=${INSTALL_DIR}/usr/bin +# Debian policy is to install libraries that are multi-arch coinstallable in +# /usr/lib/${DEB_HOST_MULTIARCH} +LIB_DIR=${INSTALL_DIR}/usr/lib/${DEB_HOST_MULTIARCH}/${DEB_PACKAGE_NAME}/${DEB_UPSTREAM_MAIN_VERSION} +DOC_DIR=${INSTALL_DIR}/usr/share/doc +SRC_DIR=${INSTALL_DIR}/usr/share/fpcsrc/${DEB_UPSTREAM_MAIN_VERSION} +EXAMPLE_TEMP=${INSTALL_DIR}/usr/share/doc/fpc-${DEB_UPSTREAM_MAIN_VERSION} +STY_DIR=${INSTALL_DIR}/usr/share/texmf/tex/latex/fpc-${DEB_UPSTREAM_MAIN_VERSION} +# Override standard GNUE make variables +ifndef MKDIR +MKDIR=mkdir -p +endif +ifndef CP +CP=cp -Rfpl +endif +ifndef MV +MV=mv +endif +RM:=rm -rf +# Build fpcmake from sources if none is specified. +ifndef FPCMAKE +# Upstream wants that one uses latest FPC make utility to produce make files +# from FPC make files. This is required because, especially in old days, FPC +# make utility used to evolve so that old tool versions were not able to +# process new FPC make files. So it is always safe to start first by building +# this tool from sources and then use it to build make files to build compiler, +# RTL and packages. +FPCMAKE=fpcsrc/utils/fpcm/bin/${FPCTARGET}/fpcmake +endif +# Undefine FPCDIR if it was set +unexport FPCDIR +NEWPP=$(CURDIR)/fpcsrc/compiler/$(PPNEW) +NEWFPDOC=$(CURDIR)/fpcsrc/utils/fpdoc/fpdoc +# Set default compilation options +DEB_BUILD_FPC_OPT=debian/deb-build-fpc.cfg +DEB_HOST_FPC_OPT=debian/deb-host-fpc.cfg +ifeq ($(DEB_HOST_ARCH_CPU),ppc64el) +BUILDOPTS=PP=$(NEWPP) OPT='@${CURDIR}/${DEB_HOST_FPC_OPT} -Cb- -Caelfv2' +else +BUILDOPTS=PP=$(NEWPP) OPT='@${CURDIR}/${DEB_HOST_FPC_OPT}' +endif +ifdef CROSSOPT +BUILDOPTS+= CROSSOPT=${CROSSOPT} +endif +INSTALLOPTS=INSTALL_PREFIX=$(INSTALL_DIR)/usr PP=$(NEWPP) + +export GDBLIBDIR=/usr/lib + +ifeq ($(CPU_TARGET),m68k) + # Disable optimization for the first runs as there may be bugs associated + # with that, preventing proper building new versions + CYCLEOPTS:=OPT='@${CURDIR}/${DEB_HOST_FPC_OPT}' OPTLEVEL1=-O- +else + CYCLEOPTS:=OPT='@${CURDIR}/${DEB_HOST_FPC_OPT}' +endif + +# Set default compilation options +FPMAKE_BUILDOPTS=FPMAKE_SKIP_CONFIG='-n @${CURDIR}/${DEB_BUILD_FPC_OPT}' + +LDFLAGS=$(strip $(shell DEB_BUILD_MAINT_OPTIONS=$(DEB_BUILD_MAINT_OPTIONS) \ + dpkg-buildflags --get LDFLAGS | \ + sed -e 's/-Wl,//g' -e 's/,/ /g' -e 's1-specs=/usr/share/dpkg/.*\.specs11' -e 's/-ffat-lto-objects//')) + +# Until we switch to shorthand dh, we need to set this ourselves for +# reproducible builds +export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s) + +#export DH_VERBOSE=1 + +################### +# Clean +# + +# The default clean target is very heavy for an already clean tree because it +# regenerates all the Makefiles from Makefile.fpc files to be able to call all +# the upstream distclean targets. Therefor the clean target is split into +# multiple components and you can fool the makefiles target when ZERO generated +# Makefiles are found by setting the variable MAY_FOOL_CLEAN to anything but +# the empty string. This is propably a reasonable trade-off under all +# circumstances, but to prevent anything bad from happening during official +# builds, it is not the default. +clean: check-makefiles clean-all-but-makefiles clean-makefiles + # Make sure the debconf translations are always up-to-date + debconf-updatepo + # Make sure the list with timestamps is up-to-date + [ ! $$(which fp-fix-timestamps) ] || fp-fix-timestamps update + dh_clean + +# See comment above clean target. Fool make-file when approriate +check-makefiles: +ifdef MAY_FOOL_CLEAN + for fpcfile in `find . -name Makefile.fpc` ; do \ + if [ -f `dirname $$fpcfile`/Makefile ] ; then \ + GOINGTOFOOLCLEAN=false ; \ + fi ; \ + done ; \ + if [ "$$GOINGTOFOOLCLEAN" != false ] ; then \ + echo Beware of empty Makefiles: we are going to fool the makefiles target now ; \ + for fpcfile in `find . -name Makefile.fpc` ; do \ + touch `dirname $$fpcfile`/Makefile ; \ + done ; \ + touch makefiles-stamp ; \ + fi +endif + +# In essence, this is the real clean target, except it doesn't remove the +# generated Makefiles. It should do ALL the other cleaning though. +clean-all-but-makefiles: makefiles + dh_testdir + + # Remove the gnome1, gtk1, fpgtk and imlib packages + # as they depend on libraries long go removed from Debian. + rm -rf fpcsrc/packages/gnome1 + rm -rf fpcsrc/packages/gtk1 + rm -rf fpcsrc/packages/imlib + rm -rf fpcsrc/packages/fpgtk + # The following packages depend on (at least) fpgtk and were + # not build in Debian anyways. The makefiles target fails to run + # if we remove the above, but not these because fpcmake checks + # for all Makefile.fpc files and notices that the dependency is + # not fullfilled. + rm -rf fpcsrc/utils/fpdoc/fpde + rm -rf fpcsrc/utils/fpmc + + # Call upstream clean targets + [ ! -s fpcsrc/Makefile ] || $(MAKE) -C fpcsrc compiler_distclean + [ ! -s fpcsrc/Makefile ] || $(MAKE) -C fpcsrc rtl_distclean + [ ! -s fpcsrc/Makefile ] || $(MAKE) -C fpcsrc packages_distclean + [ ! -s fpcsrc/Makefile ] || $(MAKE) -C fpcsrc utils_distclean + [ ! -s fpcdocs/Makefile ] || $(MAKE) -C fpcdocs clean + # Just in case they forgot something + find -regex '.*\.\(a\|or?\|so\.*\|ppu\|compiled\)' -delete + # Not all empty directories are cleaned up properly by the upstream + find . -type d -empty -delete + + # Revert hardcoded dates + sed --in-place "s/EncodeDate([^(^)]*)/Now/" fpcsrc/packages/fpmkunit/src/fpmkunit.pp + sed --in-place "s/\\\\date\\\{.*\\\}/\\\\date\\\{\`date +'%B %Y'\`\\\}/" fpcdocs/Makefile.fpc + + # Remove build config files; because we use a variable, lets not put it in + # d/clean + rm -f $(DEB_BUILD_FPC_OPT) + rm -f $(DEB_HOST_FPC_OPT) + + dh_clean + +FPCMAKEFILES=fpcsrc/Makefile.fpc $(shell find demo fpcdocs -name Makefile.fpc) + +makefiles: makefiles-stamp +makefiles-stamp: $(patsubst %.fpc,%,${FPCMAKEFILES}) + # Make files are now generated. + touch $@ + +%Makefile:%Makefile.fpc ${FPCMAKE} + # Regenerate make files using fpcmake. + ${FPCMAKE} -r -Tall -q $< + +clean-makefiles: + # Remove auto-generated Makefiles. + ${RM} makefiles-stamp + find . -name Makefile.fpc -execdir sh -c '${RM} $$(basename {} .fpc)' ';' + + +################### +# Debian files +# + +debian-files: debian-files-stamp +debian-files-stamp:debian/fixdeb debian/*.in + @echo "--- Creating/fixing *.install files" + DEB_SUBST_PACKAGESUFFIX=${PACKAGESUFFIX} \ + DEB_SUBST_PPCBIN=${PPNEW} \ + DEB_SUBST_TARGET=${FPCTARGET} \ + DEB_SUBST_DEB_HOST_MULTIARCH=${DEB_HOST_MULTIARCH} \ + $< debian/*.in + # Because we use dh-exec to track units that don't need to install + # everywhere, we need the .install files to be executable + chmod a+x debian/*.install + touch debian-files-stamp + + +################### +# Source +# + +prepare-source: prepare-source-stamp +prepare-source-stamp: + dh_testdir + dh_prep + # Add version.inc: + echo \'$(DEB_VERSION)\' > fpcsrc/compiler/version.inc + # To obtain reproducible builds, we need to force a date in several + # locations + # Timestamp in prog.html & ref.html & user.html + # Note: replace directly with correct string + sed --in-place "s/\`date +'%B %Y'\`/$(shell LC_ALL=C date --utc --date=${DEB_DATE} +'%B %Y')/" fpcdocs/Makefile.fpc + # Checksum in fastcgi/fpunits.cfg & fcl-web/fpunits.cfg + # Note: revert in clean target + sed --in-place "s/Now/EncodeDate($(shell date --utc --date=${DEB_DATE} +'%Y, %m, %d'))/" fpcsrc/packages/fpmkunit/src/fpmkunit.pp + + # Now that we are done with all changes to files in the packaging, let's + # make sure that all the timestamps are reproducible. + echo -n "fpcsrc/compiler/version.inc " >> debian/source/timestamps + LC_ALL=C date --utc --iso-8601=minutes --date=${DEB_DATE} >> debian/source/timestamps + debian/fp-fix-timestamps touch + #Remove last line agains + sed --in-place '$$d' debian/source/timestamps + + touch prepare-source-stamp + +# Annoying thing is we need to do this very early to save lots of overhead. If +# it can be done on a clean tree, right after prepare-source we don't need +# cleaning, right. +install-source: prepare-source install-source-stamp +install-source-stamp: + @echo "--- Copying the source code" + dh_testdir + ${MKDIR} ${SRC_DIR} + ${CP} -t ${SRC_DIR} \ + $(CURDIR)/fpcsrc/compiler \ + $(CURDIR)/fpcsrc/packages \ + $(CURDIR)/fpcsrc/rtl + touch install-source-stamp + + +################### +# Arch packages +# + +build-arch: debian-files install-source makefiles build-arch-stamp +build-arch-stamp: ${DEB_BUILD_FPC_OPT} ${DEB_HOST_FPC_OPT} + @echo "--- Building" + dh_testdir + # First make a new Compiler using a make cycle + $(MAKE) -C fpcsrc compiler_cycle $(CYCLEOPTS) + # Then build RTL using new compiler + $(MAKE) -C fpcsrc rtl_clean rtl_smart $(BUILDOPTS) + # Finally build packages and tools using new compiler and new RTL + $(MAKE) -C fpcsrc packages_smart ${BUILDOPTS} ${FPMAKE_BUILDOPTS} + $(MAKE) -C fpcsrc utils_all ${BUILDOPTS} + # *.fpm files contain the build directory, which results in unreproducible + # builds. As this is useless anyways, let's canonize the text. + find . -name "*.fpm" -exec sed --in-place "s#${CURDIR}/##" {} \; + touch build-arch-stamp + +install-arch: build-arch install-arch-stamp +install-arch-stamp: + @echo "--- Installing" + dh_testdir + dh_testroot + dh_installdirs + # create all necessary directories + ${MKDIR} ${BIN_DIR} + ${MKDIR} ${LIB_DIR} + ${MKDIR} ${STY_DIR} + # Specify the compiler to use so installing will use the correct versioned dir + $(MAKE) -C fpcsrc compiler_distinstall $(INSTALLOPTS) + $(MAKE) -C fpcsrc rtl_distinstall $(INSTALLOPTS) + $(MAKE) -C fpcsrc packages_distinstall $(INSTALLOPTS) + $(MAKE) -C fpcsrc utils_distinstall $(INSTALLOPTS) + $(MAKE) -C fpcsrc/utils/fpdoc/intl install $(INSTALLOPTS) + ${CP} -t ${LIB_DIR} \ + ${INSTALL_DIR}/usr/lib/fpc/lexyacc + ${CP} -t ${BIN_DIR} debian/fpc-depends + # Copy examples to the correct doc dir + /bin/bash debian/moveexamples ${EXAMPLE_TEMP} ${DOC_DIR} ${DEB_UPSTREAM_MAIN_VERSION} + # Rename executables + for f in ${BIN_DIR}/* ; do ${MV} $$f $${f}-${DEB_UPSTREAM_MAIN_VERSION} ; done + # Move fp-compiler executables to /usr/bin/ + for f in fpc fpcmkcfg fpcres ; do \ + ${MV} ${BIN_DIR}/$${f}-${DEB_UPSTREAM_MAIN_VERSION} ${BIN_DIR}/${DEB_HOST_MULTIARCH}-$${f}-${DEB_UPSTREAM_MAIN_VERSION} ; \ + done + # Install RTL demos + $(MAKE) -C demo sourceinstall $(INSTALLOPTS) INSTALL_SOURCEDIR=$(DOC_DIR)/fp-compiler/${DEB_UPSTREAM_MAIN_VERSION} + # Install whatsnew and readme + $(MAKE) -C install/doc installdoc $(INSTALLOPTS) INSTALL_DOCDIR=$(DOC_DIR)/fp-compiler/${DEB_UPSTREAM_MAIN_VERSION} + # Install fpdoc latex styles, but only those that are not already in + # texlive-latex-recommended + ${CP} -t ${STY_DIR} \ + ${CURDIR}/fpcdocs/fakehtml.sty \ + ${CURDIR}/fpcdocs/fpc.sty + touch install-arch-stamp + +arrange-arch: install-arch arrange-arch-stamp install-man +arrange-arch-stamp: + dh_testdir + dh_testroot + # Expected here: + # usr/lib/fpc/lexyacc/yyparse.cod + # usr/lib/fpc/lexyacc/yylex.cod + # usr/bin/unihelper- + # usr/bin/ptop.rsj- + # usr/bin/mkx86ins- + # usr/bin/mkinsad- + # usr/bin/mkarmins- + # usr/bin/mka64ins- + # usr/bin/makeskel.rsj- + # usr/bin/cldrparser- + dh_install -s --list-missing + touch arrange-arch-stamp + +# This is a policy required target, for our purpose, it needs to trigger +# debian-files and install-source at least if that didn't happen yet. +build-indep: debian-files install-source build-doc +install-indep: install-doc install-man + +install-man: install-man-stamp +install-man-stamp: + # Generate man pages for newly supported arches + cd install/man/man1 ; \ + for arch in 68k a64 mips mipsel ppc64 sparc64; do \ + cp -p ppcx64.1 ppc$${arch}.1 ; \ + sed --in-place s/x64/$${arch}/ ppc$${arch}.1 ; \ + done + + # Install man pages + $(MAKE) -C install/man installman $(INSTALLOPTS) + for s in ${INSTALL_DIR}/usr/man/man[1-9] ; do cd $${s} && ( gzip -d *.gz || true ) && for f in *.[1-9] ; do ${MV} $${f} $${f%%.*}-${DEB_UPSTREAM_MAIN_VERSION}."$${f#*.}" ; done ; done || true + pod2man -c 'Free pascal for Debian GNU/Linux' -d ${DEB_DATE} debian/fpc-depends > \ + debian/fpc-depends-${DEB_UPSTREAM_MAIN_VERSION}.1 + txt2man -s1 debian/fp-fix-timestamps.txt > debian/fp-fix-timestamps.1 + dh_installman + ${RM} ${INSTALL_DIR}/usr/man + touch install-man-stamp + +################### +# Documentation +# + +build-doc: makefiles build-doc-stamp +build-doc-stamp: + @echo "--- Building Documentation" + dh_testdir + ${MKDIR} fpcsrc/compiler/utils/units/${FPCTARGET} + # Until the whole locale is properly set to include at least UTF-8 in some + # more generic way than on a per d/rules file basis, we need to set the + # locale here to get reproducible builds (because of sorting in index + # pages) and to fix some characters in some documentation files that are + # non-ascii. + LC_ALL=C.UTF-8 $(MAKE) -C fpcdocs $(CONVERTER) UNITDIR_RTL= + touch build-doc-stamp + +install-doc: build-doc install-doc-stamp +install-doc-stamp: + @echo "--- Installing Documentation" + dh_testdir + dh_testroot + ${MAKE} -C fpcdocs ${DOCTYPE}install INSTALL_PREFIX=${INSTALL_DIR}/usr INSTALL_DOCDIR=${DOC_DIR}/fp-docs/${DEB_UPSTREAM_MAIN_VERSION} + + # The following lines are taken from https://wiki.debian.org/dedup.debian.net + # Replace duplicate files with symlinks + rdfind -outputname /dev/null -makesymlinks true ${DOC_DIR} + # Fix those symlinks to make them relative + symlinks -r -s -c ${DOC_DIR} + + touch install-doc-stamp + + +################### +# Generic +# + +build: build-arch build-indep +install: install-arch install-indep +binary: binary-arch binary-indep + + +################### +# Deb building +# + +binary-indep: install-indep + @echo "--- Building: arch-indep packages" + dh_testdir + dh_testroot + dh_installdocs -i -X.in + dh_installchangelogs -i + dh_install -i --list-missing + find debian/fpc-source${PACKAGESUFFIX}/usr/share/fpcsrc/ -type f \ + -not -regex '.*\.\(fpc\|inc\|pas\|pp\)' -delete + find debian/fpc-source${PACKAGESUFFIX}/usr/share/fpcsrc/ -type d \ + -empty -delete + dh_lintian -i + dh_compress -i -X.pdf + dh_fixperms + dh_installdebconf -i + dh_installdeb -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i $(DEB_DH_BUILDDEB_ARGS) + +binary-arch: arrange-arch + @echo "--- Building: arch packages" + dh_testdir + dh_testroot + dh_link + dh_installdocs -a -X.in + dh_installchangelogs -a + dh_installexamples -a + dh_strip -s + dh_lintian -a + dh_compress -a + dh_fixperms + dh_installdebconf -a + dh_installdeb -a + dh_shlibdeps -s + dh_gencontrol -s + dh_md5sums -s + dh_builddeb -s $(DEB_DH_BUILDDEB_ARGS) + +.PHONY: arrange-arch binary binary-arch binary-indep build build-arch \ + build-doc build-indep check-makefiles clean clean-all-but-makefiles \ + clean-makefiles debian-files install install-arch \ + install-doc install-indep install-man install-source makefiles \ + prepare-source gen-control run-tests + +# Generate debian.control file +gen-control: debian/control.in + +# Run upstream test suite +run-tests: + dpkg-source --before-build ${CURDIR} + debian/tests/run-upstream-testsuite + +debian/%:debian/fixdeb debian/changelog debian/%.in + DEB_SUBST_PACKAGESUFFIX=${PACKAGESUFFIX} \ + DEB_SUBST_PPCBIN=${PPNEW} \ + DEB_SUBST_TARGET=${FPCTARGET} \ + DEB_SUBST_DEB_HOST_MULTIARCH=${DEB_HOST_MULTIARCH} \ + $< --gen-control $@.in + +${FPCMAKE}:fpcsrc/utils/fpcm/Makefile.fpc fpcsrc/Makefile.fpc ${DEB_BUILD_FPC_OPT} + fpcmake -r -Tall -q fpcsrc/Makefile.fpc + ${MAKE} -C fpcsrc/rtl OPT=@${CURDIR}/${DEB_BUILD_FPC_OPT} + ${MAKE} -C fpcsrc/packages/fpmkunit bootstrap OPT=@${CURDIR}/${DEB_BUILD_FPC_OPT} + ${MAKE} -C ${ $@ + echo '-k${LDFLAGS}' >> $@ + echo '-Fl/usr/lib/${DEB_BUILD_MULTIARCH}' >> $@ + +${DEB_HOST_FPC_OPT}: + echo '# FPC configuration file for host system applications' > $@ + echo '-k${LDFLAGS}' >> $@ + echo '-Fl/usr/lib/${DEB_HOST_MULTIARCH}' >> $@ + +lintian: + lintian -I -i ../fpc_${DEB_VERSION}_${DEB_HOST_ARCH}.changes diff --git a/source/format b/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 00000000..9cf4fbbd --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,3 @@ +# In 3.0.0+dfsg-5 elbrus added fp-fix-timestamps that expects d/source/timestamps +# lintian bug: http://bugs.debian.org/825222 +fpc source: unknown-file-in-debian-source timestamps diff --git a/source/timestamps b/source/timestamps new file mode 100644 index 00000000..7e3c3144 --- /dev/null +++ b/source/timestamps @@ -0,0 +1,79 @@ +fpcsrc/compiler/arm/agarmgas.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/cgbase.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/cgobj.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/defutil.pas 2022-05-26T16:24+00:00 +fpcsrc/compiler/globals.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/hlcgobj.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/m68k/cpubase.pas 2022-05-26T16:24+00:00 +fpcsrc/compiler/mips/ncpumat.pas 2023-03-29T11:45+00:00 +fpcsrc/compiler/ncgvmt.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/powerpc64/cgcpu.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/powerpc64/cpupara.pas 2022-05-26T16:24+00:00 +fpcsrc/compiler/ppcgen/cgppc.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/ppcgen/hlcgppc.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/psub.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/symconst.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/systems.pas 2022-11-19T17:36+00:00 +fpcsrc/compiler/systems/t_linux.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/utils/ppuutils/ppudump.pp 2022-11-19T17:36+00:00 +fpcsrc/compiler/version.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/x86/cgx86.pas 2020-05-14T13:54+00:00 +fpcsrc/compiler/x86/cpubase.pas 2022-05-26T16:24+00:00 +fpcsrc/compiler/x86/rax86.pas 2022-05-26T16:24+00:00 +fpcsrc/ide/fp.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpcompil.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpconst.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpdebug.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpdesk.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpide.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpini.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpmake.pp 2021-10-30T12:48+00:00 +fpcsrc/ide/fpmopts.inc 2021-10-30T12:48+00:00 +fpcsrc/ide/fpregs.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpusrscr.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpvars.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/fpviews.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/gdbmicon.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/gdbmiint.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/gdbmiproc.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/gdbmiwrap.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/globdir.inc 2021-10-30T12:48+00:00 +fpcsrc/ide/weditor.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/windebug.pas 2021-10-30T12:48+00:00 +fpcsrc/ide/wresourc.pas 2021-10-30T12:48+00:00 +fpcsrc/packages/fcl-js/fpmake.pp 2020-05-14T13:54+00:00 +fpcsrc/packages/fpmake_add.inc 2020-05-14T13:54+00:00 +fpcsrc/packages/fpmake_proc.inc 2020-05-14T13:54+00:00 +fpcsrc/packages/fpmkunit/src/fpmkunit.pp 2020-05-14T13:54+00:00 +fpcsrc/packages/ide/fpcompil.pas 2022-05-26T16:24+00:00 +fpcsrc/packages/ide/fpini.pas 2020-05-14T13:54+00:00 +fpcsrc/packages/ide/fpmake.pp 2020-05-14T13:54+00:00 +fpcsrc/packages/ide/fpswitch.pas 2022-05-26T16:24+00:00 +fpcsrc/packages/ncurses/src/form.pp 2020-05-14T13:54+00:00 +fpcsrc/packages/ncurses/src/ncurses.pp 2020-05-14T13:54+00:00 +fpcsrc/packages/webidl/fpmake.pp 2022-11-19T17:36+00:00 +fpcsrc/rtl/inc/ufloat128.pp 2022-05-26T16:24+00:00 +fpcsrc/rtl/inc/ufloatx80.pp 2022-05-26T16:24+00:00 +fpcsrc/rtl/linux/i386/si_c21.inc 2022-11-19T17:36+00:00 +fpcsrc/rtl/linux/powerpc64/si_c.inc 2022-11-19T17:36+00:00 +fpcsrc/rtl/linux/powerpc64/si_g.inc 2022-11-19T17:36+00:00 +fpcsrc/rtl/linux/x86_64/si_c.inc 2021-06-13T15:32+00:00 +fpcsrc/rtl/unix/dl.pp 2020-05-14T13:54+00:00 +fpcsrc/tests/utils/testsuite/utests.pp 2020-08-19T00:44+00:00 +fpcsrc/tests/webtbs/tw36934a.pp 2022-05-26T16:24+00:00 +fpcsrc/tests/webtbs/tw36934b.pp 2022-05-26T16:24+00:00 +fpcsrc/utils/fpcm/fpcmmain.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpcm/fpmake.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpdoc/dglobals.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpdoc/fpclasschart.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpdoc/fpdoc.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpdoc/makeskel.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpdoc/unitdiff.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpmake.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/fpmake_add.inc 2020-05-14T13:54+00:00 +fpcsrc/utils/fpmake_proc.inc 2020-05-14T13:54+00:00 +fpcsrc/utils/instantfpc/fpmake.pp 2020-05-14T13:54+00:00 +fpcsrc/utils/instantfpc/ifpc.pas 2020-05-14T13:54+00:00 +fpcsrc/utils/instantfpc/instantfpc.pas 2020-05-14T13:54+00:00 +fpcsrc/utils/pas2jni/pas2jni.pas 2022-11-19T17:36+00:00 +fpcsrc/utils/relpath.pas 2020-05-14T13:54+00:00 diff --git a/tests/control b/tests/control new file mode 100644 index 00000000..971d88e9 --- /dev/null +++ b/tests/control @@ -0,0 +1,12 @@ +Tests: run-upstream-testsuite +# Building the testsuite requires at least Makefiles to be made +Restrictions: rw-build-tree, allow-stderr +# Running the testsuite as root can change the system time; not sure +# if this warrants a: +# Restrictions: breaks-testbed +# +# binutils is the only relevant difference that I could find between +# autopkgtest.u.c and ci.d.n (maybe needed for webtbs/tw0876) +# build-essential is needed to build some c/c++ objects used for testing +# zlib1g-dev is needed for at least test/packages/zlib/tzlib1.pp +Depends: @, binutils, build-essential, zlib1g-dev diff --git a/tests/ref_fail_amd64 b/tests/ref_fail_amd64 new file mode 100644 index 00000000..b1d8ada2 --- /dev/null +++ b/tests/ref_fail_amd64 @@ -0,0 +1,45 @@ +# upstream references: http://www.freepascal.org/testsuite/cgi-bin/testsuite.cgi +# code comment: this test test needs dynamic dfa to work properly +test/opt/tdfa11 +# code comment: this test will work only as soon as we have global dfa +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/timplements4a +test/timplements4b +test/tlibrary2 +test/tset6 +# doesn't fail upstream +test/tunistr7 +test/tweaklib2 +# doesn't fail upstream +test/twide7 +# doesn't fail upstream +tbs/tb0528 +# Next line fails on autopkgtest.u.c but not on my laptop or ci.d.n +# code comment: This test needs C libraries +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw16949b +webtbs/tw17236 +webtbs/tw17904 +webtbs/tw22744b +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw29957 +webtbs/tw3930 +webtbs/tw3964b +# pass instead of fail +webtbs/tw4809 +webtbs/tw8730c +webtbs/tw9089c +webtbs/tw9089d +# fails upstream with "-Fd" but not with "-Cg -O2 -Fd" +# assembler test that doesn't fail... +webtbf/tw22665b +webtbf/tw25862 +# Maybe only fails under Kylix +webtbf/tw3930a diff --git a/tests/ref_fail_arm64 b/tests/ref_fail_arm64 new file mode 100644 index 00000000..007b2769 --- /dev/null +++ b/tests/ref_fail_arm64 @@ -0,0 +1,39 @@ +../packages/rtl-generics/tests/testrunner.rtlgenerics +test/opt/tdfa11 +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/timplements4a +test/timplements4b +test/tlibrary2 +test/tsafecall1 +test/tsafecall2 +test/tsafecall3 +test/tsafecall4 +test/tset6 +test/tunistr7 +test/tweaklib2 +test/twide7 +test/units/fmtbcd/tfmtbcd +tbs/tb0621 +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw16949b +webtbs/tw17904 +webtbs/tw2242 +webtbs/tw22744b +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw3157 +webtbs/tw36179 +webtbs/tw3930 +webtbs/tw3964b +webtbs/tw4809 +webtbs/tw8730c +webtbs/tw9089c +webtbs/tw9089d +webtbf/tw25862 +webtbf/tw3930a diff --git a/tests/ref_fail_armel b/tests/ref_fail_armel new file mode 100644 index 00000000..e125d8d8 --- /dev/null +++ b/tests/ref_fail_armel @@ -0,0 +1,56 @@ +../packages/rtl-generics/tests/testrunner.rtlgenerics +../packages/rtl-objpas/tests/testrunner.rtlobjpas +test/cg/tcalext6 +test/cg/tm128 +test/opt/tdfa11 +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/texception4 +test/tfma1arm +test/theapthread +test/timplements4a +test/timplements4b +test/tinlrange1 +test/tinlrange3 +test/tlibrary2 +test/tsafecall1 +test/tsafecall2 +test/tsafecall3 +test/tsafecall4 +test/tset6 +test/tunistr7 +test/tweaklib2 +test/twide7 +test/units/fmtbcd/tfmtbcd +tbs/tb0621 +tbs/tb0643 +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw11563 +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw16263b +webtbs/tw16949b +webtbs/tw17904 +webtbs/tw22744 +webtbs/tw22744b +webtbs/tw22992 +webtbs/tw23185 +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw3157 +webtbs/tw3160a +webtbs/tw3160b +webtbs/tw3161 +webtbs/tw32398 +webtbs/tw36179 +webtbs/tw3930 +webtbs/tw3964b +webtbs/tw4809 +webtbs/tw8730c +webtbs/tw9089c +webtbs/tw9089d +webtbf/tw25862 +webtbf/tw3930a diff --git a/tests/ref_fail_armhf b/tests/ref_fail_armhf new file mode 100644 index 00000000..5532b11e --- /dev/null +++ b/tests/ref_fail_armhf @@ -0,0 +1,56 @@ +../packages/rtl-generics/tests/testrunner.rtlgenerics +../packages/rtl-objpas/tests/testrunner.rtlobjpas +test/cg/tcalext6 +test/cg/tm128 +test/opt/tdfa11 +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/timplements4a +test/timplements4b +test/tinlrange1 +test/tinlrange3 +test/tlib1b +test/tlibrary2 +test/tsafecall1 +test/tsafecall2 +test/tsafecall3 +test/tsafecall4 +test/tset6 +test/tunistr7 +test/tweaklib2 +test/twide7 +test/units/fmtbcd/tfmtbcd +tbs/tb0621 +tbs/tb0643 +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw11563 +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw13628b +webtbs/tw14958b +webtbs/tw16263b +webtbs/tw16949b +webtbs/tw17904 +webtbs/tw22744 +webtbs/tw22744b +webtbs/tw22992 +webtbs/tw23185 +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw3157 +webtbs/tw36179 +webtbs/tw3930 +webtbs/tw3964b +webtbs/tw4809 +webtbs/tw6586b +webtbs/tw6822c +webtbs/tw7838b +webtbs/tw8730c +webtbs/tw8730d +webtbs/tw9089c +webtbs/tw9089d +webtbf/tw25862 +webtbf/tw3930a diff --git a/tests/ref_fail_i386 b/tests/ref_fail_i386 new file mode 100644 index 00000000..cad2f16b --- /dev/null +++ b/tests/ref_fail_i386 @@ -0,0 +1,32 @@ +test/cg/tm128 +test/opt/tdfa11 +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/timplements4a +test/timplements4b +test/tlibrary2 +test/tset6 +test/tunistr7 +test/tweaklib2 +test/twide7 +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw16949b +webtbs/tw17904 +webtbs/tw22744 +webtbs/tw22744b +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw37926 +webtbs/tw3930 +webtbs/tw3964b +webtbs/tw4809 +webtbs/tw8730c +webtbs/tw9089c +webtbs/tw9089d +webtbf/tw18225b +webtbf/tw3930a diff --git a/tests/ref_fail_ppc64el b/tests/ref_fail_ppc64el new file mode 100644 index 00000000..3ac46519 --- /dev/null +++ b/tests/ref_fail_ppc64el @@ -0,0 +1,57 @@ +../packages/rtl-generics/tests/testrunner.rtlgenerics +test/opt/tdfa11 +test/opt/tdfa8 +test/packages/webtbs/tw14265 +test/tarray15 +test/timplements4a +test/timplements4b +test/tlib1b +test/tlibrary2 +test/tsafecall1 +test/tsafecall2 +test/tsafecall3 +test/tsafecall4 +test/tset6 +test/tunistr7 +test/tweaklib2 +test/twide7 +test/units/fmtbcd/tfmtbcd +test/units/system/ttrig +tbs/tb0528 +tbs/tb0621 +webtbs/tw0876 +Note: This test needs C libraries +webtbs/tw12038 +webtbs/tw12704b +webtbs/tw13628b +webtbs/tw14958b +webtbs/tw16263b +webtbs/tw16949b +webtbs/tw17236 +webtbs/tw17904 +webtbs/tw20003 +webtbs/tw2242 +webtbs/tw22744b +webtbs/tw24863 +webtbs/tw26481 +webtbs/tw2886 +webtbs/tw30329 +webtbs/tw3157 +webtbs/tw36179 +webtbs/tw36863 +webtbs/tw3930 +webtbs/tw3964b +webtbs/tw4809 +webtbs/tw6586b +webtbs/tw6822c +webtbs/tw7838b +webtbs/tw7851a +webtbs/tw8153a +webtbs/tw8730c +webtbs/tw8730d +webtbs/tw9089c +webtbs/tw9089d +webtbs/tw9306a +webtbs/tw9306b +webtbf/tw25862 +webtbf/tw3930a diff --git a/tests/run-upstream-testsuite b/tests/run-upstream-testsuite new file mode 100755 index 00000000..a169b21a --- /dev/null +++ b/tests/run-upstream-testsuite @@ -0,0 +1,81 @@ +#!/bin/sh +# This script was made by Paul Gevers +# It is licensed under the same license as the fpc package + +set -e # Make sure the test fails if a command fails +echo starting run-upstream-testsuite +FULL_TARGET=`fpc -iSP`-`fpc -iSO` # x86_64-linux +FPC_VER=`fpc -iV` +DEB_HOST_MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH` +DEB_HOST_ARCH=`dpkg-architecture -qDEB_HOST_ARCH` +# Make sure we use the installed fpcmake +export FPCMAKE=`which fpcmake`-${FPC_VER} +TESTUNITDIRROOT=fpcsrc/tests/tstunits +TESTUNITDIR=${TESTUNITDIRROOT}/${FULL_TARGET} +LIBDIR=/usr/lib/${DEB_HOST_MULTIARCH}/fpc/${FPC_VER} +UTESTS=fpcsrc/tests/utils/testsuite/utests +if [ -f fpcsrc/tests/Makefile ] ; then + MAKEMAKEFILES=false +else + MAKEMAKEFILES=true +fi +echo about to run debian/rules makefiles +[ "$MAKEMAKEFILES" = "true" ] && debian/rules makefiles +echo debian/rules makefiles builds the rtl which caused problems later +echo so clean up the rtl that was just built. +find . -name '*.o' -delete +find . -name '*.ppu' -delete + +echo Generate missing configuration file for testsuite +[ -f ${UTESTS}.cfg ] || grep '^ Def' ${UTESTS}.pp > ${UTESTS}.cfg + +echo If the make target is run without intervention, the units target is build and +echo installed, while we want to test with the installed units. +[ -d ${TESTUNITDIR} ] || mkdir ${TESTUNITDIR} +for FILE in ${LIBDIR}/units/$FULL_TARGET/*/*.[op]* ; do + [ -h ${TESTUNITDIR}/${FILE##*/} ] || ln -s ${FILE} ${TESTUNITDIR} +done +echo Compiled > ${TESTUNITDIRROOT}/rtl-stamp.${FULL_TARGET} +echo Compiled > ${TESTUNITDIRROOT}/fpcunit-stamp.${FULL_TARGET} +echo Compiled > ${TESTUNITDIRROOT}/packages-stamp.${FULL_TARGET} + +echo 'Some tests need additional objects, lets make them first (why are they not' +echo 'automatically build?)' +mkdir -p fpcsrc/tests/test/cg/obj/${FULL_TARGET##*-}/${FULL_TARGET%%-*} #linux/x86_64 +make -C fpcsrc/tests create_c_objects TEST_FPC=`which fpc` TEST_CCOMPILER=gcc +echo 'Run the real test suite; this does not fail on its own' +LC_ALL=C.UTF-8 make -C fpcsrc/tests all TEST_FPC=`which fpc` +echo The next line just creates some nice output +make -C fpcsrc/tests digest TEST_FPC=`which fpc` + +echo Let\'s save some of the output +if [ -n "${ADT_ARTIFACTS}" ] ; then + cp -p fpcsrc/tests/output/${FULL_TARGET}/faillist ${ADT_ARTIFACTS} + cp -p fpcsrc/tests/output/${FULL_TARGET}/log ${ADT_ARTIFACTS} + cp -p fpcsrc/tests/output/${FULL_TARGET}/longlog ${ADT_ARTIFACTS} +fi + +echo Compare the new results with known results if we have them +REF_FILE=debian/tests/ref_fail_${DEB_HOST_ARCH} +if [ -f ${REF_FILE} ] ; then + echo + echo Difference between expected failures and current failures: + diff -u ${REF_FILE} fpcsrc/tests/output/${FULL_TARGET}/faillist || true + echo + echo "Checking (and fail if so) for new failures:" + if diff ${REF_FILE} fpcsrc/tests/output/${FULL_TARGET}/faillist | grep \>\ >/dev/null ; then + echo "Unexpected failures" + return 1 + else + echo "No new failures" + fi +else + echo "No reference file found for $DEB_HOST_ARCH. Please consider adding one." +fi + +echo For debugging, add clean target +if [ -n "$CLEAN" ] ; then + make -C fpcsrc/tests digest TEST_FPC=`which fpc` + debian/rules clean-makefiles + rm debian/deb-build-fpc.cfg +fi diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 00000000..f9b3be1b --- /dev/null +++ b/upstream/metadata @@ -0,0 +1,2 @@ +Archive: SourceForge +Repository: https://svn.code.sf.net/p/freepascal/code/ diff --git a/watch b/watch new file mode 100644 index 00000000..6eb30a12 --- /dev/null +++ b/watch @@ -0,0 +1,8 @@ +version=3 +opts=uversionmangle=s/(RC)/\L$1/;\ +s/(\d)-?((rc|pre|dev|beta|alpha|b|a))/$1~$2/;\ +s/\-\d//;\ +s/\-src//,\ +dversionmangle=s/\+dfsg// \ +https://qa.debian.org/watch/sf.php/freepascal/fpcbuild-(.+\..+)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz)) \ +debian debian/orig-tar.sh -- 2.30.2