[ruby-dev:49743] [Ruby trunk Bug#12471] make update-mspec always fails on Solaris
From:
usa@...
Date:
2016-08-04 05:45:25 UTC
List:
ruby-dev #49743
Issue #12471 has been updated by Usaku NAKAMURA.
Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: DONTNEED, 2.2: DONTNEED, 2.3: DONTNEED
----------------------------------------
Bug #12471: make update-mspec always fails on Solaris
https://bugs.ruby-lang.org/issues/12471#change-59911
* Author: Naohisa Goto
* Status: Closed
* Priority: Normal
* Assignee:
* ruby -v:
* Backport: 2.1: DONTNEED, 2.2: DONTNEED, 2.3: DONTNEED
----------------------------------------
r55303 以降、Solaris 10 にて make update-rubyspec すると、以下のエラーが常に発生します。
~~~
make update-rubyspec V=1
make: *** [update-mspec] Error 1
~~~
r55303 の変更で、以下のように if で直接 cd するように変更されましたが、
~~~
update-mspec:
@$(CHDIR) $(srcdir); \
- if [ -d spec/mspec ]; then \
+ if cd spec/mspec 2> $(NULL); then \
echo updating mspec ...; \
~~~
Solaris の /bin/sh では、if で cd を使うと、cd できなかった場合は else 以下は実行されず、それどころか if の後の文さえ実行されず、cd 失敗時に即座に実行終了してしまうことが判明しました。以下は実行例です。
~~~
Solaris$ /bin/sh -c "if cd /does_not_exist; then echo YES; else echo NO; fi; echo END"
/bin/sh: /does_not_exist: does not exist
Solaris$
~~~
Linuxでは、想定通りに実行されます。
~~~
Linux$ /bin/sh -c "if cd /does_not_exist; then echo YES; else echo NO; fi; echo END"
/bin/sh: 1: cd: can't cd to /does_not_exist
NO
END
Linux$
~~~
存在するディレクトリの場合は、大丈夫なようです。
~~~
Solaris$ /bin/sh -c "if cd /tmp; then echo YES; else echo NO; fi; echo END"
YES
END
Solaris$
~~~
このため、r55303 はrevertしたいと思います。
--
https://bugs.ruby-lang.org/