[О блоге] [наверх] [пред] [2023-07-24 13:38:38+03:00] [c8f81c2e0b02e5593fb762b67929027ab49b3a65]
Темы: [bsd][go][tip]

Сборка Go на FreeBSD 13+

С момента обновления FreeBSD, появилась проблема: go1.4 не собирается
под ней:

    [...]
    cmd/6c
    /tmp/go/src/cmd/6c/../cc/pswt.c:36:2: error: use of undeclared identifier 'C1'
    /tmp/go/src/cmd/6c/../cc/pgen.c:35:14: error: unknown type name 'Type'
    [...]

Решить проблему не смог с ходу. Первый раз когда это возникло:
пересобрал под виртуальной машиной С FreeBSD 12.

Сегодня снова посмотрел на эту проблему. В общем пока выходит так:

* разворачиваю chroot FreeBSD 12:

    zstd -d < FreeBSD-12.4-RELEASE-amd64-dvd1.iso.zst > fbsd12.iso
    mdconfig -a fbsd12.iso
    mount -t cd9660 /dev/md0 /cdrom
    mkdir /tmp/fbsd12-chroot
    tar xfC /cdrom/usr/freebsd-dist/base.txz /tmp/fbsd12-chroot

* сую туда Go, делаю debash (утилита из
  http://www.gostls13.cypherpunks.ru/, которая убирает зависимость от
  мерзкого bash, которого нет из коробки в нормальных ОС), пытаюсь собрать:

    tar xfC go1.4.3.src.tar.gz /tmp/fbsd12-chroot/root
    cd /tmp/fbsd12-chroot/root/go
    debash
    chroot /tmp/fbsd12-chroot /bin/sh
    cd go/src
    export CGO_ENABLED=0
    ./make.bash

  получаю:

    [...]
    cmd/go
    runtime: address space conflict: map(0xc208000000) = 0xc2081bf000
    fatal error: runtime: address space conflict

* выключаю ASLR, который по умолчанию в FreeBSD теперь включён:

    sysctl kern.elf64.aslr.enable=0

  теперь сборка не падает, а просто на cmd/go зависает, не делая ничего
  на CPU. Но, ведь всякие "6c" программы же уже собраны, которые падали
  на FreeBSD 13

* уже вне chroot, под FreeBSD 13, продолжаю сборку без очистки:

    ./make.bash --no-clean

* после этого можно собрать уже Go 1.17, но, с ним тоже будут проблемы с
  ASLR. Зато после него, 1.20 уже собирается без проблем

    [оставить комментарий]