
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.


Build von PyPy v7.3.19 auf FreeBSD-14.1
=======================================

Voraussetzungen
---------------

py-pycparser
~~~~~~~~~~~~

ACHTUNG: Ports-Tree auf alten Zeitpunkt stellen:
         "hg update -r 377386a46a6b" (as-of 2021-01-08)

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

  Dessen Voraussetzung ist py27-setuptools.

    Entweder:

      pkg install py27-setuptools44

      pkg set -n py27-setuptools44:py27-setuptools

    Oder:

      Für dem Bau von py-pycparser  Mk/Uses/distutils  patchen, so daß als
      dessen Dependency py27-setuptools44 statt py27-setuptools benutzt wird.

    Dann:

      cd devel/py-pycparser
      make FLAVOR=py27 package

Install this package: pkg install py27-pycparser

Ports-Umgebung wieder restaurieren


Weitere Pakete
~~~~~~~~~~~~~~

Install gmake, binutils, expat, libffi, libunwind, pkgconf

NOTE: libz ist bereits im Basis-OS dabei.


PyPy2
-----

In der aktuellen Version wird ein Linken mit "libffi.a" bevorzugt for dem
Linken mit "libffi.so". Das ist aber nicht möglich, da "libffi.a" nicht mit
"-fPIC" übersetzt ist, das aber nötig ist. Deswegen "rpython/rlib/clibffi.py"
entsprechend patchen, daß dafür wieder "libffi.so" bevorzugt wird.

Mit Python2.7 übersetzen:

  make rmconfig
  make package

Installation -- auch aller optionalen Pakete pypy2-sqlite3, pypy3-gdbm und
pypy2-tkinter

Test mit

  make test
