diff --git a/VERSION b/VERSION index 1293dd5b7..f8e233b27 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.45 +1.9.0 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 997cf5da9..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,8 +171,24 @@ 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_b6132b86.tgz 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() {