diff --git a/config.json b/config.json index a8129027d..9d6abb4e5 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,5 @@ { - "stack": "cflinuxfs4", + "stack": "cflinuxfs5", "oses": [ "linux" ], diff --git a/fixtures/util/override_buildpack/override.yml b/fixtures/util/override_buildpack/override.yml index 600e501dc..fd1513e61 100644 --- a/fixtures/util/override_buildpack/override.yml +++ b/fixtures/util/override_buildpack/override.yml @@ -8,3 +8,4 @@ nodejs: cf_stacks: - cflinuxfs3 - cflinuxfs4 + - cflinuxfs5 diff --git a/manifest.yml b/manifest.yml index de2ff3138..dc31e9926 100644 --- a/manifest.yml +++ b/manifest.yml @@ -4,7 +4,7 @@ default_versions: - name: node version: 22.x - name: python - version: 3.11.x + version: 3.13.x include_files: - CHANGELOG - CONTRIBUTING.md @@ -48,6 +48,10 @@ dependency_deprecation_dates: name: python date: 2029-10-07 link: https://peps.python.org/pep-0719/ +- version_line: 3.14.x + name: python + date: 2030-10-07 + link: https://peps.python.org/pep-0745/ dependencies: - name: node version: 20.19.3 @@ -167,15 +171,31 @@ dependencies: sha256: d923c02aa27386583a1ecea31220a1aaadb7cc323be32dc8f71b1dd5ba81af62 cf_stacks: - cflinuxfs5 - source: https://www.python.org/ftp/python/3.13.12/Python-3.13.12.tgz - source_sha256: 12e7cb170ad2d1a69aee96a1cc7fc8de5b1e97a2bdac51683a3db016ec9a2996 + source: https://www.python.org/ftp/python/3.13.9/Python-3.13.9.tgz + source_sha256: c4c066af19c98fb7835d473bebd7e23be84f6e9874d47db9e39a68ee5d0ce35c +- name: python + version: 3.14.3 + uri: https://buildpacks.cloudfoundry.org/dependencies/python/python_3.14.3_linux_x64_cflinuxfs4_a54b3e20.tgz + sha256: a54b3e20698a979d70fdc15af5a426b6bcf861ba6f37055e1da535c6562a8122 + cf_stacks: + - cflinuxfs4 + source: https://www.python.org/ftp/python/3.14.3/Python-3.14.3.tgz + source_sha256: d7fe130d0501ae047ca318fa92aa642603ab6f217901015a1df6ce650d5470cd +- name: python + version: 3.14.3 + uri: https://buildpacks.cloudfoundry.org/dependencies/python/python_3.14.3_linux_x64_cflinuxfs5_62e6a7a7.tgz + sha256: 62e6a7a7a369c77412c1db87799128cd87a27bbfd14969c01ff4719a7bd7049f + cf_stacks: + - cflinuxfs5 + source: https://www.python.org/ftp/python/3.14.3/Python-3.14.3.tgz + source_sha256: d7fe130d0501ae047ca318fa92aa642603ab6f217901015a1df6ce650d5470cd - name: yarn version: 1.22.22 - uri: https://buildpacks.cloudfoundry.org/dependencies/yarn/yarn_1.22.22_linux_noarch_any-stack_4911d0a6.tgz - sha256: 4911d0a6ccea0b992648fbba16a687917511233552ab87cb8ff4b80259ddfac2 + uri: https://buildpacks.cloudfoundry.org/dependencies/yarn/yarn_1.22.22_linux_noarch_any-stack_b6132b86.tgz + sha256: b6132b864c1948174385b4efec842d21cb964c2ae1e79fedcb4eb783ffdaa8a5 cf_stacks: - cflinuxfs4 - - cflinuxfs3 + - cflinuxfs5 source: https://github.com/yarnpkg/yarn/releases/download/v1.22.22/yarn-v1.22.22.tar.gz source_sha256: 88268464199d1611fcf73ce9c0a6c4d44c7d5363682720d8506f6508addf36a0 pre_package: scripts/build.sh diff --git a/scripts/install_go.sh b/scripts/install_go.sh index 6e998957d..10d4b4473 100755 --- a/scripts/install_go.sh +++ b/scripts/install_go.sh @@ -5,7 +5,7 @@ set -u set -o pipefail function main() { - if [[ "${CF_STACK:-}" != "cflinuxfs3" && "${CF_STACK:-}" != "cflinuxfs4" ]]; then + if [[ "${CF_STACK:-}" != "cflinuxfs3" && "${CF_STACK:-}" != "cflinuxfs4" && "${CF_STACK:-}" != "cflinuxfs5" ]]; then echo " **ERROR** Unsupported stack" echo " See https://docs.cloudfoundry.org/devguide/deploy-apps/stacks.html for more info" exit 1 @@ -20,7 +20,8 @@ function main() { if [[ ! -f "${dir}/bin/go" ]]; then local url - url="https://buildpacks.cloudfoundry.org/dependencies/go/go_${version}_linux_x64_${CF_STACK}_${expected_sha:0:8}.tgz" + # TODO: use exact stack based dep, when go is built for all supported stacks + url="https://buildpacks.cloudfoundry.org/dependencies/go/go_${version}_linux_x64_cflinuxfs4_${expected_sha:0:8}.tgz" echo "-----> Download go ${version}" curl "${url}" \ diff --git a/src/nodejs/integration/init_test.go b/src/nodejs/integration/init_test.go index 50d8e5384..cfcd7a718 100644 --- a/src/nodejs/integration/init_test.go +++ b/src/nodejs/integration/init_test.go @@ -41,7 +41,7 @@ func init() { flag.BoolVar(&settings.Serial, "serial", false, "run serial buildpack tests") flag.StringVar(&settings.Platform, "platform", "cf", `switchblade platform to test against ("cf" or "docker")`) flag.StringVar(&settings.GitHubToken, "github-token", "", "use the token to make GitHub API requests") - flag.StringVar(&settings.Stack, "stack", "cflinuxfs3", "stack to use when pushing apps") + flag.StringVar(&settings.Stack, "stack", "cflinuxfs5", "stack to use when pushing apps") } func TestIntegration(t *testing.T) { diff --git a/src/nodejs/integration/npm_test.go b/src/nodejs/integration/npm_test.go index c1ec38ff3..2186592a2 100644 --- a/src/nodejs/integration/npm_test.go +++ b/src/nodejs/integration/npm_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "os" "path/filepath" + "strings" "testing" "github.com/cloudfoundry/switchblade" @@ -72,9 +73,24 @@ func testNPM(platform switchblade.Platform, fixtures string) func(*testing.T, sp Expect(file.Close()).To(Succeed()) pkg["engines"] = map[string]string{"npm": "^8"} + + // Remove cpu-features (native module) because npm 8's bundled + // node-gyp v9.1.0 requires distutils, which was removed in Python 3.12+. + // This test validates npm version selection, not native compilation. + deps := pkg["dependencies"].(map[string]interface{}) + delete(deps, "cpu-features") + pkg["dependencies"] = deps + content, err := json.Marshal(pkg) Expect(err).NotTo(HaveOccurred()) Expect(os.WriteFile(filepath.Join(source, "package.json"), content, 0600)).To(Succeed()) + + // Also remove the require('cpu-features') from server.js so the + // app doesn't crash at startup trying to load the missing module. + serverJS, err := os.ReadFile(filepath.Join(source, "server.js")) + Expect(err).NotTo(HaveOccurred()) + serverJS = []byte(strings.Replace(string(serverJS), "const features = require('cpu-features')();\n", "", 1)) + Expect(os.WriteFile(filepath.Join(source, "server.js"), serverJS, 0600)).To(Succeed()) }) it.After(func() {