nextpnr: 0.9-unstable-2026-02-08 -> 0.10 (#500969)

This commit is contained in:
kirillrdy
2026-04-05 21:03:13 +00:00
committed by GitHub
2 changed files with 57 additions and 48 deletions
+42 -44
View File
@@ -22,11 +22,6 @@ let
enablePython = true;
};
pname = "nextpnr";
# Version 0.9 was patched (c7cfb) for Boost 1.87+ compatibility (boost system)
version = "0.9-unstable-2026-02-08";
prjbeyond_src = fetchFromGitHub {
owner = "YosysHQ-GmbH";
repo = "prjbeyond-db";
@@ -35,65 +30,67 @@ let
};
in
stdenv.mkDerivation rec {
inherit pname version;
stdenv.mkDerivation (finalAttrs: {
pname = "nextpnr";
version = "0.10";
src = fetchFromGitHub {
owner = "YosysHQ";
repo = "nextpnr";
rev = "35f14336c042a9aa86cc66221434262fbb02034e";
hash = "sha256-5Fn/Y+pjhnGFcZsCN7XZN0nPB9u/BIr+lxgrCC5pnpE=";
tag = "nextpnr-${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-goHHEvkBw+9s3RHGfQtRaueXRBnoI14TmfGmb+1WPAY=";
};
# Don't use #embed macro for chipdb binary embeddings - otherwise getting spurious type narrowing errors.
# Maybe related to: https://github.com/llvm/llvm-project/issues/119256
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail "check_cxx_compiler_hash_embed(HAS_HASH_EMBED CXX_FLAGS_HASH_EMBED)" ""
'';
nativeBuildInputs = [
cmake
python3
]
++ (lib.optional enableGui wrapQtAppsHook);
++ lib.optionals enableGui [
wrapQtAppsHook
];
buildInputs = [
boostPython
eigen
python3Packages.apycula
]
++ (lib.optional enableGui qtbase)
++ (lib.optional stdenv.cc.isClang llvmPackages.openmp);
++ lib.optionals enableGui [
qtbase
]
++ lib.optionals stdenv.cc.isClang [
llvmPackages.openmp
];
cmakeFlags =
let
# Use the commit hash for the internal versioning
rev = src.rev;
versionStr = if (lib.hasPrefix "nextpnr-" rev) then rev else "nextpnr-${lib.substring 0 7 rev}";
in
[
"-DCURRENT_GIT_VERSION=${versionStr}"
"-DARCH=generic;ice40;ecp5;himbaechel"
"-DBUILD_TESTS=ON"
"-DICESTORM_INSTALL_PREFIX=${icestorm}"
"-DTRELLIS_INSTALL_PREFIX=${trellis}"
"-DTRELLIS_LIBDIR=${trellis}/lib/trellis"
"-DGOWIN_BBA_EXECUTABLE=${python3Packages.apycula}/bin/gowin_bba"
"-DUSE_OPENMP=ON"
cmakeFlags = [
(lib.cmakeFeature "CURRENT_GIT_VERSION" finalAttrs.src.tag)
(lib.cmakeFeature "ARCH" "generic;ice40;ecp5;himbaechel")
(lib.cmakeBool "BUILD_TESTS" true)
(lib.cmakeFeature "ICESTORM_INSTALL_PREFIX" icestorm.outPath)
(lib.cmakeFeature "TRELLIS_INSTALL_PREFIX" trellis.outPath)
(lib.cmakeFeature "TRELLIS_LIBDIR" "${lib.getLib trellis}/lib/trellis")
(lib.cmakeFeature "GOWIN_BBA_EXECUTABLE" (lib.getExe' python3Packages.apycula "gowin_bba"))
(lib.cmakeBool "USE_OPENMP" true)
# gatemate excluded due to non-reproducible build https://github.com/YosysHQ/prjpeppercorn/issues/9
# xilinx excluded due to needing vivado https://github.com/f4pga/prjxray?tab=readme-ov-file#step-1
"-DHIMBAECHEL_UARCH=example;gowin;ng-ultra"
# gatemate excluded due to non-reproducible build https://github.com/YosysHQ/prjpeppercorn/issues/9
# xilinx excluded due to needing vivado https://github.com/f4pga/prjxray?tab=readme-ov-file#step-1
(lib.cmakeFeature "HIMBAECHEL_UARCH" "example;gowin;ng-ultra")
"-DHIMBAECHEL_GOWIN_DEVICES=all"
"-DHIMBAECHEL_PRJBEYOND_DB=${prjbeyond_src}"
# https://github.com/YosysHQ/nextpnr/issues/1578
# `Compatibility with CMake < 3.5 has been removed from CMake.`
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
]
++ (lib.optional enableGui "-DBUILD_GUI=ON");
(lib.cmakeFeature "HIMBAECHEL_GOWIN_DEVICES" "all")
(lib.cmakeFeature "HIMBAECHEL_PRJBEYOND_DB" prjbeyond_src.outPath)
# https://github.com/YosysHQ/nextpnr/issues/1578
# `Compatibility with CMake < 3.5 has been removed from CMake.`
# "CMAKE_POLICY_VERSION_MINIMUM=3.5"
postPatch = ''
# Don't use #embed macro for chipdb binary embeddings - otherwise getting spurious type narrowing errors.
# Maybe related to: https://github.com/llvm/llvm-project/issues/119256
substituteInPlace CMakeLists.txt \
--replace-fail "check_cxx_compiler_hash_embed(HAS_HASH_EMBED CXX_FLAGS_HASH_EMBED)" ""
'';
(lib.cmakeBool "BUILD_GUI" enableGui)
];
doCheck = true;
@@ -109,8 +106,9 @@ stdenv.mkDerivation rec {
meta = {
description = "Place and route tool for FPGAs";
homepage = "https://github.com/yosyshq/nextpnr";
changelog = "https://github.com/YosysHQ/nextpnr/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.isc;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ thoughtpolice ];
};
}
})
@@ -1,24 +1,35 @@
{
lib,
buildPythonPackage,
crc,
fetchPypi,
# build-system
setuptools-scm,
# dependencies
fastcrc,
msgspec,
numpy,
}:
buildPythonPackage (finalAttrs: {
pname = "apycula";
version = "0.29";
version = "0.31";
pyproject = true;
# The Pypi archive contains necessary files generated with proprietary tools.
src = fetchPypi {
inherit (finalAttrs) pname version;
hash = "sha256-awhGSmGQDQ0Pi+4y9KoR1Yw6UZjM/CTxAV0jdfen6Qw=";
hash = "sha256-77pr4HbS2adFeEI3Q3KzcCfJMi4UomOtKnuGAxobxF0=";
};
build-system = [ setuptools-scm ];
dependencies = [ crc ];
dependencies = [
fastcrc
msgspec
numpy
];
# Tests require a physical FPGA
doCheck = false;