LongDirtyAnimAlf / fpcupdeluxe

A GUI based installer for FPC and Lazarus
486 stars 89 forks source link

Enable regular builds for fpcupdeluxe on darwin-aarch64 #344

Open michael-ring opened 3 years ago

michael-ring commented 3 years ago

I have built fpcupdeluxe quite often ion the last weeks and have also have done quite a number of installs & rebuilts with it, to my knowledge it now works well on darwin-aarch64, can it get added to the regular releases on github?

LongDirtyAnimAlf commented 3 years ago

For sure !! It would make me very happy to be able to release a good working fpcupdeluxe. But not yet. Final tweaks are made and need to be tested. I guess a couple of days ... And, I need your help in signing naturally ... ;-)

michael-ring commented 3 years ago

I think I found a reasonable way to do the signing, please ping me when you have a little spare time to test my ideas....

michael-ring commented 3 years ago

I changed my binutils buildscript to generate signed versions of binutils for aarch64, do you need any other target? I still have to check gdb, at least for arm it does not work, I need to use x86_64 built version.... Please ignore wrong directory/filenames

/Users/ring/fpcupdeluxe/cross/bin/riscv32-none-elf/riscv32-embedded-ld
/Users/ring/fpcupdeluxe/cross/bin/riscv32-none-elf/riscv32-embedded-objcopy
/Users/ring/fpcupdeluxe/cross/bin/riscv32-none-elf/riscv32-embedded-as
/Users/ring/fpcupdeluxe/cross/bin/riscv32-none-elf/riscv32-embedded-ar
/Users/ring/fpcupdeluxe/cross/bin/avr/avr-embedded-ld
/Users/ring/fpcupdeluxe/cross/bin/avr/avr-embedded-as
/Users/ring/fpcupdeluxe/cross/bin/avr/avr-embedded-ar
/Users/ring/fpcupdeluxe/cross/bin/avr/avr-embedded-objcopy
/Users/ring/fpcupdeluxe/cross/bin/arm-none-eabi/arm-embedded-as
/Users/ring/fpcupdeluxe/cross/bin/arm-none-eabi/arm-embedded-ar
/Users/ring/fpcupdeluxe/cross/bin/arm-none-eabi/arm-embedded-ld
/Users/ring/fpcupdeluxe/cross/bin/arm-none-eabi/arm-embedded-objcopy
/Users/ring/fpcupdeluxe/cross/bin/riscv64-none-elf/riscv64-embedded-objcopy
/Users/ring/fpcupdeluxe/cross/bin/riscv64-none-elf/riscv64-embedded-as
/Users/ring/fpcupdeluxe/cross/bin/riscv64-none-elf/riscv64-embedded-ar
/Users/ring/fpcupdeluxe/cross/bin/riscv64-none-elf/riscv64-embedded-ld
/Users/ring/fpcupdeluxe/cross/bin/mipsel-sde-elf/mipsel-embedded-ld
/Users/ring/fpcupdeluxe/cross/bin/mipsel-sde-elf/mipsel-embedded-objcopy
/Users/ring/fpcupdeluxe/cross/bin/mipsel-sde-elf/mipsel-embedded-ar
/Users/ring/fpcupdeluxe/cross/bin/mipsel-sde-elf/mipsel-embedded-as

Found a fix for gdb...
michael-ring commented 3 years ago

binutils for avr-embedded are missing, I can provide them (see above)

LongDirtyAnimAlf commented 3 years ago

Yes. Please make them available somewhere for me. I will zip them and put them in the right spot for fpcupdeluxe to find them on GitHub. Many thanks.

LongDirtyAnimAlf commented 3 years ago

And, if fpcupdeluxe runs ok, I would welcome a signed version of fpcupdeluxe itself, when a final version is release-ready.

michael-ring commented 3 years ago

http://temp.michael-ring.org/signedtools.zip

I have started adding some extratools like st-link and avarice, keep them out if you do not like to also put those in the cross/bin tree.... also, feel free to rename them as it fits your needs, i will then adjust my buildscript accordingly.

michael-ring commented 3 years ago

Do not yet invest too much time in this, I will have to doublecheck signed binaries for x86_64 on Darwin and some patch that needs to get applied for gdb on avr, but for this I have to also do windows builds so that others can test things work as expected....

LongDirtyAnimAlf commented 3 years ago

Your tools !! https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/tag/darwinarm64crossbins_v1.1

michael-ring commented 3 years ago

TnX, did some building, avr has the same issue as for Darwin-x86_64, rtl_extras asre built and faill...

