🔒 Repository is read-only – file editing is disabled.

recipes/core/ncurses/PAGBUILD.yaml main

80 linii Raw ← Powrót
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
pkgname: ncurses
pkgver: '6.6'
pkgrel: 2
pkgdesc: Libraries for terminal-independent handling of character screens.
url: 'http://www.gnu.org/software/ncurses/ncurses.html'
arch: x86_64
license:
- MIT
depends: []
makedepends: []
source:
- 'https://invisible-mirror.net/archives/${pkgname}/${pkgname}-${pkgver}.tar.gz'
sha256sums:
- SKIP
# ─────────────────────────────────────────────────────────────────────────────
# UWAGA DO FLAG (spójność z ISO)
#
# Ten pakiet MUSI być zbudowany tak samo jak ncurses w ISO (build-pagan.sh,
# wpis "ncurses:6.6:…"):  --enable-widec  --with-versioned-syms
#
# * --with-versioned-syms jest KRYTYCZNE. Bez niego libncursesw.so.6 nie ma
#   węzłów wersji, a libreadline.so.8 żąda NCURSES6_TINFO_5.0.19991023 – każda
#   powłoka (bash ładuje readline) wypisuje wtedy przy KAŻDYM podprocesie:
#     /bin/sh: /usr/lib/libncursesw.so.6: no version information available
#             (required by /usr/lib/libreadline.so.8)
#   Wcześniejsza wersja receptury nie miała ANI --enable-widec, ANI
#   --with-versioned-syms, więc pakiet `ncurses` z repo był niespójny z obrazem
#   (obraz: 285 węzłów NCURSES6_*, pakiet z repo: 0) – po `pag install ncurses`
#   na zainstalowanym systemie/ w rootfsie buildera zaczynało się to sypać.
# * Kontrola na końcu builda wykrywa regresję od razu tutaj, a nie u użytkownika.
# ─────────────────────────────────────────────────────────────────────────────
build: |
  cd ncurses-${pkgver}

  ./configure --prefix=/usr          \
    --mandir=/usr/share/man          \
    --without-normal                 \
    --with-shared                    \
    --with-cxx-shared                \
    --without-debug                  \
    --enable-pc-files                \
    --enable-widec                   \
    --with-versioned-syms            \
    --with-install-prefix=${PKGDIR}  \
    --with-pkg-config-libdir=/usr/lib/pkgconfig

  make
  make install

  # Odblokowanie rozszerzeń XOPEN w curses.h (jak w LFS).
  sed -e 's/^#if.*XOPEN.*$/#if 1/' -i ${PKGDIR}/usr/include/curses.h

  for lib in ncurses form panel menu ; do
      ln -sfv lib${lib}w.so ${PKGDIR}/usr/lib/lib${lib}.so
      ln -sfv ${lib}w.pc    ${PKGDIR}/usr/lib/pkgconfig/${lib}.pc
  done
  ln -sfv libncursesw.so ${PKGDIR}/usr/lib/libcurses.so

  mkdir -vp ${PKGDIR}/usr/share/doc/${pkgname}
  cp -R doc/* ${PKGDIR}/usr/share/doc/${pkgname}

  # Druga konfiguracja: biblioteki ABI 5 dla starych binariów (bez węzłów
  # wersji – nic w dystrybucji ich nie wymaga).
  make distclean

  ./configure --prefix=/usr --with-shared --without-normal \
    --mandir=/usr/share/man --infodir=/usr/share/info \
    --without-debug --without-cxx-binding \
    --with-abi-version=5 \
    --with-install-prefix=${PKGDIR}

  make sources libs
  mkdir -p ${PKGDIR}/usr/lib
  cp -av lib/lib*.so.5* ${PKGDIR}/usr/lib

  # Kontrola węzłów wersji (bez binutils – grep po .dynstr wystarcza).
  grep -aq 'NCURSES6_TINFO' ${PKGDIR}/usr/lib/libncursesw.so.6 \
    || { echo "❌ libncursesw.so.6 bez węzłów wersji – --with-versioned-syms nie zadziałało"; exit 1; }
package: |
  true