Patch zu "-macosx_version_min has been renamed" Fehler

Antworten
Stevie
Beiträge: 43
Registriert: Di 27. Feb 2024, 22:40

Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von Stevie »

Hallo allerseits,

ich habe mich in den letzten Tagen mal mit der Erstellung von Patches für den Einsatz in FPCUpDeluxe beschäftigt und u.A. endlich mal einen Patch gegen die leidige Linker-Warnung gebaut, die einen seit XCode 15 unter macOS nervt:
-macosx_version_min has been renamed to -macos_version_min
Der Patch ist eigentlich ganz einfach, muss als Datei gespeichert und vor dem Bau der FPC/Laz-Umgebung unter "Setup +" bei "Add FPC Patch" eingetragen werden.

Code: Alles auswählen

--- fpcsrc/compiler/systems/t_darwin.pas	2024-03-08 13:21:33
+++ fpcsrc_patched/compiler/systems/t_darwin.pas	2024-03-08 13:25:40
@@ -354,7 +354,7 @@
       begin
         if MacOSXVersionMin.isvalid then
           begin
-            result:='-macosx_version_min '+MacOSXVersionMin.str;
+            result:='-macos_version_min '+MacOSXVersionMin.str;
           end
         else if iPhoneOSVersionMin.isvalid then
           begin
Für Lazarus habe ich auch noch einen, weiß aber nicht genau, ob das Tool create_lazarus_dmg.sh derzeit überhaupt relevant ist. Wahrscheinlich müsste man da wohl generell mal aufräumen, wenn ich das "-WM10.5" so sehe.

Code: Alles auswählen

--- lazarus/tools/install/macosx/create_lazarus_dmg.sh	2024-03-08 13:28:36
+++ lazarus_patched/tools/install/macosx/create_lazarus_dmg.sh	2024-03-08 13:27:54
@@ -118,7 +118,7 @@
 if [ "$ARCH" = "i386" ]; then
     LINKEROPTS="-WM10.5"
 else
-    LINKEROPTS="-k-macosx_version_min -k10.4 -XR/Developer/SDKs/MacOSX10.4u.sdk/"
+    LINKEROPTS="-k-macos_version_min"
 fi

 # copy sources
 
ACHTUNG: bitte Optionen wie "-WM"" aus den "Custom Options" entfernen, falls vorhanden, da die Übersetzung von Projekten mit einem "Error: ld: building fixups: pointer not aligned at ..." Fehler abbrechen.

ExDelphi
Beiträge: 3
Registriert: Fr 26. Apr 2024, 18:49

Re: Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von ExDelphi »

Hallo,

vielen Dank für Deinen Beitrag. Kannst Du einen Hinweis geben wie man für den Bau der FPC/Laz-Umgebung vorgeht?
Auch ist mir nicht klar, wie man mit dem Tool create_lazarus_dmg.sh umgeht.

Leider bin ich blutiger Mac Einsteiger und würde mich über einen Hilfe dazu sehr freuen.

Ich arbeite mit einem MacBook M1 und verzweifle gerade bei der Installation der Lazarus App bzw des Free Pascal Compiler.

Vielen Dank

Stevie
Beiträge: 43
Registriert: Di 27. Feb 2024, 22:40

Re: Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von Stevie »

Kennst Du fpcupdeluxe? Damit geht es fast kinderleicht. Mit einem M1 Macbook bitte folgendermaßen vorgehen:
  • Im Download-Ordner auspacken und dann in ein eigenes Verzeichnis unter /Users/DeinName/ legen, bspw. /Users/DeinName/fpcupdeluxe_builder/fpcupdeluxe-2.4.0d.app.
    DAS IST WICHTIG
  • fpcupdeluxe aus dem neuen Verzeichnis starten
    DAS IST NOCH WICHTIGER
  • Mit "Set install path" das Basisverzeichnis deiner Umgebung setzen, z.B. /Users/DeinName/fpcupdeluxe
  • Patches unter Setup+ konfigurieren, wie im ersten Post beschrieben
  • Gewünschte Umgebung auswählen, bspw. "Fixes" und bauen
  • Warten, bis Lazarus-Icon auf dem Desktop erscheint
  • Anklicken und freuen.
... falls es Probleme gibt, sonst einfach noch mal melden.

ExDelphi
Beiträge: 3
Registriert: Fr 26. Apr 2024, 18:49

Re: Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von ExDelphi »

Hallo Stevie,

vielen Dank für diese rasante Antwort. Nein, fpcupdeluxe war mir noch kein Begriff.
Daher habe ich das erste Posting auch nicht richtig verstanden.