Also xtensa-freertos fails:
fpcupdeluxe: info: FPCCrossInstaller (BuildModule: FPC): Building module FPC...
fpcupdeluxe: info: FPC xtensa-freertos cross-builder: Detected source version FPC (compiler): 3.3.1
fpcupdeluxe: info: FPCCrossInstaller (BuildModuleCustom: FPC): Looking for crosstools and crosslibs on system. Please wait.
fpcupdeluxe: TAny_freertos-xtensa: Found correct binary utilities in directory /Users/ring/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin
fpcupdeluxe: ERROR: Failed to get crosslibrary

Fpcupdeluxe failed due to missing cross libraries.
Looking for fpcupdeluxe cross-tools on GitHub (if any).
Going to look for the right cross-libraries. Can (will) take some time !
Looking for: CrossLibsFreeRTOSXtensa
Looking for libs in: https://api.github.com/repos/LongDirtyAnimAlf/fpcupdeluxe/releases/tags/crosslibs_v1.3
Looking for libs in: https://api.github.com/repos/LongDirtyAnimAlf/fpcupdeluxe/releases/tags/crosslibs_v1.2
Looking for libs in: https://api.github.com/repos/LongDirtyAnimAlf/fpcupdeluxe/releases/tags/crosslibs_v1.1
Looking for libs in: https://api.github.com/repos/LongDirtyAnimAlf/fpcupdeluxe/releases/tags/crosslibs_v1.0
No luck in getting then cross-tools ... aborting.
LongDirtyAnimAlf commented 3 years ago

Might be a case issue. Was: CrossLibsFreeRTOSxtensa.zip New: CrossLibsFreeRTOSXtensa.zip

Please test again.

michael-ring commented 3 years ago

Still not working:

Looking for: CrossLibsFreeRTOSXtensa Looking for libs in: https://api.github.com/repos/LongDirtyAnimAlf/fpcupdeluxe/releases/tags/crosslibs_v1.3 ...

LongDirtyAnimAlf commented 3 years ago

I think you are rate-limited now. The GitHub api has rate limiting: 128 requests per hour. Please be patient ... ;-)

michael-ring commented 3 years ago

I have spent quite some time on making gdb & other tools link static so that they can be codesigned without issues (don't ask.... it was a mess)... Github repo for buildscript will be:

https://github.com/michael-ring/develtools4fpc

Now that I am done I have everything codesigned for Darwin aarch64 and x86_64, next step is Windows... I have also switched building to arm-none-eabi- prefix as discussed in the other issue...

There is one opwn topic, openocd comes with tons of scripts that need to be available for it to work, the good question is where to put them....

In a standard install files end up here:

/usr/local/bin
/usr/local/share/openocd
/usr/local/share/openocd/contrib
/usr/local/share/openocd/scripts
/usr/local/share/openocd/OpenULINK

what I could do is put openocd to:

cross/bin/arm-embedded/openocd

and then put all the stuff from share in a tcl directory, also in bin:

cross/bin/arm-embedded/tcl/contrib
cross/bin/arm-embedded/tcl/scripts
cross/bin/arm-embedded/tcl/OpenULINK

I do not particulary like that solution, only plus point is that this can be distributed that way without any modification to fpcupdeluxe.

What do you think?

LongDirtyAnimAlf commented 3 years ago

Fpcupdeluxe puts all externals in a ccr directory, inside its own install directory. All extra modules are placed there. Perhaps it would be good to also place the new tools there ?

michael-ring commented 3 years ago

why not..., it really does not matter to me, I used cross/bin because the binutils and gdb are also there. What will I have to do to create something that can be distributed to the ccr directory? Do you want me to send you zips or should I create releases for

https://github.com/michael-ring/develtools4fpc

How should the directory structure inside of the zip's / releases look like?

LongDirtyAnimAlf commented 3 years ago

Please create a release ! The directory structure is not that important. I will create a special (hidden) installer for these tools that can handle everything.

michael-ring commented 3 years ago

Building xtensa now worked. From my point of view aarch64 is ready for prime-time, close this bug if you like......

I will create a new issue for integration develtools4fpc when I am done with testing...

LongDirtyAnimAlf commented 3 years ago

Thanks for all your help Michael !! Closing.

LongDirtyAnimAlf commented 3 years ago

Hello Michael,

This is the first binary I signed myself with your credentials. Would you mind testing it ? Thanks !

https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/download/1.8.2n/fpcupdeluxe-aarch64-darwin-cocoa.zip https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/download/1.8.2n/fpcupdeluxe-x86_64-darwin-cocoa.zip

michael-ring commented 3 years ago

On aarch64 things work as expected, I get the message that the app was downloaded from the internet and after accepting that fpcupdeluxe starts and I could successfully rebuild fpc+lazaraus+embedded.

On x86_64 things do not work, this entry may help, seems like notarization is needed in addition:

https://stackoverflow.com/questions/59879731/apple-cannot-check-it-for-malicious-software

michael-ring commented 3 years ago

fpc specific tool:

https://github.com/neurolabusc/NotarizeFPC