Opened 2 years ago
Closed 22 months ago
#66415 closed defect (fixed)
cmake @3.24.3 - patch does not work - attempts to patch an empty directory
Reported by: | snowflake (Dave Evans) | Owned by: | jmroot (Joshua Root) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.99 |
Keywords: | Cc: | michaelld (Michael Dickens), aeiouaeiouaeiouaeiouaeiouaeiou | |
Port: | cmake |
Description
sudo port patch cmake
does not work. It attempts to patch an empty directory. This is odd, as it worked last week. It may be related to using the latest macports-base checkout.
This happens on both El Capitan and Monterey.
Checkouts:
[ffdb7d9ee9e59e9d69a2f29ac08dfd5090f84759/macports-base] (version 2.8.99)
[0cc71e8df56f9a4aa28ec508d45169cde759c00e/macports-ports]
sudo port clean cmake sudo port extract cmake cd $(port work cmake) ls cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17 sudo port -d patch cmake ls cmake-3.24.3 cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17 The directory with the short name, which has now appeared, is empty.
Here's a partial listing of the log. It's applying the patch to the empty directory and failing:
Executing: cd "/opt/local/var/macports/build/_Users_davidevans_macports_sources_github.com_macports_macports-ports_devel_cmake/cmake/work/cmake-3.24.3" && /usr/bin/patch -p0 < '/Users/davidevans/macports/sources/github.com/macports/macports-ports/devel/cmake/files/patch-Modules-noArchCheck.diff' DEBUG: system: cd "/opt/local/var/macports/build/_Users_davidevans_macports_sources_github.com_macports_macports-ports_devel_cmake/cmake/work/cmake-3.24.3" && /usr/bin/patch -p0 < '/Users/davidevans/macports/sources/github.com/macports/macports-ports/devel/cmake/files/patch-Modules-noArchCheck.diff' can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Modules/BasicConfigVersion-AnyNewerVersion.cmake.in.orig |+++ Modules/BasicConfigVersion-AnyNewerVersion.cmake.in -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 21 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Modules/BasicConfigVersion-ExactVersion.cmake.in.orig |+++ Modules/BasicConfigVersion-ExactVersion.cmake.in -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 39 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Modules/BasicConfigVersion-SameMajorVersion.cmake.in.orig |+++ Modules/BasicConfigVersion-SameMajorVersion.cmake.in -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored can't find file to patch at input line 57 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Modules/BasicConfigVersion-SameMinorVersion.cmake.in.orig |+++ Modules/BasicConfigVersion-SameMinorVersion.cmake.in -------------------------- File to patch: Skip this patch? [y] Skipping patch. 1 out of 1 hunk ignored Command failed: cd "/opt/local/var/macports/build/_Users_davidevans_macports_sources_github.com_macports_macports-ports_devel_cmake/cmake/work/cmake-3.24.3" && /usr/bin/patch -p0 < '/Users/davidevans/macports/sources/github.com/macports/macports-ports/devel/cmake/files/patch-Modules-noArchCheck.diff' Exit code: 1 Error: Failed to patch cmake: command execution failed DEBUG: Error code: CHILDSTATUS 62912 1
Change History (20)
comment:1 Changed 2 years ago by michaelld (Michael Dickens)
comment:2 Changed 2 years ago by michaelld (Michael Dickens)
Yup I see this issue too with the latest BASE HEAD .. across the board, not just a specific OS / Xcode version
comment:3 Changed 2 years ago by michaelld (Michael Dickens)
ah ... guessing it's a default patch level setting
comment:4 Changed 2 years ago by michaelld (Michael Dickens)
or not ... that's correct ...hmmm ... strange !!!
comment:5 Changed 2 years ago by michaelld (Michael Dickens)
ah ... looks like the link from short WORKSRCDIR to long isn't working ...
$ pwd /opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake/cmake/work ll total 8 drwxrwxrwx 2 macports admin 64 Dec 7 14:34 .home/ -rw-rw-rw- 1 macports admin 192 Dec 7 14:34 .macports.cmake.state drwxrwxrwx 2 macports admin 64 Dec 7 14:34 .tmp/ drwxrwxrwx 2 macports admin 64 Dec 7 14:34 cmake-3.24.3/ drwxrwxrwx 29 macports admin 928 Nov 1 10:55 cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17/ $ ll cmake* cmake-3.24.3: cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17: total 440 -rw-rw-rw- 1 macports admin 1411 Nov 1 10:55 .clang-format -rw-rw-rw- 1 macports admin 1377 Nov 1 10:55 .clang-tidy drwxrwxrwx 7 macports admin 224 Nov 1 10:55 Auxiliary/ -rw-rw-rw- 1 macports admin 10073 Nov 1 10:55 CMakeCPack.cmake -rw-rw-rw- 1 macports admin 12255 Nov 1 10:55 CMakeCPackOptions.cmake.in -rw-rw-rw- 1 macports admin 153 Nov 1 10:55 CMakeGraphVizOptions.cmake -rw-rw-rw- 1 macports admin 34829 Nov 1 10:55 CMakeLists.txt -rw-rw-rw- 1 macports admin 4481 Nov 1 10:55 CMakeLogo.gif -rw-rw-rw- 1 macports admin 3118 Nov 1 10:55 CONTRIBUTING.rst -rw-rw-rw- 1 macports admin 566 Nov 1 10:55 CTestConfig.cmake -rw-rw-rw- 1 macports admin 6915 Nov 1 10:55 CTestCustom.cmake.in -rw-rw-rw- 1 macports admin 4802 Nov 1 10:55 CompileFlags.cmake -rw-rw-rw- 1 macports admin 5440 Nov 1 10:55 Copyright.txt -rw-rw-rw- 1 macports admin 374 Nov 1 10:55 DartConfig.cmake drwxrwxrwx 22 macports admin 704 Nov 1 10:55 Help/ drwxrwxrwx 5 macports admin 160 Nov 1 10:55 Licenses/ drwxrwxrwx 441 macports admin 14112 Nov 1 10:55 Modules/ drwxrwxrwx 5 macports admin 160 Nov 1 10:55 Packaging/ -rw-rw-rw- 1 macports admin 3951 Nov 1 10:55 README.rst drwxrwxrwx 765 macports admin 24480 Nov 1 10:55 Source/ drwxrwxrwx 13 macports admin 416 Nov 1 10:55 Templates/ drwxrwxrwx 307 macports admin 9824 Nov 1 10:55 Tests/ drwxrwxrwx 29 macports admin 928 Nov 1 10:55 Utilities/ -rwxrwxrwx 1 macports admin 64762 Nov 1 10:55 bootstrap* -rw-rw-rw- 1 macports admin 789 Nov 1 10:55 cmake_uninstall.cmake.in -rwxrwxrwx 1 macports admin 99 Nov 1 10:55 configure* -rw-rw-rw- 1 macports admin 28046 Nov 1 10:55 doxygen.config
WORKSRCDIR is set to the short version, which is empty ... here's a prior one that's working:
$ pwd /opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake/cmake/work $ ll total 8 drwxrwxrwx 2 macports admin 64 Dec 7 14:11 .home/ -rw-rw-rw- 1 macports admin 219 Dec 7 14:11 .macports.cmake.state drwxrwxrwx 2 macports admin 64 Dec 7 14:11 .tmp/ lrwxrwxrwx 1 macports admin 54 Dec 7 14:11 cmake-3.24.3@ -> cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17 drwxrwxrwx 31 macports admin 992 Dec 7 14:11 cmake-v3.24.3-c974557598645360fbabac71352b083117e3cc17/
So looks like the prior symlink was replaced by a directory ... oops!
comment:6 Changed 2 years ago by michaelld (Michael Dickens)
oh wow ... the commit being reverted (7921b2e05) is from December 29, 2017 at 10:54:09 AM EST ... can't say I'm happy about that reversion given that it will break ports like cmake. The commit message for the reversion says This change silently broke an unknown number of ports due to different behaviour of symlinks vs directories. See e.g. slime, scm_breeze. The reversion may also break things, but at least they'll give an error rather than silently installing nothing but a broken link.
So ... the original commit broke stuff, and reverting it also breaks stuff ... which is worse? hmmm ...
comment:7 Changed 2 years ago by michaelld (Michael Dickens)
Cc: | jmroot added |
---|---|
Owner: | changed from michaelld to jmroot |
comment:8 Changed 2 years ago by michaelld (Michael Dickens)
Luckily this not part of the current MP release, so there's time to fix it before the next release :)
comment:9 Changed 2 years ago by jmroot (Joshua Root)
For most ports, setting worksrcdir correctly is all that's needed to avoid problems. If there are ports where it's difficult to work out the value of worksrcdir a priori, I'd be open to having an option that can be set to enable the behaviour (though I think renaming rather than symlinking would still be safer in that case.)
comment:10 Changed 2 years ago by jmroot (Joshua Root)
Cc: | michaelld added; jmroot removed |
---|
comment:11 follow-up: 12 Changed 2 years ago by jmroot (Joshua Root)
comment:12 Changed 2 years ago by michaelld (Michael Dickens)
This works for cmake
, but not cmake-devel
...
Replying to jmroot:
In 8ae0d73589330693f3b17849fdd5e65f0f56a5c1/macports-base (master):
$ sudo port -d patch cmake-devel [snip] DEBUG: system: cd "/opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake-devel/cmake-devel/work" && /opt/local/bin/lbzip2 -dc '/opt/sources/MacPorts/distfiles/cmake/cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e.tar.bz2' | /usr/bin/tar -xf - DEBUG: euid/egid changed to: 0/0 DEBUG: chowned /opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake-devel/cmake-devel/work to macports DEBUG: euid/egid changed to: 503/501 DEBUG: extract.rename: Renaming cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e -> cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e Error: Failed to extract cmake-devel: error renaming "/opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake-devel/cmake-devel/work/cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e" to "/opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake-devel/cmake-devel/work/cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e/cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e": trying to rename a volume or move a directory into itself DEBUG: Error code: NONE [snip] $ pushd $(port work cmake-devel) /opt/local/var/macports/build/_opt_sources_MacPorts_ports_github_macports_devel_cmake-devel/cmake-devel/work /opt/sources/MacPorts/ports/github_macports $ ll total 8 drwxrwxrwx 2 macports wheel 64 Dec 12 15:07 .home/ -rw-rw-rw- 1 macports wheel 143 Dec 12 15:07 .macports.cmake-devel.state drwxrwxrwx 2 macports wheel 64 Dec 12 15:07 .tmp/ drwxrwxrwx 29 macports wheel 928 Nov 30 08:57 cmake-5676593be9bd3a26995f35b9db8fe5b9af8ea32e/
comment:13 Changed 2 years ago by michaelld (Michael Dickens)
The ll
above is what I see when using port
still using the old linking method ... meaning, it doesn't actually do anything for this style of worksrcdir
... hopefully this helps fix the issue!
comment:14 Changed 2 years ago by jmroot (Joshua Root)
This is probably something that should be handled in the gitlab portgroup.
comment:15 Changed 2 years ago by jmroot (Joshua Root)
For that matter, why is cmake (not -devel) using gitlab generated downloads at all? There are proper release tarballs on GitHub and that's where https://cmake.org/download/ is pointing now.
comment:16 Changed 2 years ago by michaelld (Michael Dickens)
Interesting & good point! Well, Kitware has their own gitlab instance running at https://gitlab.kitware.com/
... that's what those Portfiles are using. Looking at the downloads, I see that they go direct to Github ... I'll look into changing them over to that download method instead. good catch!
comment:17 Changed 23 months ago by aeiouaeiouaeiouaeiouaeiouaeiou
Cc: | aeiouaeiouaeiouaeiouaeiouaeiou added |
---|
comment:18 Changed 22 months ago by jmroot (Joshua Root)
comment:19 Changed 22 months ago by jmroot (Joshua Root)
comment:20 Changed 22 months ago by michaelld (Michael Dickens)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Closing this since it has been fixed well enough, even if still a bit of a work in progress
Works for me on the following:
2.8.0-99-20221129-01-3d9856bc
/ macOS version11.7.2 20G1008
Intel / Xcode version12.3 12C33
2.8.0-99-20221116-01-887b2fb9
/ macOS version11.7.2 20G1011
ARM64 / Xcode version13.2.1 13C100
2.8.0-99-20221116-01-887b2fb9
/ macOS version13.1 22C5059b
/ Xcode version14.1 14B47b
I will update one of these to the latest BASE code & see what happens