view README @ 63:87850df999db

Make compilation for Python 3.10 work: Refactor SHEBANG_FILES
author Franz Glasner <fzglas.hg@dom66.de>
date Thu, 11 Jan 2024 01:14:40 +0100
parents 585cf5a218ad
children
line wrap: on
line source


Notes on how to build
=====================


1. Schritt: ein erstes pypy bauen
---------------------------------

Erst einmal mit dem **alten** Ports-Verzeichnis, welches insgesamt auf
dem Stand ist, wo pypy noch offizieller Bestandteil des Ports-Trees war.

Problem: py27-setuptools ist aber aktuell in Wirklichkeit py27-setuptools44.

Deshalb tricksen und zum ersten Bauen und installieren die setuptools in
der Pkg-Db umbenennen mit "pkg set -n"


ACHTUNG: Ports-Tree auf alten Zeitpunkt stellen:
         "hg update -r 377386a46a6b"


Dependencies
~~~~~~~~~~~~

Build py27-pycparser (Origin: devel/py-pycparser):

    pkg install py27-setuptools44

    pkg set -n py27-setuptools44:py27-setuptools

    cd devel/py-pycparser
    make FLAVOR=py27 package

Install this package: pkg install py27-pycparser


PyPy
~~~~

Origin: lang/pypy

Install -A gmake, binutils, expat, libunwind, pkgconf

Unbedingt auch sicherstellen, daß libffi und libz installiert sind

Build:

   pkg set -n py27-setuptools44:py27-setuptools
   make rmconfig
   make build
   make package

Installieren

Dann erst einmal die setuptools wieder zurückbenennen:

    pkg set -n py27-setuptools:py27-setuptools44

Testen folgender Importe:

    import bz2
    import curses
    import pyexpat
    import zlib
    import ssl
    import cffi


2. Schritt: nochmal bauen mit "richtiger" und aktueller Ports-Umgebung
----------------------------------------------------------------------

Vorgehen im Prinzip wie beim ersten Schritt, nur den aktuellen py27-pycparser
installieren als VB und dann auch mittels "make config" das installierte
erste "pypy" als Übersetzer nehmen

ACHTUNG: Ports-Tree auf neueste Version stellen per "hg update".
         Keine setuptools-Umbenennung!


Dependencies
~~~~~~~~~~~~

Build py27-pycparser (Origin: devel/py-pycparser):

Den lassen, der kann mit

    pkg info py27-setuptools44

    cd devel/py-pycparser

Zum Bauen temporär "USES=python:2.7" einstellen.

Bauen:

    make package

Install this package: pkg install py27-pycparser


PyPy
~~~~

Mit PyPy bauen:

    make config     -> PYPY
    make build
    make package

Re-Installation:

    pkg remove pypy
    pkg install pypy

Testen folgender Importe:

    import bz2
    import curses
    import pyexpat
    import zlib
    import ssl
    import cffi
    import ctypes


pypy-gdbm und pypy-sqlite3
~~~~~~~~~~~~~~~~~~~~~~~~~~

jeweils mit "FLAVOR=pypy" bauen



Build von PyPy v7.3.14 auf FreeBSD-13.2
=======================================

.. note:: Auch das Kommanto :command:`pkg-config` scheint nun nötig zu
          sein laut Dokumentation.


``AF_NETLINK`` und :file:`linux/netlink.h`
------------------------------------------

FreeBSD-13.2 definiert im Gegensatz zu früheren Versionen nun auch
``AF_NETLINK``. Aber PyPy (übrigends auch frühere Versionen) geht davon aus,
daß ``AF_NETLINK`` nur unter Linux definiert sein kann und includiert dann
fest das Include-File :file:`linux/netlink.h`; das gibt es aber unter
FreeBSD nicht. Stattdessen ist es hier :file:'netlink/netlink.h`.

  Deswegen in :file:`rpython/rlib/_rsocket_rffi.py` die entsprechende
  Include-Definition patchen.


termios
-------

PyPy v7.3.14 baut nun auch das `termios`-Modul. Der entsprechende nötige
Header :file:`termios.h` ist aber unter FreeBSD nicht automatisch beim
Compilieren mit dabei.

  Deswegen in :file:`rpython/rlib/rposix.py` den Header :file:`termios.h`
  in die Platform-Konfigurations-Includes mit aufnehmen unter FreeBSD.