Skip to content

Commit 59f43ce

Browse files
committed
Add py-numpy
1 parent 1b75796 commit 59f43ce

File tree

3 files changed

+130
-1
lines changed

3 files changed

+130
-1
lines changed

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
5858
- name: 🌋 Build
5959
run: |
60-
.\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build py-pyqt6 py-pyyaml
60+
.\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build py-pyqt6 py-pyyaml py-numpy
6161
6262
- name: 📑 Upload logs
6363
uses: actions/upload-artifact@v4

ports/py-numpy/portfile.cmake

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) # Numpy iuncludes are stored in the module itself
2+
set(VCPKG_BUILD_TYPE release) # No debug builds required for pure python modules since vcpkg does not install a debug python executable.
3+
4+
find_program(VCPKG_PYTHON3 NAMES python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR} python${PYTHON3_VERSION_MAJOR} python PATHS "${VCPKG_PYTHON3_BASEDIR}" NO_DEFAULT_PATH)
5+
find_program(VCPKG_CYTHON NAMES cython PATHS "${VCPKG_PYTHON3_BASEDIR}" "${VCPKG_PYTHON3_BASEDIR}/Scripts" NO_DEFAULT_PATH)
6+
message(STATUS "PYTHON3:${VCPKG_PYTHON3}")
7+
set(ENV{PYTHON3} "${VCPKG_PYTHON3}")
8+
set(PYTHON3 "${VCPKG_PYTHON3}")
9+
10+
vcpkg_add_to_path(PREPEND "${VCPKG_PYTHON3_BASEDIR}")
11+
if(VCPKG_TARGET_IS_WINDOWS)
12+
vcpkg_add_to_path(PREPEND "${VCPKG_PYTHON3_BASEDIR}/Scripts")
13+
endif()
14+
15+
vcpkg_from_github(
16+
OUT_SOURCE_PATH SOURCE_PATH
17+
REPO numpy/numpy
18+
REF 411a55b9ec084c3315fe5f199351c31d0eb3c352
19+
SHA512 44d46d7c4b1e8a568e63951cf424f49dd47a5f3f9ad673a548c954ba373d353af03e12f07d7fa6f523c1dd91431d0f428d1e24703757928b1e9a0f50ada28ee7
20+
HEAD_REF main
21+
)
22+
23+
vcpkg_from_github(
24+
OUT_SOURCE_PATH SOURCE_PATH_SIMD
25+
REPO intel/x86-simd-sort
26+
REF 3c9bf9a5c69bc90f51e34aa039f914652d8b31cd
27+
SHA512 1940346206e9988c42dfeb0907d34ac6320db067913c837b14028c89c5f41508c1abc1162996a305430a1186bf824d95129ae48178e77d44120cbf1246230749
28+
HEAD_REF main
29+
)
30+
31+
vcpkg_from_github(
32+
OUT_SOURCE_PATH SOURCE_PATH_MESON_NUMPY
33+
REPO numpy/meson
34+
REF 067efcb7f59d4cef86c11f9ef7dd64828c48a9b8
35+
SHA512 f1bb457de6e1123c7a69ee39c39dacfdb01001391dbb78e3c864ca5506029409a6153f951e59e4ba4bb0441340a0c686c95a287087e92856dac4009e6379b5a5
36+
HEAD_REF main
37+
)
38+
39+
cmake_path(GET SCRIPT_MESON PARENT_PATH MESON_DIR)
40+
file(COPY "${SOURCE_PATH_MESON_NUMPY}/mesonbuild/modules/features" DESTINATION "${MESON_DIR}/mesonbuild/modules")
41+
42+
file(COPY "${SOURCE_PATH_SIMD}/" DESTINATION "${SOURCE_PATH}/numpy/core/src/npysort/x86-simd-sort")
43+
set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)
44+
45+
vcpkg_from_github(
46+
OUT_SOURCE_PATH SOURCE_PATH_SVML
47+
REPO numpy/SVML
48+
REF 958caeac44d66878ab36d364c863bde47c0c69e2
49+
SHA512 444c1f765e875cc3eb55e48bcb8fa0c0d5b2e47cc5db16287e424f16b025cdbaf18f5d5eb6ccee6f5d0311e545ba9b8fdfa0f0cbc09508b38ce372afb339f8c7
50+
HEAD_REF main
51+
)
52+
53+
file(COPY "${SOURCE_PATH_SVML}/" DESTINATION "${SOURCE_PATH}/numpy/core/src/umath/svml")
54+
55+
vcpkg_replace_string("${SOURCE_PATH}/meson.build" "py.dependency()" "dependency('python-3.${PYTHON3_VERSION_MINOR}', method : 'pkg-config')")
56+
57+
vcpkg_configure_meson(
58+
SOURCE_PATH "${SOURCE_PATH}"
59+
OPTIONS
60+
-Dblas=blas
61+
-Dlapack=lapack
62+
-Duse-ilp64=true
63+
ADDITIONAL_BINARIES
64+
cython=['${VCPKG_CYTHON}']
65+
python3=['${VCPKG_PYTHON3}']
66+
python=['${VCPKG_PYTHON3}']
67+
)
68+
vcpkg_install_meson()
69+
vcpkg_fixup_pkgconfig()
70+
71+
set(subdir "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/")
72+
if(VCPKG_TARGET_IS_WINDOWS)
73+
set(subdir "${CURRENT_PACKAGES_DIR}/lib/site-packages/")
74+
endif()
75+
set(pyfile "${subdir}/numpy/__config__.py")
76+
file(READ "${pyfile}" contents)
77+
string(REPLACE "${CURRENT_INSTALLED_DIR}" "$(prefix)" contents "${contents}")
78+
file(WRITE "${pyfile}" "${contents}")
79+
80+
81+
if(VCPKG_TARGET_IS_WINDOWS)
82+
file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}")
83+
file(RENAME "${CURRENT_PACKAGES_DIR}/lib/site-packages/numpy" "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/numpy")
84+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib")
85+
endif()
86+
87+
file(REMOVE_RECURSE
88+
"${CURRENT_PACKAGES_DIR}/debug/include"
89+
"${CURRENT_PACKAGES_DIR}/debug/share"
90+
)
91+
92+
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
93+
94+
# Add required Metadata for some python build plugins
95+
file(WRITE "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/numpy-${VERSION}.dist-info/METADATA"
96+
"Metadata-Version: 2.1\n\
97+
Name: numpy\n\
98+
Version: ${VERSION}"
99+
)
100+
101+
vcpkg_python_test_import(MODULE "numpy")

ports/py-numpy/vcpkg.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"name": "py-numpy",
3+
"version": "1.26.1",
4+
"description": "The fundamental package for scientific computing with Python.",
5+
"homepage": "https://www.numpy.org/",
6+
"license": "BSD-3-Clause",
7+
"dependencies": [
8+
"blas",
9+
"lapack",
10+
{
11+
"name": "py-cython",
12+
"host": true
13+
},
14+
"python3",
15+
{
16+
"name": "python3",
17+
"host": true
18+
},
19+
{
20+
"name": "vcpkg-python-scripts",
21+
"host": true
22+
},
23+
{
24+
"name": "vcpkg-tool-meson",
25+
"host": true
26+
}
27+
]
28+
}

0 commit comments

Comments
 (0)