Difference between revisions of "Build current FPC and Lazarus for Raspbian"

From Free Pascal wiki
Jump to navigationJump to search
m
m
Line 1: Line 1:
Raspbian Buster (based on Debian 10 Buster) has FPC and Lazarus available in the repositories, but they suffer from the same "design decisions" that don't allow for a nice experience, namely the smooth IDE rebuilding capability based on source packages that is possible with FPC/Lazarus official .deb packages vs the crippled experience with the official Debian/Raspbian packages. One wishes there were official FPC/Lazarus packages for Raspbian as there are for Intel Debian/Ubuntu, which are also frequently updated; not being that the case (at least for now), this page shows the steps for building your own FPC, FPC-source and Lazarus packages for Raspbian.
+
Raspbian Buster (based on Debian 10 Buster) has FPC and Lazarus available in the repositories, but they suffer from the same "design decisions" that don't allow for a nice experience, namely the smooth IDE rebuilding capability based on source packages that is possible with FPC/Lazarus official .deb packages vs the crippled experience with the official Debian/Raspbian packages. One wishes there were official FPC/Lazarus packages for Raspbian as there are for Intel Debian/Ubuntu, which are also frequently updated; not being that the case (at least for now), this page shows the steps for building your own FPC, FPC-source and Lazarus packages for Raspbian. Example shows steps for Lazarus 2.0.4 which includes FPC 3.0.4, most recent at the time of writing. Adjust accordingly.
  
 
Requirements:
 
Requirements:
Line 9: Line 9:
  
 
# Install subversion: <code>sudo apt install subversion</code>
 
# Install subversion: <code>sudo apt install subversion</code>
# Get bootstrap [https://sourceforge.net/projects/freepascal/files/Linux/3.0.2/fpc-3.0.2.arm-linux-eabihf-raspberry.tar/download FPC compiler]
+
# Get bootstrap [https://sourceforge.net/projects/freepascal/files/Linux/3.0.2/fpc-3.0.2.arm-linux-eabihf-raspberry.tar/download FPC compiler]. The latest compiler is compiled with the previous version of itself.
 
# Extract compiler. This will create a <code>fpc-3.0.2.arm-linux</code> directory.
 
# Extract compiler. This will create a <code>fpc-3.0.2.arm-linux</code> directory.
 
# In this directory, as pi user, run <code>./install.sh</code>
 
# In this directory, as pi user, run <code>./install.sh</code>
Line 20: Line 20:
 
# <code>cd ~/pascal</code>
 
# <code>cd ~/pascal</code>
 
# <code>svn co <nowiki>https://svn.freepascal.org/svn/fpc/tags/release_3_0_4</nowiki> fpc</code>, you have to be online for this and the next step to work.
 
# <code>svn co <nowiki>https://svn.freepascal.org/svn/fpc/tags/release_3_0_4</nowiki> fpc</code>, you have to be online for this and the next step to work.
 +
# <code>svn co <nowiki>https://svn.freepascal.org/svn/lazarus/tags/lazarus_2_0_4</nowiki> lazarus</code>
 +
# <code>cd lazarus/tools/install</code>
 +
# Edit <code>create_fpc_deb.sh</code>, look for line with the following content: <code>arm)    ppcbin=arm;  FPCArch=arm;;</code>, (currently line 109). Copy and paste this line below itself, so it will appear twice. Edit this copy to read like this: <code>armhf)  ppcbin=arm;  FPCArch=arm;;</code>
 +
# <code>./create_fpc_deb.sh fpc ~/pascal/fpc/</code>. This will compile the latest compiler with the bootstrap compiler.

Revision as of 06:31, 27 August 2019

Raspbian Buster (based on Debian 10 Buster) has FPC and Lazarus available in the repositories, but they suffer from the same "design decisions" that don't allow for a nice experience, namely the smooth IDE rebuilding capability based on source packages that is possible with FPC/Lazarus official .deb packages vs the crippled experience with the official Debian/Raspbian packages. One wishes there were official FPC/Lazarus packages for Raspbian as there are for Intel Debian/Ubuntu, which are also frequently updated; not being that the case (at least for now), this page shows the steps for building your own FPC, FPC-source and Lazarus packages for Raspbian. Example shows steps for Lazarus 2.0.4 which includes FPC 3.0.4, most recent at the time of writing. Adjust accordingly.

Requirements:

  • Raspberry Pi 4 4 GB (less memory models would require swap)
  • Latest Raspbian Buster fully updated

Steps:

  1. Install subversion: sudo apt install subversion
  2. Get bootstrap FPC compiler. The latest compiler is compiled with the previous version of itself.
  3. Extract compiler. This will create a fpc-3.0.2.arm-linux directory.
  4. In this directory, as pi user, run ./install.sh
  5. At the four prompts, answer Enter, n, n, n: this is, accept suggested directory /home/pi/fpc-3.0.2, no Textmode IDE, no documentation, no demos. Ignore tar warnings. Note the additional files written to /home/pi: .fpc.cfg, .config/fppkg.cfg, .fppkg/config/default. When the build is done, to delete this temporary bootstrap compiler these files and the /home/pi/fpc-3.0.2 install directory need to be deleted.
  6. Temporarily add FPC install directory to PATH: export PATH=$PATH:$HOME/fpc-3.0.2/bin. If you reboot before completing the build you have to do this step again.
  7. Test if all ok: fpc abcd. This invokes the just installed compiler trying to compile a non-existent file (abcd). A multiline message will be shown including the compiler version.
  8. Non-step note: the following steps are mostly based on this
  9. Install development libraries: sudo apt install libgtk2.0-dev libgpm-dev libncurses-dev
  10. mkdir ~/pascal
  11. cd ~/pascal
  12. svn co https://svn.freepascal.org/svn/fpc/tags/release_3_0_4 fpc, you have to be online for this and the next step to work.
  13. svn co https://svn.freepascal.org/svn/lazarus/tags/lazarus_2_0_4 lazarus
  14. cd lazarus/tools/install
  15. Edit create_fpc_deb.sh, look for line with the following content: arm) ppcbin=arm; FPCArch=arm;;, (currently line 109). Copy and paste this line below itself, so it will appear twice. Edit this copy to read like this: armhf) ppcbin=arm; FPCArch=arm;;
  16. ./create_fpc_deb.sh fpc ~/pascal/fpc/. This will compile the latest compiler with the bootstrap compiler.