diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 4edf025..badf70c 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -40,29 +40,18 @@ jobs: - name: 🔨 Prepare build env run: | - brew install autoconf automake autoconf-archive libtool mono swig bison flex + brew install autoconf automake autoconf-archive libtool mono swig bison flex llvm@20 + echo "HOMEBREW_PREFIX=$(brew --prefix)" >> $GITHUB_ENV - - name: Symlink gfortran (macOS) - if: matrix.os == 'macos-15' + - name: Symlink gfortran run: | # make sure gfortran is available # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md # https://github.com/actions/runner-images/issues/3371 # ln version - new path 'MacOS14' - sudo ln -fs /opt/homebrew/bin/gfortran-${GCC_VERSION} /usr/local/bin/gfortran + sudo ln -fs $HOMEBREW_PREFIX/bin/gfortran-${GCC_VERSION} /usr/local/bin/gfortran sudo mkdir -p /usr/local/gfortran - sudo ln -sf /opt/homebrew/Cellar/gcc@${GCC_VERSION}/*/lib/gcc/${GCC_VERSION} /usr/local/gfortran/lib - - - name: Symlink gfortran (macOS-intel) - if: matrix.os == 'macos-15-intel' - run: | - # make sure gfortran is available - # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md - # https://github.com/actions/runner-images/issues/3371 - # ln version - new path 'MacOS14' - sudo ln -fs /usr/local/bin/gfortran-${GCC_VERSION} /usr/local/bin/gfortran - sudo mkdir -p /usr/local/gfortran - sudo ln -sf /usr/local/Cellar/gcc@${GCC_VERSION}/*/lib/gcc/${GCC_VERSION} /usr/local/gfortran/lib + sudo ln -sf $HOMEBREW_PREFIX/Cellar/gcc@${GCC_VERSION}/*/lib/gcc/${GCC_VERSION} /usr/local/gfortran/lib - name: 🐕 Checkout vcpkg uses: actions/checkout@v4 @@ -122,9 +111,10 @@ jobs: ./vcpkg/vcpkg install $VCPKG_OPTIONS py-bottleneck ./vcpkg/vcpkg install $VCPKG_OPTIONS py-numexpr ./vcpkg/vcpkg install $VCPKG_OPTIONS py-calamine - ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-driver-manager - ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-postgresql - ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-sqlite + # underlying adbc dependency from main vcpkg repo is failing + # ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-driver-manager + # ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-postgresql + # ./vcpkg/vcpkg install $VCPKG_OPTIONS py-adbc-sqlite ./vcpkg/vcpkg install $VCPKG_OPTIONS py-gast \ py-beniget \ py-pythran diff --git a/ports/py-joblib/portfile.cmake b/ports/py-joblib/portfile.cmake new file mode 100644 index 0000000..6800ccc --- /dev/null +++ b/ports/py-joblib/portfile.cmake @@ -0,0 +1,14 @@ +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME joblib + VERSION ${VERSION} + SHA512 221fe426aa4c90d75080b63bf6bb0b9c61e4ae90bd2a734d2b658013e9a00125bc14574d475789b4d8d246a1a5b5c6f67754e639080de6ecb9a481d1d124c0ed + FILENAME joblib +) + +vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") +vcpkg_python_test_import(MODULE "joblib") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-joblib/vcpkg.json b/ports/py-joblib/vcpkg.json new file mode 100644 index 0000000..531facc --- /dev/null +++ b/ports/py-joblib/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "py-joblib", + "version": "1.5.3", + "description": "Lightweight pipelining with Python functions.", + "homepage": "https://joblib.readthedocs.io/", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "py-setuptools", + "host": true + }, + "python3", + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/ports/py-libpysal/portfile.cmake b/ports/py-libpysal/portfile.cmake new file mode 100644 index 0000000..d85467b --- /dev/null +++ b/ports/py-libpysal/portfile.cmake @@ -0,0 +1,14 @@ +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME libpysal + VERSION ${VERSION} + SHA512 eaab85b8ce83bccd9cb22671f5e27a1db245db850bef7e80f37ce667876bbed91224a20d72ee976f9fbdc9d3f3a90d58343bde1cd0b6f9a2fe1bbf5abd23be3a + FILENAME libpysal +) + +vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") +vcpkg_python_test_import(MODULE "libpysal") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-libpysal/vcpkg.json b/ports/py-libpysal/vcpkg.json new file mode 100644 index 0000000..9d3d7ca --- /dev/null +++ b/ports/py-libpysal/vcpkg.json @@ -0,0 +1,32 @@ +{ + "name": "py-libpysal", + "version": "4.14.1", + "description": "Core components of PySAL - A library of spatial analysis functions.", + "homepage": "https://pysal.org/libpysal", + "license": "BSD-3-Clause", + "dependencies": [ + "py-geopandas", + "py-jinja2", + "py-numpy", + "py-packaging", + "py-pandas", + "py-platformdirs", + "py-requests", + "py-scikit-learn", + "py-scipy", + { + "name": "py-setuptools", + "host": true + }, + { + "name": "py-setuptools-scm", + "host": true + }, + "py-shapely", + "python3", + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/ports/py-platformdirs/portfile.cmake b/ports/py-platformdirs/portfile.cmake new file mode 100644 index 0000000..d2475f4 --- /dev/null +++ b/ports/py-platformdirs/portfile.cmake @@ -0,0 +1,14 @@ +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME platformdirs + VERSION ${VERSION} + SHA512 3abd4570abae3964c6afd52493b5f99f81c5543833f01ca8f8c59cbd00108b4d8030b0dc8e7991cb807b6817f28552f008e962c88b12db4fc07ce4015f05e8ec + FILENAME platformdirs +) + +vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +vcpkg_python_test_import(MODULE "platformdirs") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-platformdirs/vcpkg.json b/ports/py-platformdirs/vcpkg.json new file mode 100644 index 0000000..a043a9d --- /dev/null +++ b/ports/py-platformdirs/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "py-platformdirs", + "version": "4.9.2", + "description": "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`.", + "homepage": "https://platformdirs.readthedocs.io/en/latest/", + "license": "MIT", + "dependencies": [ + { + "name": "py-setuptools", + "host": true + }, + "python3", + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/ports/py-pysal/vcpkg.json b/ports/py-pysal/vcpkg.json index 4d5c747..bc60732 100644 --- a/ports/py-pysal/vcpkg.json +++ b/ports/py-pysal/vcpkg.json @@ -1,9 +1,10 @@ { "name": "py-pysal", "version": "26.1", - "port-version": 1, + "port-version": 2, "description": "Python Spatial Analysis Library - meta-package for the PySAL ecosystem.", "homepage": "https://pysal.org/", + "license": "BSD-3-Clause", "dependencies": [ "py-lazy-loader", { @@ -15,5 +16,16 @@ "name": "vcpkg-python-scripts", "host": true } - ] + ], + "default-features": [ + "lib" + ], + "features": { + "lib": { + "description": "foundational algorithms and data structures that support the library", + "dependencies": [ + "py-libpysal" + ] + } + } } diff --git a/ports/py-scikit-learn/portfile.cmake b/ports/py-scikit-learn/portfile.cmake new file mode 100644 index 0000000..d952c38 --- /dev/null +++ b/ports/py-scikit-learn/portfile.cmake @@ -0,0 +1,41 @@ +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME "scikit-learn" + VERSION ${VERSION} + SHA512 956a1aececf0c219793653e2bb94a9a490f3edc87617dd8f1b16f9eeba53da874fb280fb9650cc8505a85d7c3a188aa72b8e675404519d57f666c44cbfc21ca4 + FILENAME "scikit_learn" +) + +set(VCPKG_PYTHON3_BASEDIR "${CURRENT_HOST_INSTALLED_DIR}/tools/python3") +find_program(VCPKG_PYTHON3 NAMES python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR} python${PYTHON3_VERSION_MAJOR} python PATHS "${VCPKG_PYTHON3_BASEDIR}" NO_DEFAULT_PATH) +find_program(VCPKG_CYTHON NAMES cython PATHS "${VCPKG_PYTHON3_BASEDIR}" "${VCPKG_PYTHON3_BASEDIR}/Scripts" NO_DEFAULT_PATH) + +set(ENV{PYTHON3} "${VCPKG_PYTHON3}") +set(PYTHON3 "${VCPKG_PYTHON3}") + +vcpkg_add_to_path(PREPEND "${VCPKG_PYTHON3_BASEDIR}") +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_add_to_path(PREPEND "${VCPKG_PYTHON3_BASEDIR}/Scripts") +endif() + +cmake_path(GET VCPKG_CYTHON PARENT_PATH CYTHON_DIR) +vcpkg_add_to_path("${CYTHON_DIR}") + +set(z_vcpkg_python_func_python ${PYTHON3}) +vcpkg_mesonpy_prepare_build_options(OUTPUT meson_opts) + +z_vcpkg_setup_pkgconfig_path(CONFIG "RELEASE") + +list(APPEND meson_opts "--python.platlibdir" "${CURRENT_INSTALLED_DIR}/lib") +list(JOIN meson_opts "\",\"" meson_opts) + +vcpkg_python_build_and_install_wheel( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + --config-json "{\"setup-args\" : [ \"${meson_opts}\" ] }" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") +vcpkg_python_test_import(MODULE "sklearn") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-scikit-learn/vcpkg.json b/ports/py-scikit-learn/vcpkg.json new file mode 100644 index 0000000..eddb386 --- /dev/null +++ b/ports/py-scikit-learn/vcpkg.json @@ -0,0 +1,39 @@ +{ + "name": "py-scikit-learn", + "version": "1.8.0", + "description": "A set of python modules for machine learning and data mining.", + "homepage": "https://scikit-learn.org/", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "py-cython", + "host": true + }, + { + "name": "py-gpep517", + "host": true + }, + "py-joblib", + { + "name": "py-meson", + "host": true + }, + "py-numpy", + "py-packaging", + "py-scipy", + { + "name": "py-setuptools", + "host": true + }, + { + "name": "py-setuptools-scm", + "host": true + }, + "py-threadpoolctl", + "python3", + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/ports/py-threadpoolctl/portfile.cmake b/ports/py-threadpoolctl/portfile.cmake new file mode 100644 index 0000000..b657744 --- /dev/null +++ b/ports/py-threadpoolctl/portfile.cmake @@ -0,0 +1,14 @@ +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME threadpoolctl + VERSION ${VERSION} + SHA512 1fcc39a643db15b7415ad81206078d5ec571d99bab2a8b6c63180f45ce43479876700e3eb36a317b51df18633b2c5455d54553dd710a9c9a8ce2f77bebd5792a + FILENAME threadpoolctl +) + +vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") +vcpkg_python_test_import(MODULE "threadpoolctl") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-threadpoolctl/vcpkg.json b/ports/py-threadpoolctl/vcpkg.json new file mode 100644 index 0000000..d7f659c --- /dev/null +++ b/ports/py-threadpoolctl/vcpkg.json @@ -0,0 +1,22 @@ +{ + "name": "py-threadpoolctl", + "version": "3.6.0", + "description": "Python helpers to limit the number of threads used in the threadpool-backed of common native libraries.", + "homepage": "https://github.com/joblib/threadpoolctl", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "py-cython", + "host": true + }, + { + "name": "py-setuptools", + "host": true + }, + "python3", + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index dfb8cc0..bcd9c42 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -172,6 +172,10 @@ "baseline": "3.1.6", "port-version": 1 }, + "py-joblib": { + "baseline": "1.5.3", + "port-version": 0 + }, "py-jsonschema": { "baseline": "4.26.0", "port-version": 0 @@ -192,6 +196,10 @@ "baseline": "0.4", "port-version": 0 }, + "py-libpysal": { + "baseline": "4.14.1", + "port-version": 0 + }, "py-lxml": { "baseline": "6.0.2", "port-version": 2 @@ -252,6 +260,10 @@ "baseline": "5.3", "port-version": 0 }, + "py-platformdirs": { + "baseline": "4.9.2", + "port-version": 0 + }, "py-pluggy": { "baseline": "1.6.0", "port-version": 0 @@ -326,7 +338,7 @@ }, "py-pysal": { "baseline": "26.1", - "port-version": 1 + "port-version": 2 }, "py-pyspnego": { "baseline": "0.12.0", @@ -376,6 +388,10 @@ "baseline": "0.9.3", "port-version": 0 }, + "py-scikit-learn": { + "baseline": "1.8.0", + "port-version": 0 + }, "py-scipy": { "baseline": "1.17.0", "port-version": 1 @@ -412,6 +428,10 @@ "baseline": "0.5.0", "port-version": 0 }, + "py-threadpoolctl": { + "baseline": "3.6.0", + "port-version": 0 + }, "py-tomli": { "baseline": "2.0.1", "port-version": 1 diff --git a/versions/p-/py-joblib.json b/versions/p-/py-joblib.json new file mode 100644 index 0000000..49f116b --- /dev/null +++ b/versions/p-/py-joblib.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "7cd71eaeee1d8465be78f58f37a3fedd8a05fa80", + "version": "1.5.3", + "port-version": 0 + } + ] +} diff --git a/versions/p-/py-libpysal.json b/versions/p-/py-libpysal.json new file mode 100644 index 0000000..751d544 --- /dev/null +++ b/versions/p-/py-libpysal.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "99f330760fb314e48919c9fdd8797a8107969fd8", + "version": "4.14.1", + "port-version": 0 + } + ] +} diff --git a/versions/p-/py-platformdirs.json b/versions/p-/py-platformdirs.json new file mode 100644 index 0000000..02e6f44 --- /dev/null +++ b/versions/p-/py-platformdirs.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "fa5cfcaa48b0afa34d81f3c3285864c22e21e3d3", + "version": "4.9.2", + "port-version": 0 + } + ] +} diff --git a/versions/p-/py-pysal.json b/versions/p-/py-pysal.json index 52ef27f..6980888 100644 --- a/versions/p-/py-pysal.json +++ b/versions/p-/py-pysal.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "8a938d1693ad36315077b83f49e4dce268668c43", + "version": "26.1", + "port-version": 2 + }, { "git-tree": "34ec0ba0e4600ba5333314463a3495e18810ed57", "version": "26.1", diff --git a/versions/p-/py-scikit-learn.json b/versions/p-/py-scikit-learn.json new file mode 100644 index 0000000..89cc61d --- /dev/null +++ b/versions/p-/py-scikit-learn.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "2bbd5bddb4fb163e5fe2eb10eeedc51f730dd859", + "version": "1.8.0", + "port-version": 0 + } + ] +} diff --git a/versions/p-/py-threadpoolctl.json b/versions/p-/py-threadpoolctl.json new file mode 100644 index 0000000..a9ec82c --- /dev/null +++ b/versions/p-/py-threadpoolctl.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "546afcb60832d848b98d5f3ad719a0832c33b0fb", + "version": "3.6.0", + "port-version": 0 + } + ] +}