Project

General

Profile

Actions

Bug #20495

closed

Running "make clean" deletes critical "coroutine/amd64/Context.S" file and causes "make" to fail

Added by fallwith (James Bunch) 6 months ago. Updated 5 months ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
3.4.0-preview1
[ruby-core:117921]

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) 6 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) 6 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) 6 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) 6 months ago

I wrote a fix for this a couple weeks ago. https://github.com/ruby/ruby/pull/10699

Updated by ioquatix (Samuel Williams) 5 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) 5 months ago

  • Status changed from Open to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0