Bug #20495
closedRunning "make clean" deletes critical "coroutine/amd64/Context.S" file and causes "make" to fail
Description
When attempting to build v3.4.0-preview1 from source, we discovered that make clean
will delete coroutine/amd64/Context.S
, and then neither ./configure
nor make
will replace that file. When that file is missing, make
will fail. coroutine/amd64/Context.S
is included in the .tar.gz file, and make clean
deletes it without leaving a solution for recreating it.
$ tar xzf ruby-3.4.0-preview1.tar.gz
$ cd ruby-3.4.0-preview1
$ ll coroutine/amd64
.rw-r--r--@ 2.2k 501 20 2024-05-15 21:54 Context.h
.rw-r--r--@ 1.1k 501 20 2024-05-15 21:54 Context.S
$ ./configure
$ make clean
$ ll coroutine/amd64
.rw-r--r--@ 2.2k 501 20 2024-05-15 21:54 Context.h
$ make
(lots of healthy output here)
compiling yjit.c
building Rust YJIT (release mode)
touch yjit/target/release/libyjit.a
partial linking yjit/target/release/libyjit.a into yjit/target/release/libyjit.o
make: *** No rule to make target `coroutine/amd64/Context.S', needed by `coroutine/amd64/Context.o'. Stop.
Updated by mame (Yusuke Endoh) 11 months ago
For now, make clean
is for those who "git clone" the repository. Don't use it for tarball package.
Updated by katei (Yuta Saito) 11 months ago
I guess it happens when building in-place on case-insensitive fs platform due to this line: https://github.com/ruby/ruby/blob/7afc16aa48beb093b06eb978bc430f90dd771690/template/Makefile.in#L498
I could reproduce it on macOS with in-place build.
Updated by byroot (Jean Boussier) 11 months ago
This has been plaguing people developing on MacOS (and I suppose any case insensitive file system) for months. Maxime recently added a .gitignore
rule to somewhat work-around it, but I suspect there is a better fix: https://github.com/ruby/ruby/commit/ade22339e3056710dbe27eaa624c2e76fa15567b#diff-bc37d034bad564583790a46f19d807abfe519c5671395fd494d8cce506c42947R170
Updated by eileencodes (Eileen Uchitelle) 10 months ago
I wrote a fix for this a couple weeks ago. https://github.com/ruby/ruby/pull/10699
Updated by ioquatix (Samuel Williams) 10 months ago
The fix looks good to me. I also think we should do out of tree builds if possible to make things like make clean
a bit less accidentally destructive.
Updated by hsbt (Hiroshi SHIBATA) 10 months ago
- Status changed from Open to Closed
https://github.com/ruby/ruby/pull/10699 has been merged.