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) 11 months ago. Updated 10 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) 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) 11 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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0