Build current FPC and Lazarus for Raspbian: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Build current FPC and Lazarus for Raspbian
| Old | New | Line | |
|---|---|---|---|
| 1 | + | > **Note:** Content here is quite out of date. As the Raspberry Pi OS is just another Debian based distribution, the reader is refered to [[Installing Lazarus on Linux]] - that page is kept up to date and contains everything you need. (Please don't update this page unless you are committed to maintaining it in the future) | |
| 2 | + | ||
| 3 | + | 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.6 which includes FPC 3.0.4, most recent at the time of writing. Adjust accordingly. | |
| 4 | + | ||
| 5 | + | Requirements: | |
| 6 | + | ||
| 7 | + | - Raspberry Pi 4 Model B, 4 GB (less memory models would require swap), with appropriate cooling (author uses aluminum case that doubles as heatsink) to avoid throttling due to excessive heat | |
| 8 | + | - Latest Raspbian Buster fully updated | |
| 9 | + | ||
| 10 | + | Steps: | |
| 11 | + | ||
| 12 | + | 1. Install subversion: `sudo apt install subversion` | |
| 13 | + | 2. Get bootstrap [FPC compiler](https://sourceforge.net/projects/freepascal/files/Linux/3.0.2/fpc-3.0.2.arm-linux-eabihf-raspberry.tar/download). The latest compiler is compiled with the previous version of itself. | |
| 14 | + | 3. Extract compiler. This will create a `fpc-3.0.2.arm-linux` directory. (NOTE: this folder must be on a linux FS \[like Documents folder\] as FAT doesn't allow the next step to work). | |
| 15 | + | 4. In this directory, as pi user, run `./install.sh` | |
| 16 | + | 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. | |
| 17 | + | 6. Temporarily add FPC install directory to PATH: `export PATH=$PATH:$HOME/fpc-3.0.2/bin`. If you have to reboot for any reason before completing the FPC build, you have to do this step again. | |
| 18 | + | 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. | |
| 19 | + | 8. Non-step note: the following steps are mostly based on [this](https://wiki.lazarus.freepascal.org/How_to_setup_a_FPC_and_Lazarus_Ubuntu_repository#Creating_the_deb_files_yourself) | |
| 20 | + | 9. Install development libraries: `sudo apt install libgtk2.0-dev libgpm-dev libncurses-dev` | |
| 21 | + | 10. `mkdir ~/pascal` | |
| 22 | + | 11. `cd ~/pascal` | |
| 23 | + | 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. | |
| 24 | + | 13. `svn co https://svn.freepascal.org/svn/lazarus/tags/lazarus_2_0_8 lazarus` | |
| 25 | + | 14. `cd lazarus/tools/install` | |
| 26 | + | 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;;`. Now save the changes and exit. | |
| 27 | + | 16. Run the script: `./create_fpc_deb.sh fpc ~/pascal/fpc/`. This will compile the latest compiler with the bootstrap compiler. It takes about 11 minutes. A `.deb` file will be created: `fpc-laz_3.0.4-yymmdd_armhf.deb`; the exact name will be shown at the end of the compilation. Rename the file with (NOTE: do not type the brackets): mv \[file name shown at end of compilation\] `fpc-laz_3.0.4_armhf.deb` | |
| 28 | + | 17. You have completed the FPC build. Reboot the Pi to get rid of the temporary PATH. | |
| 29 | + | 18. Uninstall the bootstrap FPC: `rm -rf ~/.fpc.cfg ~/.config/fppkg.cfg ~/.fppkg ~/fpc-3.0.2 ~/tmp`. Check what you just did: `fpc abcd` should say command is not found. | |
| 30 | + | 19. Install the just created FPC Debian package: `sudo dpkg -i ~/pascal/lazarus/tools/install/fpc-laz_3.0.4_armhf.deb`. Check if it works: `fpc abcd` should show the newly installed FPC compiler. | |
| 31 | + | 20. `cd ~/pascal/lazarus/tools/install` | |
| 32 | + | 21. `./create_fpc_deb.sh fpc-src ~/pascal/fpc/`. This builds the FPC source package in about 3 minutes: `fpc-src_3.0.4-yymmdd_armhf.deb`. Rename with: mv `fpc-src_3.0.4-yymmdd_armhf.deb` `fpc-src_3.0.4_armhf.deb` | |
| 33 | + | 22. Edit `create_lazarus_deb.sh`, look for line with the following content: `echo "$Arch is not supported."`, (currently line 86). Copy the 3 lines above it and paste them just below themselves: at this time it is copy lines 83 to 85 and paste them between lines 85 and 86. In the just pasted lines (lines 86-88), replace `sparc` with `armhf`, and `ppcsparc` with `ppcarm`. Look for the first `fi` just below; copy and paste it below itself (copy line 91 below itself, so line 91 and 92 read the same). For you coders out there, you are adding another `if` to a nested `if`, with its corresponding `fi`. Now save and exit. | |
| 34 | + | 23. `./create_lazarus_deb.sh`. This will build the Lazarus IDE Debian package `lazarus-project_2.0.8-0_armhf.deb`. It will take about 15 minutes. | |
| 35 | + | 24. Install the FPC source and Lazarus packages: `sudo dpkg -i fpc-src_3.0.4_armhf.deb lazarus-project_2.0.8-0_armhf.deb` | |
| 36 | + | 25. Save `*.deb` to another location, to reinstall later if needed or to share with friends: remember this is free software. | |
| 37 | + | 26. `cd`, `rm -rf ~/pascal ~/tmp` | |
| 38 | + | ||
| 39 | + | You can now finally enjoy your fully working, fully up to date Lazarus. Find it in the Programming section of the Raspberry menu. A message titled "Error in EditorMacroScript" will be shown on first run; this also appears in the Raspbian Lazarus, reason still unknown to the original author of this page. Now try to install a package, for example `lazreport`; it will work! | |
| 40 | + | ||
| 41 | + | Want to help the FPC/Lazarus community? Host the resulting `.deb` packages somewhere on the Internet and drop a note on the forum to let everyone know; rinse and repeat for every release. | |
| 42 | + | ||
| 43 | + | DISCLAIMER: these are UNOFFICIAL packages created from modified official sources. DO NOT ASK FOR SUPPORT ANYWHERE, neither on the forums or with the author of this article; use at your own risk. | |
| 44 | + | ||
| 45 | + | ### Upgrading | |
| 46 | + | ||
| 47 | + | The following is not written by whoever worked out this process in the first place. It is completely un-authoritative, but it worked for me to upgrade from Laz 2.0.8 to 2.0.10. I make no other claims what-so-ever - Use at your own risk. *The bracketed numbers in the steps refer back to the original version (until someone edits it)* | |
| 48 | + | ||
| 49 | + | Once you have followed the above steps once, you can shortcut the process a little to upgrade. In particular, Steps 1 - 8 should not be necessary, as we have the previous version already installed. | |
| 50 | + | ||
| 51 | + | 1. \(9\) Update development libraries: `sudo apt upgrade libgtk2.0-dev libgpm-dev libncurses-dev` | |
| 52 | + | 2. \(10\) if required, `mkdir ~/pascal` | |
| 53 | + | 3. \(11\) `cd ~/pascal` | |
| 54 | + | 4. If you didn't clean out the temp files from last time, do so now: `rm -rf fpc lazarus` | |
| 55 | + | 5. \(12\) `svn co https://svn.freepascal.org/svn/fpc/tags/`*`[required-release]`*` fpc`. *(if necessary, browse <https://svn.freepascal.org/svn/fpc/tags> to find the exact release.)* | |
| 56 | + | 6. \(13\) `svn co https://svn.freepascal.org/svn/lazarus/tags/`*`[required-release]`*` lazarus`. *(if necessary, browse <https://svn.freepascal.org/svn/lazarus/tags> to find the exact release.)* | |
| 57 | + | 7. \(14\) `cd lazarus/tools/install` | |
| 58 | + | 8. \(15\) Edit `create_fpc_deb.sh`, look for line with the following content: `arm) ppcbin=arm; FPCArch=arm;;`, (currently line 109). | |
| 59 | + | 1. Copy and paste this line below itself, so it will appear twice. | |
| 60 | + | 2. Edit this copy to read like this: `armhf) ppcbin=arm; FPCArch=arm;;`. Now save the changes and exit. | |
| 61 | + | 9. \(16\) Run the script: `./create_fpc_deb.sh fpc ~/pascal/fpc/`. This will compile the latest compiler with the bootstrap compiler. It takes about 11 minutes. A `.deb` file will be created: `fpc-laz_`*`[fpc release]`*`-yymmdd_armhf.deb`; the exact name will be shown at the end of the compilation. | |
| 62 | + | 10. Rename the file with (NOTE: do not type the brackets): `mv `*`[file name shown at end of compilation]`*` fpc-laz_`*`[fpc release]`*`_armhf.deb` | |
| 63 | + | 11. \(17\) You have completed the FPC build. *Rebooting the Pi should **not** be necessary, as we made no temporary PATH. (Yay)* | |
| 64 | + | 12. \(18\) Check/uninstall the bootstrap FPC: `rm -rf ~/.fpc.cfg ~/.config/fppkg.cfg ~/.fppkg ~/fpc-`*`[fpc_release]`*` ~/tmp`. *(If you cleaned up after the initial build, you should only find `~/tmp` this time)* | |
| 65 | + | 13. Check what you just did: `fpc abcd` should say command is not found. | |
| 66 | + | 14. \(19\) Install the just created FPC Debian package: `sudo dpkg -i ~/pascal/lazarus/tools/install/fpc-laz_`*`[fpc-release]`*`_armhf.deb`. *(-i can also upgrade - the message should be "installing \[new ver\] over \[old ver\]")* | |
| 67 | + | 15. Check if it works: `fpc abcd` should show the newly installed FPC compiler. | |
| 68 | + | 16. \(20\) `cd ~/pascal/lazarus/tools/install` | |
| 69 | + | 17. \(21\) `./create_fpc_deb.sh fpc-src ~/pascal/fpc/`. This builds the FPC source package `fpc-src_`*`[fpc-release]`*`-yymmdd_armhf.deb` in about 3 minutes. | |
| 70 | + | 18. Rename with: `mv fpc-src_`*`[fpc-release]-yymmdd`*`_armhf.deb` `fpc-src_`*`[fpc-release]`*`_armhf.deb` | |
| 71 | + | 19. \(22\) Edit `create_lazarus_deb.sh`, | |
| 72 | + | 1. Look for line with the following content: `echo "$Arch is not supported."`, (currently line 86). | |
| 73 | + | 2. Copy the 3 lines above it and paste them just below themselves: at this time it is copy lines 83 to 85 and paste them between lines 85 and 86. | |
| 74 | + | 3. In the just pasted lines (lines 86-88), replace `sparc` with `armhf`, and `ppcsparc` with `ppcarm`. | |
| 75 | + | 4. Look for the first `fi` just below; copy and paste it below itself (copy line 91 below itself, so line 91 and 92 read the same). | |
| 76 | + | 5. (For you coders out there, you are adding another `if` to a nested `if`, with its corresponding `fi`.) | |
| 77 | + | 6. Now save and exit. | |
| 78 | + | 20. \(23\) `./create_lazarus_deb.sh`. This will build the Lazarus IDE Debian package `lazarus-project_`*`[version]`*`-0_armhf.deb`. It will take about 15 minutes. | |
| 79 | + | 21. \(24\) Install the FPC source and Lazarus packages: `sudo dpkg -i fpc-src_`*`[version]`*`_armhf.deb lazarus-project_`*`[version]`*`-0_armhf.deb` | |
| 80 | + | 22. \(25\) Save `*.deb` to another location, to reinstall later if needed or to share with friends: remember this is free software. | |
| 81 | + | 23. \(26\) `cd ~; rm -rf ~/pascal ~/tmp` | |
| 82 | + | ||
| 83 | + | DISCLAIMER: Same disclaimer as in the original article above - if anything, more so! | |
| 84 | + | ||
| 85 | + | --- | |
| 86 | + | *From the Free Pascal wiki, page "Build current FPC and Lazarus for Raspbian", as it stood on 2023-11-12 after a change by Dbannon, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* | |
| 87 | + | Category: Install | |
| 88 | + | Category: Linux | |
| 89 | + | Category: Raspberry Pi |
