[Buildroot] python-pandas port

info at rootkitlabs.com info at rootkitlabs.com
Mon Oct 27 07:46:10 UTC 2025


From: Ryan Walker <info at rootkitlabs.com>

Hey! I'm trying to get pandas installed on my buildroot image. This is the issue I'm running into.

>>> import pandas
Traceback (most recent call last):
  File "<python-input-0>", line 1, in <module>
    import pandas
  File "/usr/lib/python3.13/site-packages/pandas/__init__.py", line 49, in <module>
  File "/usr/lib/python3.13/site-packages/pandas/core/api.py", line 1, in <module>
  File "/usr/lib/python3.13/site-packages/pandas/_libs/__init__.py", line 18, in <module>
  File "interval.pyx", line 1, in init pandas._libs.interval
  File "hashtable.pyx", line 1, in init pandas._libs.hashtable
  File "missing.pyx", line 1, in init pandas._libs.missing
  File "/usr/lib/python3.13/site-packages/pandas/_libs/tslibs/__init__.py", line 40, in <module>
  File "conversion.pyx", line 1, in init pandas._libs.tslibs.conversion
  File "offsets.pyx", line 1, in init pandas._libs.tslibs.offsets
  File "timestamps.pyx", line 1, in init pandas._libs.tslibs.timestamps
  File "tzconversion.pyx", line 55, in init pandas._libs.tslibs.tzconversion
ValueError: Buffer dtype mismatch, expected 'const int64_t' but got 'long long'

Here are my changes to buildroot, I've used the vendor meson version (as that's what required right now) to build numpy and bumped the version.

diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
index 30271e35e5..2cfa8c7310 100644
--- a/package/pkg-meson.mk
+++ b/package/pkg-meson.mk
@@ -137,6 +137,7 @@ define inner-meson-package
 # packages.
 #
 ifndef $(2)_CONFIGURE_CMDS
+$(2)_MESON ?= $$(MESON)
 ifeq ($(4),target)

 $(2)_CFLAGS ?= $$(TARGET_CFLAGS)
@@ -157,7 +158,7 @@ define $(2)_CONFIGURE_CMDS
 	CC_FOR_BUILD="$$(HOSTCC)" \
 	CXX_FOR_BUILD="$$(HOSTCXX)" \
 	$$($$(PKG)_CONF_ENV) \
-	$$(MESON) setup \
+	$$($$(PKG)_MESON) setup \
 		--prefix=/usr \
 		--libdir=lib \
 		--default-library=$(PKG_MESON_DEFAULT_LIBRARY) \
@@ -178,7 +179,7 @@ define $(2)_CONFIGURE_CMDS
 	rm -rf $$($$(PKG)_SRCDIR)/buildroot-build
 	mkdir -p $$($$(PKG)_SRCDIR)/buildroot-build
 	$$(HOST_CONFIGURE_OPTS) \
-	$$($$(PKG)_CONF_ENV) $$(MESON) setup \
+	$$($$(PKG)_CONF_ENV) $$($$(PKG)_MESON) setup \
 		--prefix=$$(HOST_DIR) \
 		--libdir=lib \
 		--sysconfdir=$$(HOST_DIR)/etc \
diff --git a/package/python-numpy/python-numpy.hash b/package/python-numpy/python-numpy.hash
index 6629cebbce..583bd1aa58 100644
--- a/package/python-numpy/python-numpy.hash
+++ b/package/python-numpy/python-numpy.hash
@@ -1,5 +1,7 @@
 # Copied from https://github.com/numpy/numpy/releases/tag/v1.25.0
-sha256  f1accae9a28dc3cda46a91de86acf69de0d1b5f4edd44a9b0c3ceb8036dfff19  numpy-1.25.0.tar.gz
+sha256  e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd  numpy-2.2.6.tar.gz
+sha256  a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a  numpy-2.3.4.tar.gz
+
 # License files, locally calculated
 sha256  1034d3bd61783f3b5e7ec3e7ca818f4da4135132323a0ef99f4c0edb3c7f6bd2  LICENSE.txt
 sha256  c27d0a8026bdb8876562b720ab24d1688e3827a89f6083cd6e7e8caa9584aba3  numpy/core/src/multiarray/dragon4.c
diff --git a/package/python-numpy/python-numpy.mk b/package/python-numpy/python-numpy.mk
index 200fac20a1..a96aee8809 100644
--- a/package/python-numpy/python-numpy.mk
+++ b/package/python-numpy/python-numpy.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################

-PYTHON_NUMPY_VERSION = 1.25.0
+PYTHON_NUMPY_VERSION = 2.3.4
 PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz
 PYTHON_NUMPY_SITE = https://github.com/numpy/numpy/releases/download/v$(PYTHON_NUMPY_VERSION)
 PYTHON_NUMPY_LICENSE = BSD-3-Clause, MIT, Zlib
