diff --git a/go.mod b/go.mod index 426a7c29..d3c720af 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/cloudfoundry/r-buildpack go 1.24.0 require ( - github.com/cloudfoundry/libbuildpack v0.0.0-20251202224209-b07cc3dab65e + github.com/cloudfoundry/libbuildpack v0.0.0-20260306121953-8ab9253c8181 github.com/cloudfoundry/switchblade v0.9.4 github.com/golang/mock v1.6.0 github.com/onsi/ginkgo/v2 v2.28.1 @@ -26,7 +26,6 @@ require ( github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -35,7 +34,6 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/nxadm/tail v1.4.11 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/paketo-buildpacks/packit/v2 v2.16.0 // indirect diff --git a/go.sum b/go.sum index 44de9947..01960781 100644 --- a/go.sum +++ b/go.sum @@ -984,8 +984,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= -github.com/cloudfoundry/libbuildpack v0.0.0-20251202224209-b07cc3dab65e h1:L9bl+eey+J8CQ5Dv24nJ5giUx00gdigZv4ElqzR0uRA= -github.com/cloudfoundry/libbuildpack v0.0.0-20251202224209-b07cc3dab65e/go.mod h1:kn4FHMwI8bTd9gT92wPGjXHzUvGcj8CkPxG8q3AGBAQ= +github.com/cloudfoundry/libbuildpack v0.0.0-20260306121953-8ab9253c8181 h1:di63teVid/uT+6TAqBSXFqxNM3sAbxk6hssYppZBvbw= +github.com/cloudfoundry/libbuildpack v0.0.0-20260306121953-8ab9253c8181/go.mod h1:Qtj1XicpoDn88w2cvVCYtw1Whq+kK3bouin0xNZ9lIU= github.com/cloudfoundry/switchblade v0.9.4 h1:93O90a/DRRcZ4h50htDh4z7+FMliqy/lQH6IFgVa+mQ= github.com/cloudfoundry/switchblade v0.9.4/go.mod h1:hIEQdGAsuNnzlyQfsD5OIORt38weSBar6Wq5/JX6Omo= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -1282,8 +1282,6 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= @@ -1838,8 +1836,6 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= -github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= @@ -1855,7 +1851,6 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= @@ -3349,7 +3344,6 @@ gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= diff --git a/vendor/github.com/cloudfoundry/libbuildpack/installer.go b/vendor/github.com/cloudfoundry/libbuildpack/installer.go index c286d295..365b8d11 100644 --- a/vendor/github.com/cloudfoundry/libbuildpack/installer.go +++ b/vendor/github.com/cloudfoundry/libbuildpack/installer.go @@ -32,6 +32,19 @@ func (i *Installer) SetAppCacheDir(appCacheDir string) (err error) { } func (i *Installer) InstallDependency(dep Dependency, outputDir string) error { + return i.InstallDependencyWithStrip(dep, outputDir, 0) +} + +// InstallDependencyWithStrip installs a dependency with optional path stripping +// stripComponents works like tar's --strip-components flag: +// +// 0 = extract as-is (default, same as InstallDependency) +// 1 = remove top-level directory +// 2 = remove two levels, etc. +// +// This is useful for archives that extract to a top-level directory +// (e.g., apache-tomcat-9.0.98.tar.gz extracts to apache-tomcat-9.0.98/) +func (i *Installer) InstallDependencyWithStrip(dep Dependency, outputDir string, stripComponents int) error { i.manifest.log.BeginStep("Installing %s %s", dep.Name, dep.Version) tmpDir, err := ioutil.TempDir("", "downloads") @@ -72,14 +85,23 @@ func (i *Installer) InstallDependency(dep Dependency, outputDir string) error { } if strings.HasSuffix(entry.URI, ".zip") { + if stripComponents > 0 { + return ExtractZipWithStrip(tmpFile, outputDir, stripComponents) + } return ExtractZip(tmpFile, outputDir) } if strings.HasSuffix(entry.URI, ".tar.xz") { + if stripComponents > 0 { + return ExtractTarXzWithStrip(tmpFile, outputDir, stripComponents) + } return ExtractTarXz(tmpFile, outputDir) } if strings.HasSuffix(entry.URI, ".tar.gz") || strings.HasSuffix(entry.URI, ".tgz") { + if stripComponents > 0 { + return ExtractTarGzWithStrip(tmpFile, outputDir, stripComponents) + } return ExtractTarGz(tmpFile, outputDir) } @@ -206,6 +228,11 @@ func (i *Installer) CleanupAppCache() error { } func (i *Installer) InstallOnlyVersion(depName string, installDir string) error { + return i.InstallOnlyVersionWithStrip(depName, installDir, 0) +} + +// InstallOnlyVersionWithStrip installs the only version of a dependency with optional path stripping +func (i *Installer) InstallOnlyVersionWithStrip(depName string, installDir string, stripComponents int) error { depVersions := i.manifest.AllDependencyVersions(depName) if len(depVersions) > 1 { @@ -215,7 +242,7 @@ func (i *Installer) InstallOnlyVersion(depName string, installDir string) error } dep := Dependency{Name: depName, Version: depVersions[0]} - return i.InstallDependency(dep, installDir) + return i.InstallDependencyWithStrip(dep, installDir, stripComponents) } func (i *Installer) fetchAppCachedBuildpackDependency(entry *ManifestEntry, outputFile string) error { diff --git a/vendor/modules.txt b/vendor/modules.txt index cfcf2876..a55b2d97 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -15,7 +15,7 @@ github.com/blang/semver # github.com/cenkalti/backoff/v4 v4.3.0 ## explicit; go 1.18 github.com/cenkalti/backoff/v4 -# github.com/cloudfoundry/libbuildpack v0.0.0-20251202224209-b07cc3dab65e +# github.com/cloudfoundry/libbuildpack v0.0.0-20260306121953-8ab9253c8181 ## explicit; go 1.22.5 github.com/cloudfoundry/libbuildpack github.com/cloudfoundry/libbuildpack/ansicleaner @@ -65,8 +65,6 @@ github.com/docker/go-units # github.com/felixge/httpsnoop v1.0.4 ## explicit; go 1.13 github.com/felixge/httpsnoop -# github.com/fsnotify/fsnotify v1.8.0 -## explicit; go 1.17 # github.com/gabriel-vasile/mimetype v1.4.6 ## explicit; go 1.20 github.com/gabriel-vasile/mimetype @@ -102,8 +100,6 @@ github.com/google/pprof/profile # github.com/moby/docker-image-spec v1.3.1 ## explicit; go 1.18 github.com/moby/docker-image-spec/specs-go/v1 -# github.com/nxadm/tail v1.4.11 -## explicit; go 1.13 # github.com/onsi/ginkgo/v2 v2.28.1 ## explicit; go 1.24.0 github.com/onsi/ginkgo/v2