Also habe ich mich eben gleich mal ran gemacht, das nachzuvollziehen was du dankenswerterweise erklärt hast :)
Leider bin ich aber am Punkt "Patches unter Setup+ konfigurieren, wie im ersten Post beschrieben" deines letzten Postings gescheitert, da mich die Anwendung weder das Verzeichnis meines Patch-Ordners (fpcsrc_patched) noch eines Unterordners (fpcsrc_patched/compiler/systems) oder die geänderte Datei (fpcsrc_patched/compiler/systems/t_darwin.pas) auswählen ließ. Ich konnte zwar die Ordner auswählen. Diese wurden dann aber nur wieder im Auswahl-Dialog geladen anstatt ausgewählt zu werden. Im Ordner fpcsrc_patched/compiler/systems/ wurden mir alle Dateien angezeigt aber nicht zur Auswahl bereitgestellt.

Aber: Wenn ich es Recht verstehe, kann man damit auch die grundlegende Installation durchführen, selbst wenn man keine Anpassungen durchführen möchte.

Also habe ich mir den Spass gegönnt:
Ich habe kurzer Hand den Mac von der bisherigen Installation befreit, um dann mit dem Wundertool fpcupdeluxe eine Installation des Trunk Zweigs durchzuführen.
Wow!
Das funktionierte auf Anhieb und es gibt auch keine Meldung mehr, dass eine MACOSX_VERSION_MIN nun kein X mehr im Namen trägt.

Dafür erhalte ich 278 Warnungen, dass *.o Dateien für ein neueres macOS erzeugt wurden, als die gelinkte Anwendung
Beispiel:
Warning: ld: warning: object file (/Users/***/fpcupdeluxe/lazarus/lcl/units/aarch64-darwin/buttonpanel.o) was built for newer 'macOS' version (11.0) than being linked (10.9)
Auch das verwenden von visuellen Controls geht nun ohne Fehlermeldung oder gar Lazarus-Absturz.

Also warum weiter rumbasteln so kann man damit arbeiten.

Aber neugierig ist man ja doch - daher habe ich mir die t_darwin.pas mal angeschaut. Da steht:

Code: Alles auswählen

    ...
    function tlinkerdarwin.GetLinkVersion: TCmdStr;
      begin
        if MacOSXVersionMin.isvalid then
          begin
            result:='-macosx_version_min '+MacOSXVersionMin.str;
          end
        ...
Und auch die create_lazarus_dmg.sh sieht so aus:

Code: Alles auswählen

...
if [ "$ARCH" = "i386" ]; then
    LINKEROPTS="-WM10.5"
else
    LINKEROPTS="-k-macosx_version_min -k10.4 -XR/Developer/SDKs/MacOSX10.4u.sdk/"
fi
...
Wie auch immer - die letzten beiden Punkte Deiner Liste haben 100% für mich funktioniert:
  • Warten, bis Lazarus-Icon auf dem Desktop erscheint
    Anklicken und freuen.
Daher vielen lieben Dank für Deine Unterstützung.

Sollte nun noch jemand wissen warum sich das Patch nicht auswählen gelassen hat ist das ein Bonus für das nächste Mal, falls man doch noch etwas anpassen muss.

ExDelphi
Beiträge: 3
Registriert: Fr 26. Apr 2024, 18:49

Re: Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von ExDelphi »

Ta Ta

Kaum habe ich eine Komponente hinzugefügt , was dazu führte, dass Lazarus neu kompiliert werden musste - ist die bösen Meldungen wieder da
...
Error: -macosx_version_min has been renamed to -macos_version_min
Warning: ld: warning: ignoring duplicate libraries: '-lc'
...

Stevie
Beiträge: 43
Registriert: Di 27. Feb 2024, 22:40

Re: Patch zu "-macosx_version_min has been renamed" Fehler

Beitrag von Stevie »

Prima, dass es zumindest im Prinzip funktioniert hat. Den Rest bekommen wir auch noch hin. :-)

Zunächst einmal ist die Fehlermeldung zwar lästig, hat aber keinen Einfluss auf das Kompilat, das nämlich trotzdem funktioniert. Natürlich direkt aus der IDE heraus, wenn man über 'Project -> Project Options' ein 'NSApplication Bundle' erstellt hat und das Binary an die richtige Stelle darin verfrachtet hat, auch komplett eigenständig. So gesehen ist die Bezeichnung als 'Error' also etwas irreführend.

Damit Du den Patch auswählen kannst, musst Du im Datei-Dialog von "Add FPC patch" auf den "Optionen einblenden" Knopf drücken und dann das File Format von "diff" auf "patch" (oder besser gleich "all") umstellen. Dann sollte auch das funktionieren. Ich würde dabei empfehlen, die beiden Patches gleich in dasselbe Verzeichnis zu legen, wie fpcupdeluxe selbst, so dass die automatisch immer erreichbar sind. Einfach mal probieren!

Ansonsten gilt weiterhin: bei Fragen einfach fragen.

Antworten