@@ -18,12 +18,28 @@ PYTHON_NUMPY_CPE_ID_VENDOR = numpy
 PYTHON_NUMPY_CPE_ID_PRODUCT = numpy

 PYTHON_NUMPY_DEPENDENCIES = host-python-cython python3
+
 HOST_PYTHON_NUMPY_DEPENDENCIES = host-python-cython

 PYTHON_NUMPY_CONF_ENV += \
 	_PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \
 	PYTHONPATH=$(PYTHON3_PATH)

+PYTHON_NUMPY_MESON_EXTRA_PROPERTIES += \
+	sizeof_long_double=8 \
+	longdouble_format='IEEE_DOUBLE_LE'
+
+HOST_PYTHON_NUMPY_MESON_EXTRA_PROPERTIES += \
+	sizeof_long_double=8 \
+	longdouble_format='IEEE_DOUBLE_LE'
+
+# Numpy requires a custom version of meson
+PYTHON_NUMPY_MESON = \
+    PYTHONNOUSERSITE=y $(HOST_DIR)/bin/python3 -B $(@D)/vendored-meson/meson/meson.py
+
+HOST_PYTHON_NUMPY_MESON = \
+    PYTHONNOUSERSITE=y $(HOST_DIR)/bin/python3 -B $(@D)/vendored-meson/meson/meson.py
+
 ifeq ($(BR2_PACKAGE_LAPACK),y)
 PYTHON_NUMPY_DEPENDENCIES += lapack
 PYTHON_NUMPY_CONF_OPTS += -Dlapack=lapack
@@ -49,9 +65,10 @@ HOST_PYTHON_NUMPY_CONF_OPTS = -Dblas="" -Dlapack=""
 # So, the numpy distutils extension packages would explicitly link this
 # config path for their package environment.
 define PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES
-	$(SED) '/^pkgdir=/d;/^prefix=/i pkgdir=$(PYTHON3_PATH)/site-packages/numpy/core' \
-		$(PYTHON3_PATH)/site-packages/numpy/core/lib/npy-pkg-config/npymath.ini
+	$(SED) '/^pkgdir=/d;/^prefix=/i pkgdir=$(PYTHON3_PATH)/site-packages/numpy/_core' \
+		$(PYTHON3_PATH)/site-packages/numpy/_core/lib/npy-pkg-config/npymath.ini
 endef
+
 PYTHON_NUMPY_POST_INSTALL_STAGING_HOOKS += PYTHON_NUMPY_FIXUP_NPY_PKG_CONFIG_FILES


And here are my config files for pandas.

config BR2_PACKAGE_PYTHON_PANDAS
    bool "python-pandas"

    help
        Powerful data structures for data analysis, time series, and statistics.

    select BR2_PACKAGE_PYTHON_DATEUTIL
    select BR2_PACKAGE_PYTHON_PYTZ
    select BR2_PACKAGE_PYTHON_NUMPY
    select BR2_PACKAGE_BZIP2
    select BR2_PACKAGE_HOST_PYTHON_VERSIONEER
    select BR2_PACKAGE_HOST_PYTHON_MESON_PYTHON
    select BR2_PACKAGE_HOST_PYTHON_NUMPY
    select BR2_PACKAGE_HOST_PYTHON_CYTHON

################################################################################
#
# python-pandas
#
################################################################################

PYTHON_PANDAS_VERSION = v2.3.3
PYTHON_PANDAS_SITE = https://github.com/pandas-dev/pandas
PYTHON_PANDAS_SITE_METHOD = git
PYTHON_PANDAS_INSTALL_STAGING = YES

PYTHON_PANDAS_LICENSE = BSD
PYTHON_PANDAS_LICENSE_FILES = LICENSE

PYTHON_PANDAS_DEPENDENCIES = \
    bzip2 \
    python-dateutil \
    python-pytz \
    python-numpy \
    host-python-versioneer \
    host-python-numpy \
    host-python-cython

PYTHON_PANDAS_MESON_EXTRA_PROPERTIES += \
	sizeof_long_double=8 \
	longdouble_format='IEEE_DOUBLE_LE'

PYTHON_PANDAS_CONF_ENV += \
	_PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \
	PYTHONPATH=$(PYTHON3_PATH)

$(eval $(meson-package))

Lastly here is line 55 of tzconversion.pyx.

cdef const int64_t[::1] _deltas_placeholder = np.array([], dtype=np.int64)


Any help appreciated, looking to push this upstream once I get it working.


More information about the buildroot mailing list