์ ์( @karelz ์์ฑ - https://github.com/dotnet/corefx/issues/1626#issuecomment-329840518)์ ์ถ๊ฐ ํ ๋ก ๋ฐ ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ํ ํฌ์คํธ์ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ชจ๋์ด ์ผ์ ๊ด์ฌ์ ํ๋ช
@RussellHaley ๋ฐ @wfurt (FreeBSD์ ์ปค๋ฎค๋ํฐ) (.NET์์ ์ฝ์ด ํ)์ FreeBSD๋ฅผ์ํ ์ง์ญ ์ฌํ ์ค์ฌ์ ํฌํธ๋ฅผ ๋
ผ์ํ๋ค.
๋ค์์ ์ฐ๋ฆฌ๊ฐ ํจ๊ป ๋ง๋ ๊ณํ ์ ์์
๋๋ค(ํผ๋๋ฐฑ/์ ์ ํ์).
์๋ ์๋ฆฌ:
๋์์ด ํ์ํ ์ฌ๋์ด ์์ผ๋ฉด ์ฌ๊ธฐ์์ ์๋ ค์ฃผ์ญ์์ค. [1]๊ณผ ์ถฉ๋ถํ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ผ๋ฉด ์์ [2]์ [3]์์ ์์ ํญ๋ชฉ์ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ corefx์ฉ FreeBSD ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ค์ ๋ก ์์ฑํ๊ธฐ ์ํ ์์ ๋จ์์ ๋ํด ๋ ผ์ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
@stephentoub - ์ค์ ๋ก FreeBSD๋ฅผ ์ํด ๊ตฌ์ถ ์ค์ธ ๋ ์๊ธํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ค๋๋ ํน์ ํ๋ซํผ์ ๋ํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ ๋ฌธํํด์ผ ํ ๋ Windows, Linux, OSX์ ์ธ ๊ฐ์ง ๊ด๋ฆฌ๋๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์์ฑํ๋ ์ธ ๊ฐ์ง ๋น๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด์ ํ๊ณ ์์ต๋๋ค. ์ ์ด๋ ์ง๊ธ์ผ๋ก์๋ ๋ค ๋ฒ์งธ FreeBSD๊ฐ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ ํ OSGroup ๋์๊ณผ ํจ๊ป IsFreeBSD ์์ฑ์ ์ง์ํ๋๋ก ๋น๋๋ฅผ ์์ ํ๋ ๊ฒ์ผ๋ก ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์์ ๋ฐ๋ผ csproj ํ์ผ์์ FreeBSD ๊ด๋ จ ์ฝ๋๋ก ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ ๋ฌธํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ด๋ จ ๋ฌธ์ )
/cc: @janhenke @josteink
https://github.com/dotnet/corefx/issues/1576 ์ ๊ดํ ํ ํฉ์๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/dotnet/corefx/issues/1625์ ๋ํ ๊ฒฐ์ ๋ ๋ด๋ ค์ง๋ฉด ์ผ๋ถ ์ฝ๋๋ฅผ ๋ฐฐ์กํ ์ ์์ต๋๋ค.
MSFT๊ฐ ๋ฌ๋ฆฌ ์ ํํ์ง ์๋ ํ dotnet/runtime#14536์ ๋ํ ํฉ์๊ฐ ํฌํธ ํ์ ์ํด ๋๋ฌ๋์์ต๋๋ค. FreeBSD
์
๋๋ค. ๋ฌธ์ dotnet/corefx#1999๋ ๊ณต๊ฐ API์ ์ ์๋ฅผ ๋์
ํ๋ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
MSFT๊ฐ ๋ฌ๋ฆฌ ์ ํํ์ง ์๋ ํ, ํฌํธ ํ์ dotnet/runtime#14536์ ๋ํ ํฉ์์ ๋๋ฌํ์ต๋๋ค.
๋ด๊ฐ ๊ทธ ๊ถ๋ฆฌ๋ฅผ ์ฝ์ผ๋ฉด https://github.com/dotnet/corefx/pull/1999 ๊ฐ ๋ณํฉ๋ ๋ ์ด MSFT๊ฐ ์๋ก์ด ๊ณต๊ฐ API๋ฅผ ์น์ธํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ ์ ์์ผ๋ฏ๋ก MSFT ์น์ธ์ด ํ์ ์๋ ์ผ๋ฐ ํ ์์ฒญ.
๊ทธ๋ ๋ค๋ฉด ๋์๊ฒ ์ข์ ์๋ฆฌ์ ๋๋ค.
https://github.com/dotnet/corefx/pull/1999#issuecomment -111279577์ ๋ฐ๋ฅธ ๋ค์ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- "FreeBSD ํฌํธ ํ"์ CoreFX์ FreeBSD ๋ฒ์ ์ ๋ง๋ค๊ธฐ ์ํ ์์ ์ ๊ณ์ํฉ๋๋ค(dotnet/corefx#1626์ ์ํด ์ถ์ ๋จ).
- ํฌํธ ํ์ FreeBSD์์ CoreFX ๋จ์ ํ ์คํธ ์คํ์ ์์ํ ์ ์๋๋ก FreeBSD์์ CoreFX ๋ฐ CoreCLR ์คํ์ ์ถฉ๋ถํ ์ ๊ณตํฉ๋๋ค.
- ํ ์คํธ๋ ์ต์ํ์ ํ์ง ์์ค์ ๋๋ฌํฉ๋๋ค. ์์ง ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ ํํ ์์ง ๋ชปํ์ง๋ง ๋๋ถ๋ถ์ ํ ์คํธ๊ฐ ํต๊ณผํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์ ์๋ฏธํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ FreeBSD์ ๋ํด์๋ง ํน์ ํ ์คํธ๋ฅผ ๋นํ์ฑํํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค(Linux ๋ฐ OSX์ ๋น๊ตํ์ฌ FreeBSD๋ฅผ ๋ค๋ฅธ *NIX ํ๋ซํผ๋ณด๋ค ๋์ ํ์ค์ผ๋ก ์ ์งํ๊ณ ์ถ์ง๋ ์์ต๋๋ค).
- FreeBSD ํฌํธ ํ๊ณผ ํ๋ ฅํ์ฌ CoreFX ํ์ FreeBSD์์ ์คํ๋๋ CI ์์คํ ์ CoreFX ํ ์คํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์์ฑ์ ์ถ๊ฐํ๋ ๋ฌธ์ dotnet/runtime#14536์ ๊ธฐ๋ฐํ PR ๋ณํฉ์ ๋ํด ๋ ผ์ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋์๊ฒ ์์ ํ ํฉ๋ฆฌ์ ์ธ ๊ณํ์ฒ๋ผ ๋ค๋ฆฐ๋ค.
์, ๊ทธ๋ผ corefx๊ฐ ์๋ํ๋๋ก ํ๋ ์์ ์ ์์ํ๊ฒ ์ต๋๋ค.
FreeBSD์์ corefx๋ฅผ ๊ตฌ์ถํ๋ ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ ๋ชจ๋ ธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋น๋ ์คํฌ๋ฆฝํธ๋ ๋ฒ์ 4.1์ด ํ์ํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. @ajensenwaud ๋ ํ๋ํฌํธ๋ฅดํธ ํธ์คํธ์์ ์ด ์์ ์ ์ํํ์ง๋ง ์ผ๋ง๋ ์์ ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ง๊ธ์ ๋น๋๋ฅผ ๋๊ธฐ์ด์ ๋ฃ๊ณ ์ถ๋ ฅ์ด ์ด๋ป๊ฒ ๋ณด์ด๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
ํธ์ง: (๋ชจ๋ ธ) ๋น๋๊ฐ ๋ง์ง๋ง์ ๋ค์ ํค์ปค์ ํจ๊ป ์ถฉ๋ํฉ๋๋ค.
Making all in mini
make[1]: "/usr/home/josteink/mono/mono/mini/Makefile" line 2906: warning: duplicate script for target "%.exe" ignored
make[1]: "/usr/home/josteink/mono/mono/mini/Makefile" line 2899: warning: using previous script for "%.exe" defined here
CC genmdesc-genmdesc.o
In file included from genmdesc.c:9:0:
mini.h:17:34: fatal error: ./mono/metadata/loader.h: Too many levels of symbolic links
#include <mono/metadata/loader.h>
^
compilation terminated.
*** Error code 1
Stop.
make[1]: stopped in /usr/home/josteink/mono/mono/mini
*** Error code 1
Stop.
FreeBSD์์ corefx๋ฅผ ๊ตฌ์ถํ๋ ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ ๋ชจ๋ ธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
FWIW, ๊ฐ์ธ์ ์ผ๋ก ์ด๊ฒ์ด ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ ๊ฐ์ง ๋น๋ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
(1) ์ค์ํ๋ฉฐ ์ด ๋ฌธ์ ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์๊ฐํฉ๋๋ค. (2) ์์ผ๋ฉด ๋งค์ฐ ์ข์ง๋ง, FreeBSD์์ ๊ด๋ฆฌ๋๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ํ๋ฅญํ ์์คํ ์ ๋ง๋๋ ๊ฒ์ ๋ง์ง๋ ๋ชปํฉ๋๋ค.
๋ฌผ๋ก ์ ํฉํ๋ค๊ณ ์๊ฐ๋๋ ์ฐ์ ์์๋ฅผ ์์ ๋กญ๊ฒ ์ง์ ํ ์ ์์ง๋ง ์ ์ถ์ฒ์ (2)๋ณด๋ค๋ (1)์ ์ง์คํ๋ ๊ฒ์ ๋๋ค.
Linux์์ corefx๋ฅผ ๋น๋ํ๊ณ OSX์์ ๋น๋ํ๋ ๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก CI ์์คํ ์ด Windows์์ ํด๋น ํ๋ซํผ์ ๋ํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋น๋ํ๋๋ก ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฒฐ๊ณผ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋์ ํ๋ซํผ์ผ๋ก ์ ํํ์ฌ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
์ถฉ๋ถํ ์ ๋นํฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก FreeBSD์์ ์ง์ ๊ตฌ์ถํ ์ ์๋ค๋ฉด corefx์ ๊ตฌ์์ง ์ผ๋ฐ์ ์ธ FreeBSD ํ๋ซํผ ์ง์์ ์ป๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ง๊ธ์ Windows์์ ์์ํ ๋น๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋น๋ ๊ตฌ์ฑ์ ํจ๊ป ์ํํ๋ ค๊ณ ํฉ๋๋ค.
@josteink btw. corefx๋ ์ด์ Mono 4.0.1.44์์ ๋น๋๋์ด์ผ ํฉ๋๋ค.
@akoeplinger ๋์ค. ๊ทธ๋์ FreeBSD์์๋ ์คํํ ์ ์๋ค๋ ํฌ๋ง์ด ์๊ฒผ์ต๋๋ค. :)
์ข์ ์ . ๊ทธ๋ฌ๋ corefx๊ฐ FreeBSD ํ๊ฒฝ์ ์ผ๋ถ๊ฐ ๋๊ธฐ๋ฅผ ์ ๋ง๋ก ์ํ๋ค๋ฉด ์์ค์์ ์ปดํ์ผํ์ฌ ํฌํธ ์์คํ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ด์ผ ํฉ๋๋ค.
Mono 4.0.1.44๊ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ง์ด ์์ ํ๋ค๊ณ ๋ค์์ง๋ง ์์ง ๋ค๋ฃฐ ์๊ฐ์ด ์์์ต๋๋ค. ๋๋ ํฌํธ ํ์ด ํฌํธ Makefile์ ์ ๋ฐ์ดํธํ๊ณ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ์๋ก์ด ํจ์น์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
2015๋ 6์ 12์ผ 20:21์ Stephen Toub [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
FreeBSD์์ corefx๋ฅผ ๊ตฌ์ถํ๋ ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ ๋ชจ๋ ธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
FWIW, ๊ฐ์ธ์ ์ผ๋ก ์ด๊ฒ์ด ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ ๊ฐ์ง ๋น๋ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
FreeBSD์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ์ด์ ๋ธ๋ฆฌ ๋น๋
FreeBSD์์ ์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ ๋น๋
(1) ์ค์ํ๋ฉฐ ์ด ๋ฌธ์ ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์๊ฐํฉ๋๋ค. (2) ์์ผ๋ฉด ๋งค์ฐ ์ข์ง๋ง, FreeBSD์์ ๊ด๋ฆฌ๋๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ํ๋ฅญํ ์์คํ ์ ๋ง๋๋ ๊ฒ์ ๋ง์ง๋ ๋ชปํฉ๋๋ค.๋ฌผ๋ก ์ ํฉํ๋ค๊ณ ์๊ฐ๋๋ ์ฐ์ ์์๋ฅผ ์์ ๋กญ๊ฒ ์ง์ ํ ์ ์์ง๋ง ์ ์ถ์ฒ์ (2)๋ณด๋ค๋ (1)์ ์ง์คํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ CI ์์คํ ์ด Windows์์ ํด๋น ํ๋ซํผ์ ๋ํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋น๋ํ๋๋ก corefx build-on-Linux ๋ฐ build-on-OSX๊ฐ ๊ฑฐ์ ์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ๊ฒฐ๊ณผ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋์ ํ๋ซํผ์ผ๋ก ์ ํํ์ฌ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
๋ค, ์ ๋ ๊ฒฐ์ฝ ๋์ํ์ง ์์ต๋๋ค... Linux, OSX, FreeBSD์์ corefx๋ฅผ _build_ํ ์ ์๋ค๋ ๊ฒ์ ์ค์ํฉ๋๋ค. ์ฐ์ ์์ ๊ด์ ์์ Linux, OSX, FreeBSD์์ corefx๋ฅผ ์ค์ ๋ก _run_ ์คํํ ์ ์๋ ๊ฒ์ด ๋ ์ค์ํ๋ค๊ณ ์ ์ํ๋ ๊ฒ๋ฟ์ ๋๋ค. :wink: ๋ ๋ค ๋ณ๋ ฌ๋ก ์์ ํ ์ ์๋ค๋ฉด ๋ ์ข์ต๋๋ค.
@guntley ,
๋ค์๊ณผ ๊ฐ์ต๋๋ค:์ฟจ: ๋จ์ ์๋ ํญ๋ชฉ์ ์์ฝํ ๋งํฌ๋ค์ด ์์
์ฒดํฌ๋ฆฌ์คํธ๊ฐ ์๋ ๊ฒฝ์ฐ:
- [x] task 1
- [ ] task 2
- [ ] task 3
๋ค์๊ณผ ๊ฐ์ด ๋ ๋๋งํฉ๋๋ค.
์ด๊ฒ์ ์๋ง๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ทธ๋ฌํ ์ ์ ์ ๋ฌ์ฑํ๋๋ก ์ฅ๋ คํ ๊ฒ์ด๋ฉฐ FreeBSD ์ง์์ ์์๋ณด๋ค ํจ์ฌ ๋นจ๋ฆฌ ๋์ฐฉํ ๊ฒ์ ๋๋ค! :์์๊ฒฝ:
๋ด๊ฐ ์๋ ํ FreeBSD ์ง์์๋ CoreFX์์ ๋ค์ ์์ ์ด ํ์ํฉ๋๋ค.
13 ์ด์ ๋ธ๋ฆฌ๋ ์์ฒด์ ์ผ๋ก ์ปดํ์ผ๋์ง ์์ผ๋ฉฐ FreeBSD์ ํน์ ํ ๋ณ๊ฒฝ์ด ํ์ํฉ๋๋ค. ๋๋ถ๋ถ Linux/OS X์ฉ์ผ๋ก ์ด๋ฏธ ์กด์ฌํ๋ Interop ์กฐ๊ฐ(๋น๋ ์ถ๋ ฅ์ ๋ฐ์์):
System.Private.URI
(์๋ฃ, PR dotnet/corefx#2032 ๋ณํฉ)System.Console
(์๋ฃ, PR dotnet/corefx#2031 ๋ณํฉ)System.Diagnostics.Debug
(์๋ฃ, PR dotnet/corefx#2039 ๋ณํฉ)System.Diagnostics.Process
(ํ ๋ก dotnet/corefx#2070, ํ๋ณด dotnet/corefx#3257)System.IO.Compression.ZipFile
(์๋ฃ, PR dotnet/corefx#2041 ๋ณํฉ)System.IO.FileSystem.DriveInfo
(ํ ๋ก dotnet/corefx#2526, ํ๋ณด dotnet/corefx#2606)System.IO.FileSystem.Watcher
(ํ ๋ก dotnet/corefx#2046, ํ๋ณด dotnet/corefx#3257)System.IO.FileSystem
(์๋ฃ, PR dotnet/corefx#2049 ๋ณํฉ)System.IO.MemoryMappedFiles
(ํ ๋ก dotnet/corefx#2527, ํ๋ณด dotnet/corefx#3143)System.IO.Pipes
(ํ ๋ก dotnet/corefx#2528, ํ๋ณด dotnet/corefx#2974)System.Net.NameResolution
(ํ ๋ก dotnet/corefx#2988, ํ๋ณด dotnet/corefx#3471)System.Security.Cryptography.Hashing.Algorithms
(์๋ฃ, PR dotnet/corefx#2040 ๋ณํฉ)System.Security.SecureString
(์๋ฃ, PR dotnet/corefx#2039 ๋ณํฉ)System.Runtime.Environment
(dotnet/corefx#1999์ ์ํด ์ฐจ๋จ๋จ)System.Runtime.InteropServices.RuntimInformation
(์๋ฃ, PR dotnet/corefx#2068 ๋ณํฉ)์ด๋ฆฌ๊ณ ๋ณํฉ๋ PR์ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๋ ค๊ณ ํฉ๋๋ค.
์ฐธ๊ณ : PR dotnet/corefx#2039 ๋ณํฉ
์ฌ๊ธฐ์์ ์์๊ฐ๋ ค๊ณ ํ๋ ๊ฒ๋ฟ์
๋๋ค... System.IO.FileSystem.Watcher
์ด๋ป๊ฒ ๊ตฌํํ ๊ณํ์
๋๊น?
Iirc FreeBSD์๋ Linux ๋ฐ Windows์ ๊ฐ์ inotify
๊ฐ ์์ต๋๋ค(์ด๊ฒ์ด ์ง๋๋ฒ์ ํ์ธํ Dropbox๊ฐ ์๋ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค). ์ด๊ฒ์ด ๋ฌธ์ ์ ์ ์ฌ์ ์ธ ์์ธ์ด ๋ ๊ฒ์
๋๊น? ์๋๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น?
Stephen Toub๊ฐ ๋ค๋ฅธ ์ฃผ์ (https://github.com/dotnet/corefx/pull/2021#issuecomment-111602342)์์ ์ ์ํ ๋๋ก ์ ์ ์ด๋ฅผ ์คํ ํ๊ณ PlatformNotSupportedException์ ๋์ง ๊ฒ์ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ต์ํ ์์ ํ ์ด์ ๋ธ๋ฆฌ ์ธํธ๊ฐ ์์ผ๋ฉฐ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ํน์ ๋ฌธ์ ์ ๋ํด ๊ณ์ ์์ ํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋ํด ๋ณ๋์ ํธ๋ฅผ ์ด์ด ์ฃผ์๊ฒ ์ต๋๊น?
System.IO.FileSystem.Watcher
ํ ๋ก ์ dotnet/corefx#2046์ผ๋ก ์ด๋ํฉ์๋ค.
์๋ค์ System.Diagnostics.Process
๊ทธ๋ฐ ์ฐจ๋จ๊ธฐ๊ฐ ์์ต๋๊น?
@jasonwilliams200OK ๋ ์ค๋ ์์นจ ์ผ์ฐ FreeBSD๋ฅผ CheckPlatformTests
๋ด์ FreeBSD ํ
์คํธ๋ dotnet/buildtools
๊ฐ ์
๋ฐ์ดํธ๋ ๋๊น์ง ์ทจ์๋์ด์ผ ํ์ต๋๋ค.
[Fact,PlatformSpecific(PlatformID.FreeBSD)]
ํ
์คํธ๋ฅผ CheckPlatformTests์ ๋ค์ ์ ์ฉ - https://github.com/dotnet/corefx/pull/2068#discussion_r32570244 ๋ฐ https://github.com/dotnet/corefx/pull/2068#discussion_r32570244 ์ฐธ์กฐpublic static OSPlatform FreeBSD
์ถ๊ฐ@jasonwilliams200OK ์ง๋ ๋ฐค์ https://github.com/dotnet/corefx/issues/2070 ์ผ๋ก ๊ณต์ํ๋ gitter์์ System.Diagnostics.Process
์ ๋ํ ๋ช ๊ฐ์ง ํ ๋ก ์ด ์์์ต๋๋ค.
@huntley , ๊ฐ์ฌํฉ๋๋ค. ๋๋ ์ค์ ๋ก ๊ทธ ๋ฉ์์ง๋ฅผ ์ฝ์๋ค. System.Diagnostics.Process
๋ ๊น๋ค๋กญ์ต๋๋ค. AFAIK, io.js ํ์ FreeBSD ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํด ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช์์ต๋๋ค. Mono ํ์ ์๋ง๋ ๊ทธ๊ฒ์ ๋ชป ๋ฐ์์ ๊ฒ์ด๋ฏ๋ก @akoeplinger ๋ฐ co.์ธ ๊ฒฝ์ฐ ํฌ๋ง์ ๊ฐ์ง์ญ์์ค. ์ด ๋ฌธ์ ์ ๋ํด ์ฐ๋ฆฌ๋ฅผ ๊ณ๋ชฝํ ์ ์์ต๋๊น? :)
์์คํ .IO.ํ์ผ์์คํ .๋๋ผ์ด๋ธ ์ ๋ณด
gitter์์ ๋
ผ์ํ ๋ฐ์ ๊ฐ์ด getmntinfo
์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค.
#include <sys/param.h>
#include <sys/ucred.h>
#include <sys/mount.h>
#include <stdio.h>
int main() {
struct statfs *mntbuf;
int mntsize = getmntinfo(&mntbuf, MNT_NOWAIT);
for( int i = 0; i < mntsize; i++ ) {
printf("%s\n", mntbuf[i].f_mntonname);
}
}
ํด๋น ์ํ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ์์ฑ๋ฉ๋๋ค.
$ ./a.out
/
/dev
/tmp
/usr/home
/usr/ports
/usr/src
/var/crash
/var/log
/var/mail
/var/tmp
/dev/fd
/usr/compat/linux/proc
/proc
$
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ์ผ์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ ๋ ๊ฒฐ๊ณผ์ ๋ํด ์ด๋ค ์ ํ์ ํํฐ๋ง์ ์ํํด์ผ ํฉ๋๊น?
DriveInfo
๊ฐ์ฒด์ "์๋"๋ฅผ ์ดํด๋ณด๋ฉด Windows ์ธ๊ณ์ .NET์์ ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๊ฒ์ํ ์ ์๋ ์์น๋ฅผ ์ด๊ฑฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค( C:
, D:
๋ฑ). ๊ทธ๋ฌ๋ Unix ๊ณ์ธต์ ํ์ผ ์์คํ
์ ์ฌ์ฉํ ๋ /
๋ฐํํ๋ฉด ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ฐํํด์ผํฉ๋๊น? ๋ฌด์์ด ์ ์ฉํ ๊น์? ์ ์ฉํ๋ค๊ณ ์๊ฐํด์ผ ํ ๊น์?
Linux ๋ฒ์ ์ ๋ฌด์ํ๋๋ก ์ค์ ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ชจ๋ ๊ฒ์ ๋คํํฉ๋๋ค.
๋ค์ ํํฐ๋ฅผ ๋ฃ์ผ๋ ค๊ณ ์๋ํ์ง๋ง ์ถ๋ ฅ ์ธก๋ฉด์์ ์ค์ ๋ก ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
if ((mntbuf[i].f_flags != MNT_IGNORE)) {
printf("%s\n", mntbuf[i].f_mntonname);
}
์ด๋ค ์๊ฒฌ?
@josteink , ๋๋จํ ๋ฐ๊ตด! ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก https://github.com/dotnet/corefx/issues/815#issuecomment -113825960 ๋ฐ https://github.com/dotnet/corefx/issues/1729 , ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์ฌ @sokket๊ณผ ํ๋ ฅํด์ผํ๋ค๊ณ ์๊ฐ ๋ค๋ฅธ Unices์์ ์๋ํ๋ ์๋ฃจ์ ์ ๋๋ค.
Windows ๋๋ผ์ด๋ธ ๊ฐ๋ ์์ ๊ฐ์ฅ ๋ ผ๋ฆฌ์ ์ธ ๋งคํ์ฒ๋ผ ๋ณด์ด๋ ๊ฐ ๋ง์ดํธ ์ง์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด getmntinfo ๋ฐ statfs๋ฅผ ์ฌ์ฉํ๋ OSX์์ ์คํ ์ค์ธ ๋ฒ์ ์ด ์์ต๋๋ค. OSX์ ํจ์ ๋ฐ ๊ตฌ์กฐ์ฒด ์ ์๊ฐ FreeBSD ์ ์์ ์ผ์นํ๋์ง ๋ค์ ํ์ธํ๊ณ , ๊ทธ๋ ๋ค๋ฉด OSX์ ๋ํ ์ปค๋ฐ์ด BSD์์๋ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
๋ด PR @josteink์ ๋น์ ์ ์ถ๊ฐ
์ ๋ค๋ฆฐ๋ค. ๋ฏธ๋ฆฌ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํ๊ณ FreeBSD๋ ์ฌ๋ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ pinvoke๋ฅผ ์กฐ์ฌํ์ผ๋ฉฐ ๋ชจ๋ ๋ง์ฌ๋ง ๋ฐ ๋ณํ์ ์ง์ ์ํํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ฏธ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ธ ๊ฒฝ์ฐ ๋๊ฐ ๊ฑฐ๋ถํ ์ ์์ต๋๊น? ;)
๋ฌธ์ ์์ต๋๋ค...์ฃผ์ ์ฐจ์ด์ ์ ๊ตฌ์กฐ์ฒด ์ ์ธ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ ๋ง์ด ๊ฒช๊ฒ ๋ ๊ฒ์ด๋ฏ๋ก ๋ง์ PInvoke ์๋ช ์ ๊ณต์ ํ ์ ์๋๋ก ๋ฆฌํฉํ ๋ง์ ํ๊ณ ์์ต๋๋ค. ๋ด PR(์ค๋ ๋๋ ๋ด์ผ, ํ ์คํธ ์คํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ)์ ๋ ํฐ ์ค๋ช ์ ์ถ๊ฐํ ๊ฒ์ด์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก FreeBSD์ ๋ํ PInvoke ์๋ช ๊ณผ ๊ตฌ์กฐ์ฒด ์๋ช (์จ๋ผ์ธ์์ ์ฐพ์ ํค๋ ๊ธฐ๋ฐ)์ ์ถ๊ฐํ๊ณ ์ปดํ์ผํฉ๋๋ค. Mac์์ ํ ์คํธํ๊ธฐ ๋๋ฌธ์ _should_(์ด๋ก ์ ์ผ๋ก๋...) FreeBSD์์ ์๋ํฉ๋๋ค. ์ด๋ ๋จ์ง ๊ตฌ์กฐ์ฒด ์ ์ธ ๋ณ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์์ ๋ง์ผ๋ฆฌ์ง๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ DriveInfo ํด๋์ค์ PInvokes 99%๋ฅผ ๊ฐ๊ฒ ๋๋ฉฐ FreeBSD ๋์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๊ฐ์ ์กฐ์ ์ด ํ์ํฉ๋๋ค.
์ข์ ์์ @sokket. ํฌํธ ํ์ด ๊ฐ๋ฐ์ ์ฌ์ฉํ๋ ์ปดํจํฐ์ ๊ณ์ ์ ๋ง๋ค์์ต๋๋ค. ์ ๋ฝ ๊ธฐ๋ฐ์ด์ง๋ง ํญ์ ์ผ์ ธ ์๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ํ๋ถํฉ๋๋ค. ๋ฐ๋ผ๊ฑด๋ ์ด๊ฒ์ FreeBSD์ ํจ๊ป ์์ ํ ๋ ๋์์ด ๋๊ณ ๋ง์ฐฐ์ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
# ssh [email protected]
๋น๋ฐ๋ฒํธ ์ธ์ฆ์ด ๋นํ์ฑํ๋์์ต๋๋ค. ํค ์ค ํ๋๋ฅผ ์ฌ์ฉ
@josteink ๋ ๋ฌธ์ ์ฐธ์กฐ: https://github.com/dotnet/corefx/issues/815(Mac/FreeBSD ์ฉ System.IO.FileSystem.DriveInfo)
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? FreeBSD์์ ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ๊ตฌํํ ์ฌ๋์ด ์์ต๋๊น?
๋๋ ๋์ ์๋ก์ด ์๊ธฐ๋ฅผ ๋๋ณด๊ธฐ์ ๋ฐ๋นด๊ณ , ์ด๋์์๋ ์ฝ๋ฉํ ์๊ฐ์ด ์์์ต๋๋ค.
๋๋ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ ๋ณต ์ํ์ ์๋ค๊ณ ์์ฌํ๊ณ ์ด๊ฒ์ด ์ด๋ ์ ๋ ํ์ธ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ง ๊ตฌํ๋์ง ์์ ์ด์ ๋ธ๋ฆฌ์ ๊ฒฝ์ฐ ์ ๋ชฉ๋ก์์ "๊ตฌํ ๋ฐฉ๋ฒ" ๋ฌธ์ ๋ฅผ ์ฐ๊ฒฐํ์ต๋๋ค. ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ ์กฐ์ ํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ํ ์ผ๊ณผ ์ฅ์๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์๋ค๋ ๊ฒ์ ์ธ์ ํด์ผ ํ๋ฏ๋ก ํ์คํ ์ข์ ์กฐ์น์ ๋๋ค. ์ ํ์ด์ :)
์ด๋์์ ์ฐพ์ ์ ์์ต๋๊น? ๋๋จธ์ง ์ด์
๋ธ๋ฆฌ๋ฅผ ์ป๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ตฌํ.
15/07/25 22:10์ Jan Henke๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์์ง ๊ตฌํ๋์ง ์์ ์ด์ ๋ธ๋ฆฌ์ ๊ฒฝ์ฐ "์ด๋ป๊ฒ
์์ ๋ชฉ๋ก์์ "-๋ฌธ์ ๋ฅผ ๊ตฌํํฉ๋๋ค. ์กฐ์ ์ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฌํ ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ ธ๋ ฅ.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotnet/corefx/issues/1626#issuecomment -124838781.
์ด ๋๊ธ์ https://github.com/dotnet/corefx/issues/1626#issuecomment -111800540์ ๋๋ค.
์ ๋ ์ง๊ธ ๋ค์ดํฐ๋ธ shim์ด ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ๊ฐ FreeBSD์์ ์๋ํ๋๋ก ํ๋ ๋๋ถ๋ถ์ ์์ ์ ์ด shim์ด ๋์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
@nguerrera ์งํ ์ํฉ์ ๊ณ์ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. :)
์
๋ฐ์ดํธ:
@janhenke ๋ https://github.com/dotnet/corefx/pull/2974๊ฐ ๋ณํฉ๋์ด System.IO.Pipes
๊ฐ FreeBSD์ ๋น๋ ๋จ์ ํ์ธํ์ต๋๋ค! :์์๊ฒฝ:
์
๋ฐ์ดํธ:
dotnet/corefx#2527 ํ์, System.IO.MemoryMappedFiles
๋ FreeBSD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
ํ์ธํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค @janhenke !
shims ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ shim์ด FreeBSD์์ ์ปดํ์ผ๋๋์ง ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ณ ๋ง๊ฒ๋ ์ถ์ด ํจ์ฌ ์ฌ์์ง๋๋ค. :)
dotnet/corefx#3257์ System.Diagnostic.Process
์ System.IO.FileSystem.Watcher
๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ System.Net.NameResolution
๋ฏธํด๊ฒฐ ์ํ๋ก ๋จ๊น๋๋ค. (PR์ด ๋ณํฉ๋๊ณ FreeBSD์์ ์๋ํ๋ฉด ์ธ๊ธ๋ ๋ ์ด์
๋ธ๋ฆฌ๋ฅผ ํ์ธํ๊ฒ ์ต๋๋ค)
dotnet/corefx#3471์์ System.Net.NameResolution
๊ฐ์ ธ์ ์์ ๋ชฉ๋ก์ ์์ฑํด์ผ ํฉ๋๋ค.
dotnet/corefx#3471์ด ๋ฐฉ๊ธ ๋ณํฉ๋์์ต๋๋ค :)
@sokket , ์ ๋ฐ์ดํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ FreeBSD์ ๋ง์คํฐ(f467911)๋ฅผ ๊ตฌ์ถํ์ต๋๋ค: https://gist.github.com/jasonwilliams200OK/6efa7907e66275df2d24. ํ์ฌ ์ฐจ๋จ๊ธฐ๋ https://github.com/dotnet/buildtools/issues/292์ด๋ฉฐ ์ ์คํธ๋ฆผ์์ ์์ ๋์์ง๋ง ๋ค์ buildtools ๋กค์์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. :)
์ ๋ฐ์ดํธ: dotnet/buildtools#292์ ๋ํ ์์ ์ฌํญ์ด ํฌํจ๋ ์ ๋น๋ ๋๊ตฌ๊ฐ CoreFX ๋ง์คํฐ์ ๋์ฐฉํ์ต๋๋ค. buildtools์ ๋ค์ ์คํ ํผ๋ https://github.com/dotnet/buildtools/issues/300์ ๋๋ค . ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ OS ํน์ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
@janhenke , System.Diagnostics.Process
(#2070) ๋ฐ System.IO.FileSystem.Watcher
(#2046)์ ์๋ฃ๋ก ํ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ๋ค์ ๊ตฌํ๋์ง๋ ์๊ณ FreeBSD์์ ์ปดํ์ผ๋์ง๋ ์์ต๋๋ค. ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์ปดํ์ผํ์ฌ ์ค์ ๋ก ๋ชฉ๋ก์ ํ์ธํ์ต๋๊น?
์ปค๋ฐ 60c78da3c918b0d256cc1f878de06d351dbe3342( msbuild.log ์ฐธ์กฐ)์ ๋ํ ์ต๊ทผ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๋ค์ ์ด์ ๋ธ๋ฆฌ๋ ์ปดํ์ผ๋์ง ์์ต๋๋ค.
๋ด๊ฐ ๊ธฐ์ตํ๋ ํ ๊ด๋ จ shim ์ปดํ์ผ์ ํ์ธํ์ต๋๋ค. ๊ด๋ฆฌ๋๋ ์ฝ๋์๋ FreeBSD ํน์ ์ฝ๋๊ฐ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ธ๊ธํ shim์ ์์ ๋งํฌ๋ PR๊ณผ ํจ๊ป shimed๋์ด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ๋ํ ๊ทธ ์ฌ์ด์ ์ ์ฒด ์ปดํ์ผ์ ์คํํ์ต๋๋ค. ์ต์ํ System.Diagnostics.ThreadInfo
๋ฐ System.IO.FileSystemWatcher
๊ฐ ์ปดํ์ผ๋์์ต๋๋ค. ๊ทธ๋์ ๋ญ๊ฐ ํํดํ์ ๊ฒ์
๋๋ค.
์ธ๊ธํ shim์ ์์ ๋งํฌ๋ PR๊ณผ ํจ๊ป shimed๋์ด์ผ ํฉ๋๋ค.
์ฌ์ค PR https://github.com/dotnet/corefx/pull/3257 ์ shim๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ด๋ฆฌ๋๋ ํ๋ก์ ํธ(์ด์ ์ ๊ทผ ๋ฐฉ์)์๋ ์ฌ์ ํ ์ผ๋ถ PAL ์ฝ๋๊ฐ ์์ผ๋ฏ๋ก ์ ๋์ ์ผ๋ก ํ์ธํ๋ ค๋ฉด ๊ด๋ฆฌ๋๋ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋น๋ํด์ผ ํฉ๋๋ค.
์ฌ์ค PR dotnet/corefx#3257์ shim๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
๋๋ ๋์ํ์ง ์๋๋ค. P/Invoke ์ฝ๋๋ฅผ System.Native shim์ผ๋ก ๋ฆฌํฉํ ๋งํ๊ณ ์์ต๋๋ค. ๋ํ ์์์ ํธ์งํ ๊ฒ์ฒ๋ผ ๊ทธ ์ฌ์ด์ ์ปดํ์ผ๋ ์ด์ ๋ธ๋ฆฌ ์ค ์ ์ด๋ ์ผ๋ถ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ต๋๋ค.
๋๋ ๋์ํ์ง ์๋๋ค
https://github.com/dotnet/corefx/pull/3257/files : .Linux.cs
๋ํ System.Diagnostics.
.Unix.cs
๋ฐ .Linux.cs
์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ์ญ์์ค. .OSX.cs
๋ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.
P/Invoke ์ฝ๋๋ฅผ System.Native shim์ผ๋ก ๋ฆฌํฉํ ๋งํ๊ณ ์์ต๋๋ค.
์, System.Native
์๋์ ์ผ๋ฐ์ ์ธ ๋์ฐ๋ฏธ๋ฅผ ๋ฆฌํฉํฐ๋งํ์ง๋ง System.Diagnostics.*
et al์ ์๋๋๋ค.
์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ๊ฐ System.* ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ P/Invoking๋ฟ์ธ ๊ฒฝ์ฐ์๋ ๊ทธ ์ค ์ผ๋ถ(์: System.Diagnostics.Process ๋ฐ System.IO.FileSystem.Watcher)์ FreeBSD ์์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ค์ Linux ๋ฐ OS X์ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ shim ๋ค์ ์ด๋ฅผ ์ถ์ํํ๋ ค๊ณ ํ์ง ์์ต๋๋ค. shim์ ๋ชฉํ๋ Unix๋ฅผ ์ํ ๋จ์ผ ๊ด๋ฆฌ ๋ฐ์ด๋๋ฆฌ๋ก ๋๋๋ ๊ฒ์ด ์๋๋๋ค. ๋น๋ก ๊ทธ๊ฒ์ด ์์ ์์ ์ฌ ๋ ๋งค์ฐ ์ข์ ์์ฑ์ด์ง๋ง; ์ฃผ์ ๋ชฉํ๋ ์ทจ์ฝ์ฑ์ ์ ๋ฐํ๋ ABI ์ฐจ์ด๋ฅผ ํผํ๋ ๊ฒ์ ๋๋ค. FreeBSD ๋ฐ์ด๋๋ฆฌ๋ ํ์ํ Linux/OS X ์ ์ฉ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ต์ํ ์์์ ์ด์ ๋ธ๋ฆฌ์ ๊ณ์ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ฐธ๊ณ ๋ก System.Diagnostics.ProcessManager๋ผ๋ corefx ์ด์
๋ธ๋ฆฌ๋ ์์ต๋๋ค.
์์คํ
.์ง๋จ.์ค๋ ๋ ์ ๋ณด,
System.IO.FileSystemWatcher ๋๋
์์คํ
.๋ท.์์ผ ์ฃผ์. ๋ค๋ฅธ ์ด์
๋ธ๋ฆฌ์ ํ์์
๋๋ค.
FreeBSD ๋ฐ์ด๋๋ฆฌ๋ ํ์ํ Linux/OS X ์ ์ฉ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ต์ํ ์์์ ์ด์ ๋ธ๋ฆฌ์ ๊ณ์ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ด๋ Alpine ์ง์๊ณผ ๊ฐ์ Linux๋ฅผ ๋์์ผ๋ก ํ๋ Solaris ๋ฐ non-glibc(musl ๋ฐ ฮผlibc)๊ฐ ๋์ฐฉํ ๋๋ง๋ค ๋ณ๋์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฐ๊ฒ ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ํคํ ์ฒ ARM, MIPS, RISC, SPARC ๋ฑ์ ๋ค๋ฅธ ์์ค์ ๋ถ๋ฆฌ๊ฐ ํ์ํฉ๋๊น?
๊ฐ๋ฅํ ํ ๋ง์ด POSIX ์ธํฐํ์ด์ค/์์คํ
ํธ์ถ๋ก ์๋ ดํ๊ณ ๋์ผํ ๋ฐ์ด๋๋ฆฌ์์ ์ฌ์ฉํ ๊ตฌ์ฑ(CMake๋ฅผ ํตํด)์ ์ฌ์ฉํ์ฌ ์ฐจ์ด์ ์ ๊ธฐ๋ฅ ๊ฐ์งํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๊น(ํฌ๊ธฐ/์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ํ) ์๋นํ ์ด์
๋ธ๋ฆฌ)? ๋ด๊ฐ ์ดํดํ ๋ฐ์ ๊ฐ์ด System.Native.so
๋ฐ์ด๋๋ฆฌ์๋ ๋ค๋ฅธ ํน์ System.*.Native.so
๋ํ ๊ณตํต ๋์ฐ๋ฏธ๊ฐ ์์ผ๋ฉฐ ์ด๋ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์์น ์ค์์ ์ถฉ๋ถํด ๋ณด์
๋๋ค. ๊ทธ๋ฌ๋ System.Net.Http.FreeBSD.ARM.Native.so
๋๋ System.Net.Http.Solaris.SPARC.so
๋๋ฉด "์์ง์ด๋ ๋ถ๋ถ์ด ๋๋ฌด ๋ง์" ๋ฑ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
๋ช ๋ช ๋ corefx ์ด์ ๋ธ๋ฆฌ๊ฐ ์์ต๋๋ค.
์ข์ ์ง์ . ๋๋ ์ค์ ๋ก msbuild ๋ก๊ทธ์ ์คํจ ์ธ์คํด์ค์ .OSX.cs
๋ฐ .Linux.cs
ํ์ผ์ ์๋ฅผ ๋ณด๊ณ ์์์ต๋๋ค. :์๋ค:
๊ฐ๋ฅํ ํ POSIX ์ธํฐํ์ด์ค/์์คํ ํธ์ถ๋ก ์๋ ดํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์๊น์?
์ฐ๋ฆฌ๋ํ๋ค. POSIX๋ฅผ ํตํด ํ์ผ ๋ณด๊ธฐ๋ฅผ ์ ํ๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ํฉ๋๊น? POSIX๋ฅผ ํตํด ํ๋ก์ธ์ค ์ด๊ฑฐ๋ฅผ ์ ํ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ํฉ๋๊น?
๊ทธ๋ฌ๋ System.Net.Http.FreeBSD.ARM.Native.so ๋๋ System.Net.Http.Solaris.SPARC.so๋ก ๋ณํ๋๋ฉด "์์ง์ด๋ ๋ถ๋ถ์ด ๋๋ฌด ๋ง์" ๋ฑ์ผ๋ก ์ธํด ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
๋๋ ์ด๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค. ๊ธฐ๋ณธ .so ํ์ผ์ ์์ ์ ๊ฐ ๋์ ํ๋ซํผ์ ๋ํด ์๋ก ๋ค๋ฅธ ๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค์ง๋ง ์ด๋ฆ์ด System.Whatever.Platform.ext๊ฐ ์๋๋ผ System.Whatever.ext๋ผ๋ ๊ฒ์ ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๋์ผํ ์ผ๋ฐ ๋ ผ๋ฆฌ๋ฅผ ์ทจํ๊ณ ํด๋น ํ๋ซํผ์ ํน์ ํ ์ ์์ ํจ๊ป ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฐ ํ๋ซํผ์ ๋์ผํ ๊ธฐํธ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ inotify๋ฅผ ์ฌ์ฉํ๋๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๋ง์ ์ฒ๋ผ ์ทจํ์ง ์๊ณ ๋ค๋ฅธ ์์คํ ์ ํ์ผ ๊ฐ์ ์ธํฐํ์ด์ค์ ํจ๊ป ์๋ํ๋๋ก ํ์ฉํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์๋ฏธ ์๋ ๊ณณ์์ ํ์คํ๋ API๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์ด์ฌํ ๋ ธ๋ ฅํ์ง๋ง ๊ทธ๋ฌํ API๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ์ ํ์คํ๋์ง ์์๊ฑฐ๋ ๋ ๋์ ํ๋ซํผ๋ณ ์๋ฃจ์ ์ด ์๋ ๊ณณ์์๋ ๋ ๋์ ํ๋ซํผ์ ์ฌ์ฉํ์ต๋๋ค. ํน์ ์๋ฃจ์ , ์๋ฅผ ๋ค์ด Linux์์ ํ๋ก์ธ์ค ์ด๊ฑฐ๋ฅผ ์ํด procfs ์ฌ์ฉ, Linux์์ ํ์ผ ์์คํ ๊ฐ์๋ฅผ ์ํด inotify ์ฌ์ฉ ๋ฑ. ์ด๋ฌํ ํ๋ซํผ๋ณ ๋ก์ง์ด ๊ด๋ฆฌ ์ฝ๋ ๋๋ ๋ค์ดํฐ๋ธ ์ฝ๋์ ์๋์ง ์ฌ๋ถ๋ ์ด์์ ์ฉ์ด์ฑ์์ ์ค์ ๋ก ์ค์ํ์ง ์์ต๋๋ค. ์๋ก์ด ํ๋ซํผ์ด ๋ฑ์ฅํ ๋ ๊ธฐ์กด API๊ฐ ์๋ํ๋ฉด ๊ธฐ์กด ์๋ฃจ์ ๋ ์๋ํ๊ณ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ํด๋น ํ๋ซํผ์ ๋ํ ์ ์๋ฃจ์ ์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋์ API๊ฐ ์ด์ ๊ฐ๋ฅํ ๊ณณ์์ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ํจ์ฌ ๋ ์ด์ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ 1:1 shim์ ๋ํด ๋ค์ดํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ ์ฝ๋์์ ๊ฐ๋ฅํ ํ ๋ง์ ์์ ์ ์ํํ๋ ค๊ณ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ดํฐ๋ธ ์ฝ๋์์ #ifdef๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ธ๋ถ ์ฌํญ์ ์ค๋ช ํ์ต๋๋ค. ์ด๋ค ํ๋ซํผ์ ์ด API๊ฐ ๋ค๋ฅธ ํ๋ซํผ์ ํด๋น API์ ์ถฉ๋ถํ ๊ฐ๊น์ง๋ง ์ ์ฒด ์๋ฃจ์ ์ด ์์ ํ ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ์ฅ๋์ง๋ ์์ต๋๋ค. ๊ทธ ์์ ์์ ์ถ์ํ๋ ๊ด๋ฆฌ๋๋ API๊ฐ ๋๊ณ ์ฐ๋ฆฌ๋ ๊ฐ ์์คํ ์ ๋ํด ๋ค๋ฅธ ๊ด๋ฆฌ๋๋ ๊ตฌํ์ ์ํํฉ๋๋ค.
FreeBSD๊ฐ Linux์ฒ๋ผ inotify๋ฅผ ๋ ธ์ถํ๊ฑฐ๋ OS X์ฒ๋ผ EventStream์ ๋ ธ์ถํ๋ ๊ฒฝ์ฐ ํด๋น OS API๊ฐ shim ๋ค์ ์์ ๋ shim์ FreeBSD์ ์ฝ๊ฒ ์๋ํ๋๋ก ๋ง๋ค ์ ์์ผ๋ฉฐ ๋์ผํ ๊ด๋ฆฌ ๋ฐ์ด๋๋ฆฌ๋ฅผ FreeBSD์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. FreeBSD๊ฐ ์ด๋ฌํ API๋ฅผ ๋ ธ์ถํ์ง ์์ผ๋ฉด FreeBSD์์ ์ฌ์ฉํ ์ ์๋ ์ผ๋ถ ํ์ผ ๊ฐ์ ์๋ฃจ์ ์ ์ฌ์ฉํ์ฌ System.IO.FileSystem.Watcher์ ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ ์์ฑํด์ผ ํฉ๋๋ค. System.Diagnostics.Process์ ๋ํ ์ ์ฌํ ์ค๋ช ์ ๋๋ค. ํ์ผ ๊ฐ์๋ฅผ ์ํ ์ฝ๋๊ฐ shim์ ์๋์ง ์ฌ๋ถ๋ ๊ทธ๊ฒ์ ๊ฑฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๊ณํ์ ์ด๋ฌํ ๋ชจ๋ ๊ธฐ๋ณธ API๊ฐ ๊ฒฐ๊ตญ shim ๋ค๋ก ์ด๋ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด์์ฑ์ด ์ข์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์์๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๊ณ ๋ชจ๋ ๊ณณ์์ ๋ ธ์ถ๋๋(๋๋ ๋ ธ์ถ๋์ด์ผ ํ๋) libc์ API๋ก ์์ํ๋ ๊ฒ์ ๋ณด์ จ์ ๊ฒ์ ๋๋ค.
POSIX๋ฅผ ํตํด ํ์ผ ๋ณด๊ธฐ๋ฅผ ์ ํ๋ ๊ฒ์ ์ด๋ป๊ฒ ์ ์ํฉ๋๊น?
inotify๋ Linux ์ ์ฉ์ด๋ฏ๋ก ๋ชจ๋ POSIX๋ฅผ ์ํํ ์๋ ์์ต๋๋ค. FreeBSD/OSX๋ ๋ณ๋์ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ๋ณธ ๋ฐ์ด๋๋ฆฌ ๋ฐฐํฌ ๊ด์ ์์ ๋ชจ๋ OS๋ ์ด๋ฆ์ ๊ฐ์ง๋ง ๊ธฐ๋ฅ์ด ๋ค๋ฅธ ๋์ผํ ๋ฐ์ด๋๋ฆฌ ์ธํธ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค.
๋ค์์ ์ ์๋ ๊ตฌ์กฐ์ ๋๋ค.
# cmake
check_include_files( "inotify.h" HAVE_INOTIFY_ABILITY )
// config.h.in
cmakedefine01 COREFX_HAVE_INOTIFY_ABILITY
// always a good idea to prefix our headers with project id :)
// header (pal_fsw.hpp) file
#pragma once
class file_system_watcher_shim
{
public:
void common_function_for_posix_compliants();
void slightly_diverged_function();
void painfully_diverged_watch_function();
}
// source (pal_fsw_commons.cpp) file
#include "pal_fsw.hpp"
void file_system_watcher_shim::common_function_for_posix_compliants() {
// TODO: implement common function for all
}
void file_system_watcher_shim::slightly_varied_function() {
#if COREFX_HAVE_XYZ_ABILITY
// your way
#else
// my way
#endif // COREFX_HAVE_XYZ_ABILITY
}
// source (pal_fsw_inotify.cpp) file
// this is a separate compilation unit and will clash with others,
// therefore guarding it with preprocessor directive
#if COREFX_HAVE_INOTIFY_ABILITY
#include "pal_fsw.hpp"
void file_system_watcher_shim::painfully_diverged_watch_function() {
// TODO: implement inotify based watcher
}
#endif // COREFX_HAVE_INOTIFY_ABILITY
// source (pal_fsw_non_inotify.cpp) file
// this is a separate compilation unit and will clash with others,
// therefore guarding it with preprocessor directive
#if !COREFX_HAVE_INOTIFY_ABILITY
#include "pal_fsw.hpp"
void file_system_watcher_shim::painfully_diverged_watch_function() {
// TODO: implement non-inotify way
}
#endif // !COREFX_HAVE_INOTIFY_ABILITY
์ด๊ฒ์ ๋ณธ์ง์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด
์ค์ ์ฐจ์ด์ ์ "๊ณ ํต์ค๋ฝ๊ฒ ๋ถ๊ธฐ๋" ๋ ผ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ์ฝ๋๊ฐ C#์์ ์ํ๋๋์ง C++๋ก ์ํ๋๋์ง ์ฌ๋ถ์ด๋ฉฐ ์ฐ๋ฆฌ๋ C#์ ์ ํํ์ผ๋ฉฐ ์ด๋ฏธ ๋ชจ๋ C#์ผ๋ก ๊ตฌํ๋์์ต๋๋ค. ์ ๊ทธ๋ฐ ๊ฒฝ์ฐ์ C++๋ก ๋ชจ๋ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ค๋๋ ฅ ์๋ ์ต์ ์ด ๋ ๊ฒ์ธ์ง์ ๋ํ ์ค๋๋ ฅ ์๋ ์ฃผ์ฅ์ ๋ณด์ง ๋ชปํ์ต๋๋ค.
@jasonwilliams200OK ์ค๋ ๋ชจ๋
ธ ์
๋ฐ์ดํธ๋ก FreeBSD ์์ฒด์ corefx๋ฅผ ๋ค์ ๋น๋ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋น๋ํ ์ดํ๋ก ๋ง์ ์๋ก์ด ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ต๋๋ค.
Interop.Libc
๊ฐ ๊ฒฐ๊ตญ ์ฌ๋ผ์ง์ง ๊ถ๊ธํฉ๋๋ค.
@stephentoub ๋ชจ๋ ๊ฒ์ ํฌ์ฅ์ ๋ฌ๋ ค ์์ต๋๋ค. ๋ค์ดํฐ๋ธ ๋ถ๋ถ์ ๋ชจ๋ ํ๋ซํผ๋ณ ์ฝ๋๊ฐ ์์ผ๋ฉด ๋ชจ๋ Unix ๊ณ์ด ํ๋ซํผ์ ๋ํด ํ๋์ ๊ด๋ฆฌ๋๋ ์ด์
๋ธ๋ฆฌ๊ฐ ์๋ค๋ ์ด์ ์ด ์์ต๋๋ค.
๊ฒ๋ค๊ฐ, ์ ๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ฌํ "ํ๋ซํผ ์ข
์ ๊ด๋ฆฌ ์ฝ๋์ ๋ํ ์ผ๋ฐ ๊ตฌํ์ด ํ์ํ๋ค๊ณ ๊ฐ๋ ฅํ ์๊ฐํฉ๋๋ค. ๋จ์ง NotImplementedExcption์ ๋์ง๋๋ผ๋. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ต์ํ ๋ชจ๋ ๊ฒ์ ์ฆ์ ์ปดํ์ผํ๋ค๋ฉด ์ ํ๋ซํผ์ผ๋ก ํจ์ฌ ์ฝ๊ฒ ์ด์ํ ์ ์์ต๋๋ค. ๋ํ ์ต์ํ ์ง์๋์ง ์๋ ํ๋ซํผ์์ ์คํ์ ์๋ํ ์ ์๋ ๊ธฐํ.
์ผ๋ฐ์ ์ผ๋ก ์ ์ด๋ ์ฆ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผํ ์ ์๋ค๋ฉด ํจ์ฌ ์ฝ์ต๋๋ค.
@stephentoub , C++์ C#์ ์์ด์ ์ฃ์กํฉ๋๋ค. ์ด์ ๋ค์ดํฐ๋ธ ๋ ์ด์ด๊ฐ ์ง์ ์ (๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ ๋๋ ์์คํ ํธ์ถ)์ ๋ ธ์ถํ๊ณ IO ๋ฐ ๊ด๋ฆฌ ์ฝ๋๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ํ๋ซํผ๋ณ ๋ํ๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋/๋ํ๋ ์์คํ ํธ์ถ์ ์๋นํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๊ณณ์ด๋ผ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๊ฒ๋ค๊ฐ, (๋ค์ดํฐ๋ธ ๋ฐ ๊ด๋ฆฌ) ํฐ์ด ๋ชจ๋ POSIX๊ฐ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํ๋ OS์ ๋ ๋ฆฝ์ ์ผ ์ ์์ต๋๋ค.
@janhenke , ๋์ํฉ๋๋ค. ๋๋ ๋ํ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ๋์ ๋ง์คํฐ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ฐ๋ณต๋๋ ์ด์ ๋ธ๋ฆฌ ์๋ช ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
CSC : error CS7027: Error signing output with public key from file '/root/corefx/packages/Microsoft.DotNet.BuildTools.1.
0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/root/corefx/src/System.IO.Compression.ZipFile/ref/System.IO.Compres
sion.ZipFile.csproj]
CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/root/corefx
/src/System.IO.Compression.ZipFile/ref/System.IO.Compression.ZipFile.csproj]
CSC : error CS7027: Error signing output with public key from file '/root/corefx/packages/Microsoft.DotNet.BuildTools.1.
0.25-prerelease-00104/lib/ECMA.snk' -- mscoree.dll [/root/corefx/src/System.IO.Compression/ref/System.IO.Compression.csp
roj]
CSC : error CS7033: Delay signing was specified and requires a public key, but no public key was specified [/root/corefx
/src/System.IO.Compression/ref/System.IO.Compression.csproj]
๊ณง ์ ์ฒด msbuild.log ์์ง ๋งํฌ๋ฅผ ๊ฒ์ํ ์์ ์ ๋๋ค.
๊ฒ๋ค๊ฐ ์ด๋ฌํ "ํ๋ซํผ ์ข ์ ๊ด๋ฆฌ ์ฝ๋"์ ๋ํ ์ผ๋ฐ ๊ตฌํ์ด ํ์ํ๋ค๊ณ ๊ฐ๋ ฅํ๊ฒ ์๊ฐํฉ๋๋ค.
๋๋ ๋์ํ๋ค. ๋ถ๋ถ ํด๋์ค ๋์ ์ถ์ ๊ธฐ๋ณธ ํด๋์ค์์ ๊ณตํต ๋ฐ ๋๋ถ๋ถ ๊ณตํต ๊ฐ์ ๋ฉ์๋๋ก ์์์ ์ฌ์ฉํ๊ณ ํ์ํ ๊ฒฝ์ฐ "๋๋ถ๋ถ ๊ณตํต/๋ถ๋ถ์ ์ผ๋ก ๋ค๋ฅธ"์ ๋ํด ์ฌ์ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ OS๋ง๋ค ์์ ํ ๋ค๋ฅธ ์ถ์ ๋ฉ์๋๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ๋ฌธํ/์ผ๋ฐํ๊ฐ DRY'๋ฅผ ์๋ ๊ฒฝ์ฐ ๋ค๋จ๊ณ ์์ ์กฐ์์ ๊ณ ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ง๋ง์ผ๋ก ํ์ธํ์ ๋ CoreFX์์ ๋ถ๋ชจ-์์ ์ฐ๊ฒฐ๋ณด๋ค ๋ถ๋ถ ํด๋์ค๊ฐ ์ ํธ๋์์ต๋๋ค(์ด๋ค ์ด์ ๋ก ๊ธฐ์ต๋์ง ์์). :)
๋ค์์ ์ปค๋ฐ 2d36889์ ๋ํ msbuild.log์ ๋๋ค.
/cc: @akoeplinger
@jasonwilliams200OK ์ ๊ทธ๋ ๊ฒ ๋ณต์ก
์ผ๋ถ ์ด์ ๋ธ๋ฆฌ๊ฐ FreeBSD์ฉ์ผ๋ก ๋น๋/์๋ํ ์ ์๋ค๋ ์ฌ์ค์ด ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ์ฃผ์ ๋ฐฉํด ์์๊ฐ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ณด๋ฅ ์ค์ธ ์์ (FileSystemWatcher, Process, Networking)์ด ์๋ ํญ๋ชฉ์ FreeBSD์์ ์คํ๋๋ ๋น๋ ๋ฐ ํ ์คํธ์์ ๊ฑด๋๋ฐ๋๋ก ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฏธ ์๋ํ๋ ๊ฒ์์ ํ๊ท๋ฅผ ๋ฐฉ์งํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ ๋์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋๋ ์ผ๋ถ ์ด์ ๋ธ๋ฆฌ๊ฐ FreeBSD๋ฅผ ์ํด ๋น๋/์๋ํ ์ ์๋ค๋ ์ฌ์ค์ด ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ์ฃผ์ ์ฅ์ ๋ฌผ์ด ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋์
๋ณด๋ฅ ์ค์ธ ์์ (FileSystemWatcher, Process, Networking)์ด ์๋ ๋น๋ ๋ฐ ํ ์คํธ ์คํ์์ FreeBSD๋ฅผ ๊ฑด๋๋ฐ๋๋ก ํด์ผ ํฉ๋๋ค.
๋๋ @janhenke๊ฐ ์ ์ํ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ PlatformNotSupported๋ฅผ ๋ฐ์์ํค๋ ํ์ผ๋ก
@ellismg ์ต๊ทผ ๋ณ๊ฒฝ ์ฌํญ(#3684)์ ์ฌ์ฉํ์ฌ ์ด์ ๋ฐฉ๋ฒ์ ๋จ์ํํ์ฌ ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค(https://github.com/dotnet/coreclr/issues/1633#issuecomment-143669303).
cd /root; curl -o bins.zip "http://dotnet-ci.cloudapp.net/job/dotnet_coreclr/job/debug_freebsd/lastSuccessfulBuild/artifact/*zip*/archive.zip
(์์ง ๋ง์ธ์ URL ์ฃผ์์ ๋ฐ์ดํ) unzip bins.zip; chmod -R 0777 archive/; rm bins.zip; cd corefx
.(Windows ์์คํ ์์ ํ์ํ์ง ์์)
./run-test.sh \
--coreclr-bins ../archive/bin/Product/FreeBSD.x64.Debug \
--mscorlib-bins ./packages/Microsoft.DotNet.CoreCLR/1.0.0-prerelease/lib/aspnetcore50 \
--corefx-native-bins ./bin/FreeBSD.x64.Debug/Native
๊ทธ๊ฒ์ ๋งํ๋ค:
40 ํ ์คํธ ์คํจ
์ผ๋ถ ์ด์ ๋ธ๋ฆฌ๊ฐ FreeBSD์ฉ์ผ๋ก ๋น๋/์๋ํ ์ ์๋ค๋ ์ฌ์ค์ด ๋๋จธ์ง ์ด์ ๋ธ๋ฆฌ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ์ฃผ์ ๋ฐฉํด ์์๊ฐ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ๋์ํด์ผํฉ๋๋ค. ํ ์คํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ชจ๋ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๋ณด๋ค ์ฐ๋ฆฌ๊ฐ ์ํํ ์์ ์ ๋ํด QA๋ฅผ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๊ฒ์ ๋งํฉ๋๋ค: 40๊ฐ์ ํ ์คํธ๊ฐ ์คํจํ์ต๋๋ค
๋ช ๊ฐ ์ค์ 40๊ฐ? ์ฐ๋ฆฌ๋ ์ด๋ค ์ผ๊ตฌ์ฅ์ ์์ต๋๊น? :)
๋ช ๊ฐ ์ค์ 40๊ฐ? ์ฐ๋ฆฌ๋ ์ด๋ค ์ผ๊ตฌ์ฅ์ ์์ต๋๊น? :)
๋๋ ๋๋ฆฐ๋ค. ํ ์คํธ๊ฐ ํ ์คํธ ์ด์ ๋ธ๋ฆฌ(๊ด๋ฆฌ๋๋ dll)์์ ์์ฑ๋๊ณ ์ด ํ ์คํธ ์๊ฐ ํ์๋์ง ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๊ฐ ๋ง์ง๋ง์ ์์ฑํ๋ ์ซ์๋ ์คํจํ ํ ์คํธ ์ด์ ๋ธ๋ฆฌ์ ์์ ๋๋ค. xUnit์ ์ด์ ๋ธ๋ฆฌ๋น ์คํจํ ํ ์คํธ ์๋ฅผ ์คํ์ ์ผ๋ถ๋ก stdout์ ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ์ซ์๋ ๊ฐ ํ ์คํธ ์ด์ ๋ธ๋ฆฌ ํด๋์์ ์์ฑํ๋ XML ํ์ผ์๋ ์์ด์ผ ํฉ๋๋ค.
๋ฐํ์๋ ์ถฉ๋ํ ์ ์์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ ํ ์คํธ ์ด์ ๋ธ๋ฆฌ๋น ๋ก๊ทธ๊ฐ ์์ฑ๋์ง ์์ ์ ์์ต๋๋ค.
@jasonwilliams200OK ์ด์ ๋ธ๋ฆฌ ์๋ช ๋ฌธ์ ์ ์ง์ ์ด ์์๋์ง ์์ญ๋๊น? ๋๋ ์ฐ๋ถํฌ์์ ๊ฐ์ ๊ฒ์ ์น๊ณ ์์ต๋๋ค. ์๋ฌด๋ ๊ทธ๊ฒ์ ๋ํด ์์ ํ์ง ์๋๋ค๋ฉด ์๋ง๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํ ๊ฒ์ ๋๋ค.
@naamunds , CoreFX ๋ง์คํฐ์์ https://github.com/dotnet/corefx/issues/3739์ ์ผ๋ถ๋ก ์์ ๋์์ต๋๋ค
์ ๋ฐ์ดํธ - ์ค๋ ์ ๋ FreeBSD์์ ํ ์คํธ๋ฅผ ์คํํ๋๋ฐ ์์ฒ ๊ฐ์ ํ ์คํธ๊ฐ ํต๊ณผํ๊ณ ์ผ๋ถ๋ System.Diagnostics.Process ๋ฐ ์น๊ตฌ์ ๋ช ๋ฐฑํ ๋ถ์กฑ์ผ๋ก ์ธํด ์คํจํ์ต๋๋ค. ~40๋ถ์ ์ฑ๊ณต์ ์ธ ์คํ ํ System.IO.FileSystem ํ ์คํธ์์ ์ค๋จ๋์์ต๋๋ค(์ข ๋ฃํ๊ธฐ ์ํด Ctrl+C๋ฅผ ๋๋ฅด๊ธฐ ์ ์ฝ 15๋ถ ๋์).
@jasonwilliams200OK ์ด๋ป๊ฒ freebsd์์ corefx๋ฅผ ์ปดํ์ผํ ์ ์์์ต๋๊น? gssapi์ ๋ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
@sec , https://gist.github.com/jasonwilliams200OK/6efa7907e66275df2d24 , GSSAPI๋ CoreFX์ ํ์ํ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ pkg๊ฐ ์ต๊ทผ FreeBSD๋ก ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค: http://www.freshports.org/security/p5-GSSAPI. pkg upgrade pkg && pkg update && pkg install p5-GSSAPI
์(๋ฅผ) ์๋ํ ์ ์์ต๋๋ค.
@jasonwilliams200OK , ๋๋ ์ด๋ฏธ ์ด๊ฒ์ ์ป์์ต๋๋ค(perl ext. btw์
๋๋ค.) ๋ฌธ์ ๋ gssapi_ext.h๊ฐ ๋๋ฝ๋์์ต๋๋ค. ํธ๋ฆญ์ "pkg install krb5"๋ฅผ ์ํํ๋ ๊ฒ์ด ์์ต๋๋ค. ์ด์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฉ๋๋ค.
coreclr ๋ฐํ์์ ๋ณต์ฌํ์ง๋ง ์ฌ์ ํ ASP.NET Core ์ฑ์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ธ์์ด ๊ณ์๋ฉ๋๋ค.
์ด ์์ ์ ํ์ฌ ์ํ๋ ๋ฌด์์ ๋๊น? @janhenke ์ ๋ชฉ๋ก์ด ์์ ํ๊ณ ์ ํํฉ๋๊น? ์ํํด์ผ ํ ๋ชจ๋ ์์ ์ด ์๋ฃ๋์์ต๋๊น? ๊ทธ๋ผ ๋ซ์์ผ๊ฒ ์ฃ ?
๊ทธ๋ ๋ค๋ฉด ์ ์ฐ๋ฆฌ์๊ฒ ์ด ์์ ์ด ๋จ์ ์์ต๋๊น? https://github.com/dotnet/corefx/issues/2070
์์ง ํ ์ผ์ด ์๋ค๋ฉด ํ ์ํฉ์ ๊ธฐ์ค์ผ๋ก ์๋ก์ด ์ด์๋ฅผ ๋ฑ๋กํด์ผ ํ ๊น์?
์ด๊ฒ๋ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค - dotnet/corefx#2046
ํ์ฌ ์ํฉ์ ๋ฐ๋ผ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ฑ๋กํด์ผ ํฉ๋๊น?
์ :+1:
์ฐ๋ฆฌ๋ ๋ชจ๋์ด ์ผ์ ๊ด์ฌ์ ํ๋ช
@RussellHaley ๋ฐ @wfurt (FreeBSD์ ์ปค๋ฎค๋ํฐ) (.NET์์ ์ฝ์ด ํ)์ FreeBSD๋ฅผ์ํ ์ง์ญ ์ฌํ ์ค์ฌ์ ํฌํธ๋ฅผ ๋
ผ์ํ๋ค.
๋ค์์ ์ฐ๋ฆฌ๊ฐ ํจ๊ป ๋ง๋ ๊ณํ ์ ์์
๋๋ค(ํผ๋๋ฐฑ/์ ์ ํ์).
์๋ ์๋ฆฌ:
๋์์ด ํ์ํ ์ฌ๋์ด ์์ผ๋ฉด ์ฌ๊ธฐ์์ ์๋ ค์ฃผ์ญ์์ค. [1]๊ณผ ์ถฉ๋ถํ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ผ๋ฉด ์์ [2]์ [3]์์ ์์ ํญ๋ชฉ์ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ ์์์ ์ต์ ๋ฒ์ ์ ์ด๋ฒ ํธ์ ๋งจ ์์ ์์ต๋๋ค.
freebsd-mono ๋ชฉ๋ก์ ๊ด์ฌ์ ํ๋ช ํ ๋ ๋ง์ ์ฌ๋๋ค ํ๊ทธํ๊ธฐ( ์ด ์ค๋ ๋ ): @smortex @radovanovic @Echo-8-ERA
BTW: Mathieu Prevot GitHub ๊ณ์ ์ ์ฐพ์ ์ ์์ต๋๋ค -- [์ ๋ฐ์ดํธ] https://github.com/dotnet/corefx/issues/1626#issuecomment -330348424์์ ์ฐพ์ ์ ์์ต๋๋ค: @mprevot
NetBSD์ ๊ฒฝ์ฐ ๊ฐ๋ ฅํ posix ๋ฎคํ ์ค๊ฐ ๋๋ฝ๋์์ผ๋ฉฐ, ์ด๋ ๋ช ๋ช ๋ ๋ก๋ฒ์ค ๋ฎคํ ์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ง ๋๋ฝ๋ ์ ์ผํ ๊ธฐ๋ฅ์ ๋๋ค. ์ด์ LLDB/NetBSD๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ ์ฝ๋ ์ค๋ฅ๋ฅผ ๋๋ฒ๊ทธํ ์ ์์ต๋๋ค. ์ฝ์ด ํ์ผ์์ ์ ์๋ํฉ๋๋ค. ์ด์ ์๋์์ LLDB์ ์ด ๊ธฐ๋ฅ์ด ์์ด์ ์ฃฝ์์ต๋๋ค(์ด ๋๋ฒ๊ฑฐ๋ฅผ .NET์ฉ์ผ๋ก ์ด์ํ๊ธฐ ์์ํ์ต๋๋ค).
๋ ๋์ FreeBSD ์ง์์ด ์์ผ๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๊ณผ๊ฑฐ์๋ NetBSD ๋น๋๋ด์ CI ์์คํ ์ ์ฐ๊ฒฐํ๊ณ ํจ์น๋ฅผ ํ์ธํ๊ธฐ ์ํ Hyperv ๊ฒ์คํธ ์ง์์ด ๋ถ์กฑํ์ฌ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค... ์ด๋ฅผ ์ํด MS์ ๋์์ด ํ์ํ ์ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์คํํ๋ ๋ฐ ํ์ํ ๋ ์ ์ํํธ์จ์ด๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ ๋ ์์ ํ์ง ์์ต๋๋ค... NetBSD ์ฌ๋จ๊ณผ Microsoft ์ฌ์ด์ ๊ณต๋ ๊ด์ฌ(ํฌ์)์ด ์๋ค๋ฉด ๊ทธ ์ผ์ ํ ๊ฐ๋ฐ์๋ฅผ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค.
"๊ฐ๋ ฅํ posix ๋ฎคํ ์ค"๋ ์ด๋์ ์์ต๋๊น? .NET Core PAL์ ์ผ๋ถ์ ๋๊น?
์ด๋ค CI ์์คํ ์ ๋ง์ํ์๋ ๊ฑด๊ฐ์? .NET Core ํฌํธ ๋ ธ๋ ฅ๊ณผ ๊ด๋ จ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
"๊ฐ๋ ฅํ posix ๋ฎคํ ์ค"๋ ์ด๋์ ์์ต๋๊น?
NetBSD ์ปค๋(๋ฐ libc/libpthread)์์ ์ด๊ฒ์ CoreCLR์ ์ผ๋ถ์ ๋๋ค. FreeBSD๋ ์ง๋ 2๋ ๋์ ์ด๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ต์ ์์ ๋ฆด๋ฆฌ์ค์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ ์์ง๋ง.. ํ์ธ์ด ํ์ํฉ๋๋ค.
.NET ์ด์์ ๋ค์ ์์ํ๊ธฐ ์ ์ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค. (๋คํธ์ํฌ ๋ผ์ฐํ ์ ์ํ ์์ ๋๋ฝ API๋ ๊ฐ์ง๋์์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ ๊ฑด๋๋๋๋ค.)
.NET Core PAL์ ์ผ๋ถ์ ๋๊น?
์ฝ๋๋ฅผ ํ์ธํ์ง ์๊ณ ์ง๊ธ์ ๊ธฐ์ต์ด ๋์ง ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ๋ ฅํ ๋ฎคํ ์ค(๋๋ ์๋ง๋ ์ธ๋งตํ ์ด)๋ผ๋ .NET์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ API์ ๋๋ค.
์ด๋ค CI ์์คํ ์ ๋ง์ํ์๋ ๊ฑด๊ฐ์?
๋ทBSD.
.NET Core ํฌํธ ๋ ธ๋ ฅ๊ณผ ๊ด๋ จ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ง๋๋ฒ์ ๋ณด๋ ์ต์ ๊ธฐ๋ฅ์ด์์ต๋๋ค. ์ปค๋ ์ธํฐํ์ด์ค ๋ฐ ์ ํธ๋ฆฌํฐ(์: LLDB)์์ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ธฐ๋ฅ์ ์ธ ๋น๋ฉ ๋ธ๋ก์ ์ป๊ณ ๋์ค์ ์ง์ ์ง๋ ๊ฒ์ด ๋ด ์คํ์ผ์ ์์ ์ ๋๋ค. ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋ ์ด์จ๋ ๊ทธ๊ฒ์ ํ์๋ก ํ ๊ฒ์ด๋ฏ๋ก ํ ๋ฒ์ ๊ฐ๋ฐํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ดํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)
์๋ง๋ GH์์ freebsd-dotnet ๊ทธ๋ฃน์ ํ๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๊น? ๊ทธ๋ ๊ทธ๊ณณ์ ํ์์ ๋๋ค(๋๋ ๊ทธ์ ๊ณ์ ์ด๋ฆ์ ์กฐํํ ์ ์์ต๋๋ค). ์ด๋ฉ์ผ์ [email protected]์ ๋๋ค.
[ํธ์ง] @karelz์ ์ด๋ฉ์ผ ์์ ๋ฐ ์ด์ ํ์ ์ญ์
@RussellHaley ๊ฐ ์ ์ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ ๋ ํฐ ๊ทธ๋ฃน์ ์์ ๋กญ๊ฒ ํ๊ทธ๋ฅผ ์ง์ ํ์ญ์์ค. ๋๋ ๊ทธ์ ์ด๋ฆ์ด๋ ์ด๋ฉ์ผ์ ํตํด Mathieu์ GH ๊ณ์ ์ ์ฐพ์ ์ ์์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์์์ ์๋ฏธํ ๋ฐ์ ๋๋ค(BTW: ๋๋ ์ด๋ฉ์ผ๋ก ์ง์ ๊ทธ๋ฅผ pingํ์ต๋๋ค).
๊ทธ๋ฃน์ ํ๊ทธ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์์ Mathieu์ ๊ณ์ ์ ๋๋ค. ์๋ง๋ ๊ฐ์ธ ์ ๋ณด ์ค์ ?
๊ฑด๋ฐฐ,
๋ฌ์ค
2017๋
9์ 18์ผ ์์์ผ ์คํ 1:01 Karel Zikmund [email protected]
์ผ๋ค:
@RussellHaley https://github.com/russellhaley ์์ ๋กญ๊ฒ ํ๊ทธ
์ ์ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ ๋ ํฐ ๊ทธ๋ฃน. Mathieu์ GH๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ทธ์ ์ด๋ฆ์ด๋ ์ด๋ฉ์ผ์ ํตํด ๊ณ์ , ๊ทธ๊ฒ์ด ๋ด๊ฐ ์์์ ์๋ฏธํ ๊ฒ์ ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotnet/corefx/issues/1626#issuecomment-330338996 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ACENF_N6mtOo3fptvku-LUMioNpZG7coks5sjswWgaJpZM4EPG-N
.
์ฌ๊ธฐ์์ ์ธ๊ธ๋ ๊ณณ์ ๋ณผ ์ ์์ง๋ง ์ฌ๊ธฐ์์ ๋ชฉํ๋ก ํ๋ FreeBSD์ ๊ฐ์ฅ ๋ฎ์ ๋ฒ์ ์ ๋ฌด์์
๋๊น?
(๋๋ ๋ํ mono @freebsd ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ ์ด๋ค ํ ๋ก ์ด ์ผ์ด๋์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๋ฌด์์ ํด์ผ ํ๋์ง ์ฝ๊ฐ ํผ๋์ค๋ฝ์ต๋๋ค.)
์, Fedora๊ฐ ๊ณ์๋๋ค๋ฉด MS๋ ํ์ฌ ์ง์๋๋ ๋ฒ์ , ์ฆ 10.3(๊ณง 10.4) ๋ฐ 11.1๋ง ์ง์ํ ๊ฒ์ ๋๋ค.
@radovanovic FreeBSD 9๋ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. 10์ 2018๋ 4์์, 11์ 2021๋ ์ EoL์ ๋๋ค. ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด 11 ๋ 10(์ํ๋ ๊ฒฝ์ฐ 9๋)์์ ์ปดํ์ผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ด์ผ ํฉ๋๋ค. FreeBSD๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ผ๋์ ๋๊ณ ๊ฐ๋ฐ๋์์ต๋๋ค.
@radovanovic ๋๋ ๋ํ mono@freebsd ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ ์ด๋ค ํ ๋ก ์ด ์ผ์ด๋์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๋ฌด์์ ํด์ผ ํ๋์ง ์ฝ๊ฐ ํผ๋์ค๋ฝ์ต๋๋ค.
์ฌ๊ธฐ๊ฐ mono@freebsd ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ณด๋ค ๋ ๋ง์ ์ฒญ์ค์ ๋์์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๊ธฐ์ ์ ์ธ ๋ ผ์, ์์ ์กฐ์ ๋ฐ ์ํ๋ฅผ ๊ธฐ๋ํ์ต๋๋ค. OTOH ์ฐ๋ฆฌ๋ ํ ๋ฌธ์ ์ ๋ํด ๋ฌด์ํ ๋ง์ ๋ฌด์์ ํ ๋ก ์ ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํฉ๋ฆฌ์ ์ธ ์๋ต ์ ์ด์์ผ๋ก ์ฆ๊ฐํ๋ฉด ์ด ๋ฌธ์ ์ ๋ณ๊ฐ์ ๋ฌธ์ ๋ก ํน์ ์ค๊ณ ํ ๋ก ์ ํ ์ ์์ต๋๋ค.
๋ง์นจ๋ด FreeBSD 11.0์์ corefx ํ
์คํธ๋ฅผ ์คํํ ์ ์์์ต๋๋ค(์ธ๋ถ ๋ฃจํ ํ
์คํธ ์์ด)
์ด ํต๊ณผ: 144208
์ด ์คํจ: 2622
๊ฑด๋๋ด ํฉ๊ณ 207
์ง์นจ๊ณผ ํจ๊ป https://github.com/dotnet/corefx/wiki/Building-.NET-Core--2.x-on-FreeBSD ๋ฅผ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ํน์ ๋ฌธ์ ๋ฅผ ์ ์ถํ๊ณ os-freebsd ๋ฐ up-for-grab์ผ๋ก ํ๊ทธ๋ฅผ ์ง์ ํ๊ฒ ์ต๋๋ค.
๋ณธ๊ฒฉ์ ์ธ ์ ํฌ๋ฅผ ์์ํ ์ ์์ต๋๋ค. ์์ ๋ด์ฌ์๊ฐ ํ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์, ์ ์๋ 2๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์์ต๋๋ค. ๋๋ ๋ํ ๊ทธ๊ฒ์ ๋ํด ๋ค์ ๊ฐ ๊ฒ์ด๋ค.
์ผ๋ถ ์์
์งํ ์ค์ธ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ํ์ฌ ํต๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ํต๊ณผ: 238892
์ด ์คํจ: 58
๊ฑด๋๋ด ํฉ๊ณ 1628
System.Runtime.Tests.dll, 1
System.Net.Ping.Functional.Tests.dll, 7
System.Net.NameResolution.Pal.Tests.dll, 3
System.Net.NameResolution.Functional.Tests.dll, 4
System.IO.MemoryMappedFiles.Tests.dll, 1
System.IO.FileSystem.Tests.dll, 7
System.Globalization.Tests.dll, 2
System.Drawing.Common.Tests.dll, 31
System.Console.Tests.dll, 2
๊นจ์ง ์ปต ์ง์์ ์ถ์ ํ๊ธฐ ์ํด dotnet/corefx#24538์ด ์ด๋ฆฝ๋๋ค.
ํฐ ์ง์ ! ํธ๋ฆฌ ๋ด์์ FreeBSD๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ NetBSD๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ๋จํด์ผ ํฉ๋๋ค.
@wfurt ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๊ณต์ ํด ์ฃผ์ธ์. ๋ช ์ค
์ด๊ธฐ ์ง์์ด ๋ง์คํฐ ๋ถ๊ธฐ์ ๋ณํฉ๋์์ต๋๋ค. ๋น๋๋ WIKI ํ์ด์ง์ ์ค๋ช
๋ ๋๋ก ์๋ํด์ผ ํฉ๋๋ค.
dotnet/corefx#24386์์ ์ฒ์ฒํ ์งํ ์ค์ด์ง๋ง ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ฅผ ๋ฐฉํดํด์๋ ์ ๋ฉ๋๋ค.
FreeBSD์์ ์ด๋ฏธ .NET์ ๋ถํธ์คํธ๋ฉํ ์ ์์ต๋๊น?
ํ๋์ @krytarowski๋ฅผ ์๋ํ์ง ์์์ต๋๋ค. ํด๋ง์ 2.0 ๋ฆด๋ฆฌ์ค๋ก ์ ๋ฐ์ดํธ
์๋ ํ์ธ์, ๊ทธ๋์ clr ๊ด๋ฆฌ ํ ์คํธ๊ฐ ์คํ๋์ง ์์ ๊ณค๊ฒฝ์ ์ฒํ์ต๋๋ค. https://pastebin.com/B5KhtKX5
์ผ๋ง ๋์ ๋ฌธ์ ๊ฐ ๋์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ ๋ ฅ์ด๋ ์ข์ ๊ฒ์ ๋๋ค. ๋ํ ์ต๊ทผ์ Windows(๋ง์คํฐ, Git ๊ฐ์ 749194e)์์ corefx ๋น๋ ์ ๋น๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. https://pastebin.com/JXUySLTY
๋๋ ๊ทธ๊ฒ์ด ๊ฐํ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ง๋ง ์ค๋ ๋ฐค์ ์๋๊ฐ ๋๋ ค์ก์ต๋๋ค.
์ค๋ฅ๋ฅผ ๋ณด๋ฉด:
tests/runtest.sh: line 786: ((: i<: syntax error: operand expected (error token is "<")
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ๋๋ ์ฝ๋ ์ค :
bash
for (( i=0; i<$maxProcesses; i++ )); do
๋ด ์ง๊ฐ์ $maxProcesses
๊ฐ ์ ์๋์ง ์์ ๋ถ์์ ํ ๋ถ์ธ ํํ์์ผ๋ก ์ด์ด์ง๋ค๋ ๊ฒ์
๋๋ค.
diff
+for (( i=0; i<$maxProcesses; i++ )); do
-for (( i=0; i<; i++ )); do
์ด๊ฒ์ ์๋นํ ํ ์คํธ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ ์ด๋ ๊ฒ ๋์๋์ง ์์๋ณด๊ธฐ ์ํด ๋ค๋ก ์ฌ๋ฅ์ ๊ฐ์ผ ํฉ๋๋ค.
๋น์ ์ ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! @josteink :) ๋ง์ต๋๋ค. ํจ์น๋ ์ฌ๊ธฐ: https://pastebin.com/d5y9k1tw
์ด๋ ๊ฒ ํ๋ฉด ํ ์คํธ๋ฅผ ์คํํ ์ ์์ง๋ง ~1000๊ฐ์ ์ค๋ฅ์์ ๋ชจ๋ ๋์ผํ ํน์ฑ์ ํฌ๊ธฐํ์ต๋๋ค.
์คํจ - JIT/๋ฐฉ๋ฒ๋ก ์ /์บ์คํธ/iface/_il_dbgiface2/_il_dbgiface2.sh
์คํ ์์
/usr/home/russellh/Git/coreclr/bin/tests/Windows_NT.x64.Debug/Tests/coreoverlay/corerun _il_dbgiface2.exe
coreclr_initialize ์คํจ - ์ํ: 0x80004005
์์: 100
์ค์ : 255
์คํ ์ข
๋ฃ - ์คํจ
์ข์, @janvorli ์ ๋งค์ฐ ํ๋ฅญํ ์ ๋ณด์
ํจ์น๋ ์ฌ๊ธฐ: https://pastebin.com/d5y9k1tw
๊นจ์ง ๋น๋๋ฅผ ์์ ํ๋ ํจ์น๊ฐ ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ๋์ด ์์ ํ ์ ์๋๋ก ํ ์์ฒญ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค. :)
๊ฐ์ฌํฉ๋๋ค. ๋๋ ์ฌ์ ํ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฉฐ ์ด์ ฏ๋ฐค ํ์ ์ค๋ฅ์ ์์ธ์ด ๋ฌด์์ธ์ง ํ์ ํ ์ ์์์ต๋๋ค.
Netcore 2.1(์ถ์ ํ)์ ๋ํ Freebsd 11 "pkg install" ์ง์์ ์ผ์ด๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ง์ต๋๊น?
TLDR; ๋ง์ ์์ ์ด ์๋ฃ๋์์ง๋ง ์ง์ ๋ฐ๋ ค๋ค ์ค ์ฌ๋์ด ํ์ํฉ๋๋ค. ํฌํธ Makefile์ ์์ฑํ๋ ๊ฒ์ ์ฌ์ด ๋ถ๋ถ์ ๋๋ค.
@wfurt ๋ Linux๋ฅผ ์ฌ์ฉํ์ฌ CLR๊ณผ FX๋ฅผ ๋น๋ํ ์ ์์์ง๋ง ๋๋ถ๋ถ ํ ์คํธ๋์ง ์์์ต๋๋ค. FreeBSD์์ ๋น๋ํ '๋ค์ดํฐ๋ธ' ๋ถ๋ถ์ ์ป์ ์ ์์์ง๋ง ๊ด๋ฆฌ๋๋ ๋ถ๋ถ์ Windows(FreeBSD์ฉ)์์ ๋น๋ํ๋ ๋ฐ ์ง์ฐ์ด ์์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ด์ ์ฒด์ ๊ฐ์ ํ์ผ์ ์ ์กํ๋ ์๋ง์ด์์ต๋๋ค.
[email protected] ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๋ณ๋๋ก @dragonsa ๋ Linux ์๋ฎฌ๋ ์ด์ ์ ์ฌ์ฉํ์ฌ MintOS์์ Dot Net Core 1์ ๋ฐ์ด๋๋ฆฌ ๋ฒ์ ๊ณผ ๋ชจ๋ ๋๊ตฌ ์ฒด์ธ(msbuild, nuget ๋ฑ)์ ๊ฐ์ ธ์์ต๋๋ค. ๋๋ ๊ทธ์ ํจ์น๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ ๋๊ตฌ๋ฅผ ์คํํ ์ ์์์ง๋ง ์๋ฌด ๊ฒ๋ ๋ง๋ค์ง ๋ชปํ์ต๋๋ค. ์ด ํจ์น๊ฐ ์์ง ์ปค๋ฐ๋์๋์ง ํ์คํ์ง ์์ต๋๋ค. ๋๋ ๊ทธ๋ค์ ๊ฒํ ํ๋ ๋์ค์ ์ง์ ์ ์ฎ๊ฒผ์ต๋๋ค. ํ์ฌ ์ญํ ์ DotNet์ด ์์ผ๋ฉฐ ์ง๊ธ ๋ค๋ฅธ ์ผ์ ํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ ๋ค ๋ฌด์จ ๋ป์ด์ผ? ๋๊ตฐ๊ฐ๊ฐ @dragonsa ์ ํจ์น๋ฅผ ํ์ธํ ์ ์๋ค๋ฉด ํฌํธ ํธ๋ฆฌ๋ฅผ ํธ์ํ ์ ์์ผ๋ฉฐ ๊ธฐ์ ์ ์ผ๋ก FreeBSD์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ์ด 2๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ๋ณด์๋ค์ํผ, ํจ๊ป ๊ฐ์ ธ์ ์ ๋ฆฌํด์ผ ํ๋ ์์ ๋ถ๋ถ์ด ๋ง์ด ์์ต๋๋ค. ๋ด๊ฐ ๊ณต์ ๋จ์ด๋จ๋ ธ์ผ๋ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ์ง์ด๋ค์ด์ผ ํ๋ค. ๋๋ [email protected] ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์ ๋ฐ์ด๋๋ ๊ฒ์ ์ ์ํ๋ค. https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/eresources-mail.html
@russellhadley Russell์
์๋ ํ์ธ์,
์ฌ๊ธฐ์์ .NET ๊ฐ๋ฐ์์ ์ด์ ๋ํด ๋ ผ์ํ๋ฉด์ FreeBSD ํฌํธ/ํจํค์ง์ ๊ฐ๋ฐ์ ๋๊ณ ์ถ์ต๋๋ค.
์ ์ฒด ๊ณต๊ฐ: ์ ๋ .NET ๊ฐ๋ฐ์๊ฐ ์๋์ง๋ง ์ด๊ฒ์ ํธ๋ฆฌ์ ํฌํจ์ํค๊ธฐ ์ํด ๋๊ตฌ์๋ ํจ๊ป ์ผํ ์ํฅ์ด ์์ต๋๋ค.
~์
@cschuber ๋๋ฌด ๋ฐ๋น ์ ํ ์ํฉ์ ์ฃผ์ํ์ง ๋ง์นจ๋ด ์ฐ๋ฆฌ๊ฐ ์ด ๋ฌผ๊ฑด์ด ์ ๋๋ก ์ฐฉ๋ฅํ๋ ๊ฒ์ ๋ณด์ญ์์ค. ์ ํญ์ ์ธ ์ง์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค :)
@cschuber , ํ์ฌ ํ์ฑ ๋ฌธ์ ๋ https://github.com/dotnet/coreclr/issues/18067์ ๋๋ค. ์ฃผ๋ก ์ด ๋ค ๊ฐ์ง ๊ธฐ๋ฅ์ด ๋จ์ ์์ต๋๋ค . label:os-freebsd+label :up-for-grabs+is:issue ๊ฐ์ฅ ๊น๋ค๋กญ๊ณ ํ๋ ๊ฒ https://github.com/dotnet/corefx/issues/2046.
@cschuber ์ ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ฐ๋ฅํ ์ ์๋ ์์ ์ ๊ฑฐ์ ๋๋ฌํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ต๊ทผ์ @mateusrodrigues ์ ํจ๊ป FreeBSD์์ .net์ด ์๋ํ๋๋ก ํ๊ณ ์์ผ๋ฉฐ ๊ทธ๋ PowerShell์ ์๋์ํค๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. @kasper3์์ ๋ณด๋ธ ๋ชฉ๋ก์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ฝ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ง๊ธ์ PNSP๋ฅผ ๋์ง ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์ฅ๋์ ๊ฐ์ฅ ์๊ธํ ๋ฌธ์ ๋ dotnet/corefx#30698 ๋ฐ https://github.com/dotnet/coreclr/issues/18481์
๋๋ค. ์ปค๋ฎค๋ํฐ์ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ๋ค์ ํํค์น ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. ์ต๊ทผ์ ํ
์คํธ๋ฅผ ํด๋ณด์ง ์์์ง๋ง ์คํจ ํ์๊ฐ ๋์ด๋ ๊น ๋๋ ต์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ๊ฐ์ ์๋ก์ด ์คํจ ๊ทธ๋ฃน์ ๋ํด ๋ฌธ์ ๋ฅผ ์ด์ด์ผ ํฉ๋๋ค.
๋ํ ์์ค ๋น๋๋ฅผ ์์ ํ๊ธฐ ์์ํ์ง๋ง ์์ง ๋ช ๊ฐ์ง ๊ณผ์ ๊ฐ ์์ต๋๋ค.
C# ์ปดํ์ผ๋ฌ๋ C#์ผ๋ก ์์ฑ๋์์ต๋๋ค. ํ์ฌ .net ๋น๋๋ ์ด์ ๋ฒ์ ์ .net์ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๋๋ ์ด์
๋ธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋ํ Nuget์ ํจํค์ง์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
ํ์ฌ FreeBSD์์ coreclr, corefx ๋ฐ ๊ธฐํ ์ ์ฅ์๋ฅผ ๊ตฌ์ถํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๋ถํธ์คํธ๋ฉ cli๊ฐ ์์ต๋๋ค. 2.1 ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์์ค ๋น๋๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด ์์ง ๋น๋ ์ง์นจ์ ์
๋ฐ์ดํธํ์ง ์์์ต๋๋ค.
+1 ์์ง ์ฝ๊ฐ์ ์ถ์ง๋ ฅ์ด ์์ด์ ๋คํ์
๋๋ค. ์์ง์ด๋ ๋ถ๋ถ์ด ๋๋ฌด ๋ง์์ ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ์ด๋ ต์ง๋ง ์ฌ๋๋ค์ด ๋ฐ์ ํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ผ๋ง ์ ์ https://github.com/dotnet/coreclr/issues/6115๋ฅผ ๋ง๋ค์์ง๋ง ์์
ํ๋ ํ๋ก์ ํธ๊ฐ ๋ณด๋ฅ๋์์ต๋๋ค. ์ธ์ ๊ฐ (๋ฆฌ๋
์ค ํธํ ์์ด) pkg install dotnet && dotnet build
๋งํผ ์ฝ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ๋ ๊ธฐ๋๋๋ค
์ด์ ์ผ์ผ ๋น๋๊ฐ ์งํ ์ค์
๋๋ค. ์ฌ๊ธฐ์์ ๋ฐํ์ ๋๋ SDK๋ฅผ ์ป์ ์ ์์ต๋๋ค. https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/dotnet-runtime-latest-freebsd-x64.tar.gz ๋ฐ
https://dotnetcli.blob.core.windows.net/dotnet/Sdk/master/dotnet-sdk-latest-freebsd-x64.tar.gz
์๋ฅผ ๋ค์ด Linux ๋๋ Windows์์ dotnet publish -r freebsd-x64
๋ฅผ ์ํํ๋ฉด ์์ฒด ํฌํจ๋ FreeBSD ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์์ต๋๋ค.
์์ง ๋ถ์์ ํ๊ณ ์ง์๋์ง ์์ง๋ง ๋๊ตฌ๋ ์ฝ๊ฒ ๊ธฐ์ฌํ ์ ์์ด์ผ ํฉ๋๋ค.
์ฌ๋๋ค์ด ์๋ํด ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๋ํ ์ด๊ฒ์ ๊ธฐ๋ฅ ๊ฒฉ์ฐจ๋ฅผ ์ขํ๊ณ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํ ์ต์ข
ํธ์๋ฅผ ์ํ ์ข์ ์๊ฐ์ด ๋ ๊ฒ์
๋๋ค.
์ฐธ์กฐ: @mateusrodrigues
์๊ณ ํ์ จ์ต๋๋ค. @wfurt ์ @bartonjs.
2-3๋ ์ ์ฏค์ ์ ๊ฐ ์ฒซ FreeBSD ์ปค๋ฐ์ ์ ์ํ์ ๋, ์ ๋ ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ๊น์ง ์ฌ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ง ์์์ง๋ง ํ์คํ ์๋ํ๊ณ ์ถ์์ต๋๋ค.
์ด๊ฒ์ ํ์คํ ํฐ ์ด์ ํ์ด๋ฉฐ ์๋ก์ด ๊ธฐ์ฌ์๊ฐ ํฌํธ๋ฅผ ์๋ฃํ๋ ๋ฐ ๋ ์ฝ๊ฒ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฌ๊ธฐ๊น์ง ์ฌ ์ ์๋๋ก ๋์์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค ๐
ํฐ ์ง์ ! ๋๋ ์ฌ์ ํ ํด์ฒด์ธ(LLDB ๋ฐ LLD๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ LLVM ํ๋ก์ ํธ๊ฐ ์๋ฃ๋จ)๊ณผ NetBSD์ฉ ํ๋์จ์ด ์ง์ ๊ฐ์ํ(Linux/BSD๋ ์ด์ VTx ์น๋ช ์ ์ธ ์์ธ๊ฐ ๋ฐ์ํ ๋๊น์ง ๋ถํ ์ ์์ํ๊ณ FreeDOS์ ๊ฐ์ ๋ ๊ฐ๋จํ OS๋ ์ด๋ฏธ ์๋ํจ)์ ์ธ์ฐ๊ณ ์์ผ๋ฏ๋ก ๋ค์ ์์ํ๊ฒ ์ต๋๋ค. ๋ด NetBSD ํฌํ ์ด ๋ ๋นจ๋ฆฌ ์ด๋ฃจ์ด์ง๊ธธ ๋ฐ๋๋๋ค. ๋ ๋์ FreeBSD ์ง์์ ๋ ์ฌ์ด ์ด๋ ฅ์์ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์์ฒญ๋ :)
์ฐ๋ฆฌ๋ ์ ์ทจํจ์ ์ถํํฉ๋๋ค ์ ensil bombsrdment??
@krytarowski 'FreeBSD ์ง์'์ด ๋ ๋์ ๋ฐฉ๋ฒ์ ๊ฐ๋ฐํ ์ ์์ต๋๊น?
์ผ๋ถ FreeBSD ์ ๋ฌธ๊ฐ๊ฐ https://github.com/dotnet/coreclr/issues/22124๋ฅผ ์ดํด๋ณผ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. 11์ฉ ๋ฐ์ด๋๋ฆฌ ๋น๋๊ฐ 12์์ ์คํ๋ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค ;(
๊ฐ๋จํ ์ฑ์ผ๋ก ์ฌํํ๊ธฐ ์ฝ๊ณ 12.0 ๋ฆด๋ฆฌ์ค๋ dotnet์ด ์์กดํ๋ ๊ฒ์ ๊นจ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋
ํ์ธ์, ์ ๋ ์ ๋ฌธ๊ฐ๋ ์๋์ง๋ง Lua53 ํฌํธ์ 12-RELEASE์์ ์ค๋ ๋ฉ ํ๊ท๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
์๋ ๋ฒ๊ทธ๋ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235158
ํ์ธ๋ ๊ธฐ๋ณธ ์์คํ
๋ฒ๊ทธ๋ https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235211์
๋๋ค (๊ธฐ๋ณธ ์์คํ
๋ฒ๊ทธ๋ ๋น๊ต๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฝ๋๋ฅผ ์๋ณํฉ๋๋ค).
Lua์ ๋ํ ์์ ์ฌํญ์ -pthread์ ๋ํ Lua์ ์๊ตฌ ์ฌํญ์ด ZERO์ธ ๊ฒฝ์ฐ์๋ -pthread์ ๋ํ ๋งํฌ์ ๋๋ค.
@RussellHaley ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๊ฒ์ ์ ๋งํ ๋ฆฌ๋์ฒ๋ผ ๋ณด์ ๋๋ค.
๋์์ด ๋ ์ ์์ด ๊ธฐ์ฉ๋๋ค. ๊ฐ์ด ๋๊ณ ์ถ์ง๋ง Lua ํฌํธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ช ์๊ฐ์ด ๊ฑฐ์ ์์ต๋๋ค. ์์ผ๋ก๋ ํ์จ์ฃผ์ธ์!
coreclr ์์ FreeBSD ์ค๋ ๋ฉ ๊ตฌํ ์ ์ ๋ฐ์ ์ผ๋ก ๊ฝค ์ผ๊ด๋๊ฒ ์ฌ์ฉ
์ฆ, "์ผ๋ฐ" ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ง ํ์๊ฐ ์๋ ๊ธฐ๋ณธ ๋ฒํธ์ ์กฐ๊ฐ์ด ์์ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๊ตฌํ์ ๋ํด ๋ ๋ง์ด ์๊ณ ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์ฐธ์ฌํ ์ ์์ต๋๊น? @janvorli ?
์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
[furt<strong i="6">@daemon</strong> ~]$ LD_PRELOAD=/usr/lib/libpthread.so ./dotnet-3.x/dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.0.100-preview-010021
Commit: d5c97b7c2a
Runtime Environment:
OS Name: FreeBSD
OS Version: 12
OS Platform: FreeBSD
RID: freebsd-x64
Base Path: /usr/home/furt/dotnet-3.x/sdk/3.0.100-preview-010021/
Host (useful for support):
Version: 3.0.0-preview-27218-01
Commit: d40b87f29d
.NET Core SDKs installed:
3.0.100-preview-010021 [/usr/home/furt/dotnet-3.x/sdk]
.NET Core runtimes installed:
Microsoft.NETCore.App 3.0.0-preview-27218-01 [/usr/home/furt/dotnet-3.x/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
๊ด๋ฒ์ํ ํ
์คํธ๋ฅผ ํ์ง๋ ์์์ง๋ง ์ ์ด๋ dotnet
๋ค์ ์คํํ ์ ์์ต๋๋ค.
์ข์, dotnet ์คํ ํ์ผ์ด Linux ์ด์ธ์ ๋ค๋ฅธ ์์คํ
์ฉ pthread์ ์ฐ๊ฒฐ๋์ด ์์ง ์์์ ์ ์ ์์ต๋๋ค.
https://github.com/dotnet/core-setup/blob/2ef0b64810530961f492c33d37fc7509128e0a9b/src/corehost/cli/exe.cmake#L59 -L61
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๋ง์ฒ๋ผ ๊ฐ๋จํ๋ค๋ ๋ป์ ๋๊น? ์ฆ, ์ด๋ ๊ฒ ๊ฐ๋จํฉ๋๊น? https://github.com/josteink/core-setup/commit/25657ba2e181cce401acd7f4bf9d27a08a668470
๊ทธ๋ ๋ค๋ฉด ๊ธฐ๊บผ์ด ํ๋ณดํ๊ฒ ์ต๋๋ค.
๋ค ๊ทธ๋ ๊ฒ ์๊ฐํฉ๋๋ค. @jooperator์ ํ์ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ
"dl"๋ ํ์ํ์ง ํ์คํ์ง ์์ง๋ง PR @josteink ๋ฅผ ์ ์ถํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ค๋ฅธ์ชฝ. ๋ด ์๋ชป์ด์ผ. ๋ค์๊ณผ ๊ฐ์ด ๋ ๋ง์ด : https://github.com/josteink/core-setup/commit/a08f38e25a98c25f59c8ed8c8567a0cb08b1c1c6
๋๋ ๊ทธ๊ฒ์ ๋ํ PR์ ๋ง๋ค์์ต๋๋ค. ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์: https://github.com/dotnet/core-setup/pull/5072
์ค๋ฅธ์ชฝ. ๋ด ์๋ชป์ด์ผ. ๋ค์๊ณผ ๊ฐ์ด ๋ ๋ง์ด: josteink/ core-setup@a08f38e
๋๋ ๊ทธ๊ฒ์ ๋ํ PR์ ๋ง๋ค์์ต๋๋ค. ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์: dotnet /core-setup#5072
์ฐธ๊ณ ๋ก ์ด๊ฒ์ ๊ธฐ๋ณธ ์์คํ ์์ ์ด๋ฏธ ํจ์น๋ ๊ฒ ๊ฐ์ต๋๋ค. https://reviews.freebsd.org/D18988
dotnet/coreclr#22124 ์ ์ฃผ์ ๋ฌธ์ ๊ฐ
FreeBSD 12.0์ ๋
๋ฆฝํ ์ฑ์ ๊ฒ์ํ๋ ค๊ณ ํ ๋๋ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
freebsd-x64 ๊ณต์ NuGet ํจํค์ง๋ .NET Core 3.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 2 ์ดํ ์ ๊ฑฐ๋์์ผ๋ฉฐ ๊ทธ ์ดํ๋ก FreeBSD์ฉ ์ฑ์ ๊ฒ์ํ ์ ์์ต๋๋ค. 3.0์์ ๋ค์ ํ์ฑํํ ๊ณํ์ด ์์ต๋๊น?
์ฌํ๊ฒ๋ FreeBSD ๋ถ๋ฌ์ค๊ธฐ์ ์ฐ์ ์์๋ฅผ ๋ฎ์ถฐ์ผ ํ์ผ๋ฉฐ(์ข
๋จ ๊ฐ Azure ์ง์์ ๋ค์ํ ์ด์ ์ ์ด๋ ค์์ผ๋ก ์ธํด) .NET Core 3.0์์๋ ์ฐ์ ์์๊ฐ ์๋๋๋ค.
์ง๊ธ์ ์ํ์์ ์ธ๋ฏธ ์์
์ํ๋ก ์ ์งํ๊ณ ์ถ์ง๋ง ์ง๊ธ์ ํฌ์ํ ์๊ฐ์ด ๋ง์ง ์์ต๋๋ค :(.
@karelz ํ์ ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ .NET Core 3.0์ ์ฐ์ ์์ ์์ ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ FreeBSD Linux ์๋ฎฌ๋ ์ด์ ์ผ๋ก ๋ด ์ฑ์ ์คํํ๋ ๋ฐ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. :)
@hjc4869 ์๋๋ฉด ๋ชจ๋ ธ๋ก
๋ค์ ์๋ํด ๋ณผ ๊ณํ์ด์ง๋ง @karelz๊ฐ ์ธ๊ธํ๋ฏ์ด 3.0์์๋ ์ฐ์ ์์๊ฐ ์๋๋๋ค.
@newsash Mono๋ ์ ์๊ฒ ์ ํฉํ ์ต์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์กด .NET Core csproj ํ์ผ์ ์ถ๊ฐ๋ ๋ชจ๋ ธ ๋์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ธฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค.
Linux ์ปดํจํฐ์์ TargetFrameworks์ net472๋ฅผ ์ถ๊ฐํ๊ณ FrameworkPathOverride ๋ณ์๋ฅผ ์ค์ ํ๋ ค๊ณ ์๋ํ์ง๋ง ์ ๋๋ก ์๋ํ์ง ์์์ต๋๋ค. ๋ชจ๋ ธ ๋ฐ .NET Core ๋ชจ๋์์ ๊ตฌํ๋์ง๋ง .NET Framework์์๋ ๊ตฌํ๋์ง ์๋ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ธ๋ก ๋น๋ํ์ง ๋ชปํฉ๋๋ค. ๊ฒ๋ค๊ฐ ๋ชจ๋ ธ๋ .NET Standard 2.1์ ์ง์ํ์ง๋ง ์ฌ์ ํ net472 csproj์์ .NET Standard 2.1 dll์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
dotnet ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ณ๋์ csproj๋ฅผ ์ถ๊ฐํ๊ณ mono msbuild๋ฅผ ์ฌ์ฉํด์ผ ํ๋์? ์๋๋ฉด ๋ฌธ์ ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ต๋๊น?
๊ฐ๋จํ ์ค๋ช ์ ๋๋ค.
์ต๊ทผ ๋ฐํ[1]์ ๋ฐ๋ผ .NET 5๊ฐ ๋ชจ๋ ธ๋ฅผ ์ผํค๋ ค๊ณ ํ๋ฏ๋ก FreeBSD์ ๋ํ ์ ์ ํ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ด ์๊ธํด์ก์ต๋๋ค.
Mono๋ ํฌ๋ก์ค ํ๋ซํผ ์ง์์ด ๋งค์ฐ ์ฐ์ํ๋ฉฐ FreeBSD ํฌํธ์์ ๋ฌธ์ ์์ด ๊ตฌ์ถํ ์ ์์์ด ์ ์ฆ๋์์ต๋๋ค. FreeBSD์๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋ง์ ์์ ์์ .net ๋ก๋๋ฅผ FreeBSD์์ ์คํํฉ๋๋ค. ์ง๊ธ๊น์ง mono๋ ๊ทธ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์์์ง๋ง .NET 5์์๋ ๊ฐ๊น์ด ์ฅ๋์ mono๊ฐ NET 5๋ก ๋ณํฉ๋๊ณ FreeBSD ์ปค๋ฎค๋ํฐ๊ฐ .NET ์ํ๊ณ์์ ์์ ํ ์ฐจ๋จ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Dotnet์ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ๊ธฐ ํจ์ฌ ์ ์ ์ฑ์ํ FreeBSD ์ง์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
Microsoft๋ ์ด ์์ ์์ ๊ณต์์ ์ผ๋ก FreeBSD๋ฅผ ์ง์ํ๊ณ ๋ชจ๋ dotnet ๋๊ตฌ๊ฐ ์ด ํ๋ซํผ์์ ๋น๋๋๋๋ก ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@jasonpugsley ๋ https://github.com/jasonpugsley/core-sdk/wiki/.Net-Core-3.0.0-for-FreeBSD ์ง์นจ์ ์์ฑํ๊ณ @joperator ๋ https://github์์ ์์ค ๋น๋ ์์ ์ ์ํํ๋ ค๊ณ ํฉ๋๋ค
corefx์ ๋ํ ๋ง์ง๋ง ~30๊ฐ์ ํ ์คํธ๊ฐ ์คํจํ์ต๋๋ค.
System.Diagnostics.Tests.ProcessTests.TestPeakWorkingSet64
System.Diagnostics.Tests.ProcessTests.TestPrivateMemorySize
System.Diagnostics.Tests.ProcessTests.Kill_ExitedNonChildProcess_DoesNotThrow(killTree: True)
System.Diagnostics.Tests.ProcessTests.TotalProcessorTime_PerformLoop_TotalProcessorTimeValid
System.Diagnostics.Tests.ProcessTests.Kill_EntireProcessTree_True_EntireTreeTerminated
System.Diagnostics.Tests.ProcessTests.TestPeakVirtualMemorySize
System.Diagnostics.Tests.ProcessTests.ProcessNameMatchesScriptName
System.Diagnostics.Tests.ProcessTests.TestPrivateMemorySize64
System.Diagnostics.Tests.ProcessTests.LongProcessNamesAreSupported
System.Diagnostics.Tests.ProcessTests.TestPeakWorkingSet
System.Diagnostics.Tests.ProcessTests.TestPeakVirtualMemorySize64
System.Diagnostics.Tests.ProcessTests.Kill_ExitedChildProcess_DoesNotThrow(killTree: True)
System.Diagnostics.Tests.ProcessTests.Kill_EntireProcessTree_True_CalledOnTreeContainingCallingProcess_ThrowsInvalidOperationException
System.IO.Tests.DirectoryInfo_MoveTo.MoveDirectory_FailToMoveLowerCaseDirectoryWhenUpperCaseDirectoryExists
System.IO.Tests.FileInfo_Exists.LockedFileExists
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 0, firstLength: 10, secondPosition: 1, secondLength: 2)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 3, secondLength: 5)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 3, secondLength: 4)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 4, secondLength: 5)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 2, secondLength: 6)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 2, secondLength: 4)
System.IO.Tests.FileStream_LockUnlock.OverlappingRegionsFromOtherProcess_ThrowsException(fileLength: 10, firstPosition: 3, firstLength: 5, secondPosition: 4, secondLength: 6)
System.IO.Tests.Directory_Move.MoveDirectory_FailToMoveLowerCaseDirectoryWhenUpperCaseDirectoryExists
System.Net.NameResolution.Tests.GetHostEntryTest.Dns_GetHostEntry_HostString_Ok(hostName: \"\")
System.Net.NameResolution.Tests.GetHostEntryTest.Dns_GetHostEntryAsync_HostString_Ok(hostName: \"\")
System.Net.NameResolution.Tests.GetHostByNameTest.DnsObsoleteBeginEndGetHostByName_EmptyString_ReturnsHostName
System.Net.NameResolution.Tests.GetHostByNameTest.DnsObsoleteGetHostByName_EmptyString_ReturnsHostName
System.Net.NetworkInformation.Tests.PingTest.SendPingAsyncWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix(addressFamily: InterNetwork)
System.Net.NetworkInformation.Tests.PingTest.SendPingWithIPAddressAndTimeoutAndBufferAndPingOptions_Unix(addressFamily: InterNetwork)
System.Net.Sockets.Tests.DualModeAcceptAsync.AcceptAsyncV4BoundToSpecificV4_Success
System.Tests.AppDomainTests.MonitoringIsEnabled
System.Tests.GCExtendedTests.GetGCMemoryInfo
@am11 ์ System.Diagnostics.Tests.ProcessTests๋ฅผ ๋ณด๊ณ ์์ผ๋ฏ๋ก ์ ๊ธ ํ ์คํธ ์คํจ๊ฐ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ก ๋ณด์ ๋๋ค. ๋๊ตฌ๋ ์ง dotnet/corefx#30899๋ฅผ ์ดํด๋ณผ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ์๋๋ฉด ์ค๋จ๋์๋์ง ๊ถ๊ธํ์ญ๋๊น?
@elfalem , ์์ฆ FreeBSD CI ๋ ๊ทธ(Ubuntu์์ ํฌ๋ก์ค ์ปดํ์ผ)๊ฐ dotnet/runtime PR์์ ์คํ๋๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ฌ์ ์๊ตฌ ์ฌํญ์ด ์ค์น๋ https://github.com/dotnet/dotnet-buildtools-prereqs-docker/ ์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋๋ ์๊ฒฉ ์์คํ
์์ ๋ฐํ์ ํจํค์ง(๊ธฐ๋ณธ์ ์ผ๋ก tar.gz)๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด https://github.com/am11/runtime/blob/feature/freebsd/ci/.github/workflows/main.yml ๊ณผ ๊ฐ์ ํฌํฌ ๋ธ๋์น ์ค ํ๋์์ GitHub ์์
์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ์ํฐํฉํธ๋ฅผ ์
๋ก๋ํฉ๋๋ค. ํ๊ทธ ํธ์ https://github.com/am11/runtime/releases/tag/6.0.0-dev.freebsd.1 ์์ GitHub ๋ฆด๋ฆฌ์ค๋ก dotnet-runtime-6.0.0-dev-freebsd-x64.tar.gz
์์นด์ด๋ธ์๋ ๊ฒ์๋ dotnet ์ ํ๋ฆฌ์ผ์ด์
(dotnet SDK๊ฐ ์๋ ๋ค๋ฅธ linux/mac ์์คํ
์์)์ ์คํํ๊ธฐ์ ์ถฉ๋ถํ ๋นํธ๊ฐ ์์ต๋๋ค. ๋๋ ์๋ก์ด 12.2 VM(vagrant)์ ๋ง๋ค์ด ํ
์คํธํ๊ณ , ๊ณต๊ฐ๋ ์ฑ์ Mac์์ VM์ผ๋ก ์ถ์ถํ์ฌ ๋ณต์ฌํ๋๋ฐ, ์๋ํ์ต๋๋ค.
#!/usr/bin/env tcsh
$ sudo pkg install libunwind icu libinotify
$ fetch https://github.com/am11/runtime/releases/download/6.0.0-dev.freebsd.1/dotnet-runtime-6.0.0-dev-freebsd-x64.tar.gz
$ mkdir ~/.dotnet
$ tar xzf dotnet-runtime-6.0.0-dev-freebsd-x64.tar.gz -C ~/.dotnet
$ set PATH=(~/.dotnet:$PATH)
$ setenv PATH "$PATH"
$ dotnet /vagrant/MyPublishedApp.dll
Hello World!
@Thefrank ๋ ์ด๋ ์์ ์์ ์ ์ ํ FreeBSD ํฌํธ ํจํค์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ์๋๋ฉด ์ค๋จ๋์๋์ง ๊ถ๊ธํ์ญ๋๊น?
https://github.com/dotnet/source-build/issues/1139 ๋ฅผ ๋ณด๊ณ ์ถ์ ์๋ ์์ต๋๋ค.
์ต๊ทผ dotNET5 final์ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ์๋ํ์ง ์์์ง๋ง ๋ช ๋ฌ ์ ๋ง ํด๋ FreeBSD ๋ฐํ์์ Linux์์ ํฌ๋ก์ค ์ปดํ์ผ๋ก๋ง ๋น๋ํ ์ ์์์ต๋๋ค. ASPNet ๋ฐ SDK๋ Linux ํฌ๋ก์ค ์ปดํ์ผ์ด ํ์ํ์ง๋ง ๋ณ์ด ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ง ๋น๋๋จ(์์ผ์ด๋ ์
๋ฐ์ดํธ ๋๋ ์ผ๋ถ ๋ค๋ฅธ ์๋ํ๋ ๋ด์ด ์ข
์์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์)
ํธ์ง: ๊ทธ๋ฆฌ๊ณ @am11 ์ ๋ด๊ฐ ์ฌ์ผ ํก์ค์์ค์ ์
๋ ฅํ๋ ๋์ ๋ ๋์ ๊ธ์ ๊ฒ์ํ์ต๋๋ค. ๊ทธ๊ฒ์ ์ฝ๊ณ ๋ด ๊ฒ์ด ์๋๋ผ
edit2: ๊ตฌ๋์ ์ ์์ด๋ฒ๋ ธ๊ณ final์ด 2์ผ ์ ์ ๋์จ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ด๊ฒ ๋๋ ๋ฌด์์ธ๊ฐ์ ๋ํด ์์
ํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค
์์ ๋ชจ๋ ๊ฒ ์ธ์๋ https://github.com/dotnet/runtimelab/ ์์ FreeBSD ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์์ผ๋ฉฐ ํจํค์ง๋ฅผ ๋น๋ํ๊ณ ๊ฒ์ํ๋ ์์ ์ ์ฒ์ฒํ ์งํํ๊ณ ์์ต๋๋ค. ๋ชฉํ๋ ์ฑ์ด FreeBSD์์ ์คํ๋๊ณ ์์ค ๋น๋๋ฅผ ์ํ ์๋๋ฅผ ๊ฐ์ง ๋งํผ ์ถฉ๋ถํ ๋น๋ํ๊ณ ๊ฒ์ํ๋ ๊ฒ์ ๋๋ค.
๋น ๋ฅธ ์
๋ฐ์ดํธ๋ฅผ ์์ฑํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ง์นจ๋ด FreeBSD์์ 5.0.0 RTM์ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ชจ๋ ํ์ฑ์ ์ ๋ ฌํ์ต๋๋ค. ๋๋ Preview3 ์ดํ๋ก ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๊ณ ์ฑ๊ณต์ ์ธ 5.0์ ์ป๊ธฐ ์ํด ํธํ ๊ฐ๋ฅํ ๋น๋์ ์ฌ๋ฐ๋ฅธ ์กฐํฉ์ ์ฐพ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ _๋ง์_ ๋น๋ ์๋).
๋๋ ๋๋๊ฒ๋ ์ ์ ์์ ํดํน์ผ๋ก PowerShell 7.1.0์ ๋น๋ํ ์ ์์์ต๋๋ค. ์์ ํ ํ
์คํธํ์ง๋ ์์์ง๋ง ์๋ํ์ง๋ง SDK์ ์ข์ ํ
์คํธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐฉ๊ธ AspNetCore๋ฅผ ๊ตฌ์ถํ์ง๋ง ์์ง ํ
์คํธํ์ง ์์์ต๋๋ค.
$ dotnet --info
.NET SDK (reflecting any global.json):
Version: 5.0.100
Commit: 5044b93829
Runtime Environment:
OS Name: FreeBSD
OS Version: 11
OS Platform: FreeBSD
RID: freebsd.11-x64
Base Path: /tmp/rtm/sdk/5.0.100/
Host (useful for support):
Version: 5.0.0
Commit: cf258a14b7
.NET SDKs installed:
5.0.100 [/tmp/rtm/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 5.0.0 [/tmp/rtm/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 5.0.0 [/tmp/rtm/shared/Microsoft.NETCore.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
$ dotnet new console
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on /tmp/test/test.csproj...
Determining projects to restore...
Restored /tmp/test/test.csproj (in 106 ms).
Restore succeeded.
$ dotnet run
Hello World!
$
$ LANG=en-US ./pwsh
PowerShell 7.1.0
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS /tmp/powershell> $PSVersionTable
Name Value
---- -----
PSVersion 7.1.0
PSEdition Core
GitCommitId 7.1.0
OS FreeBSD 11.4-RELEASE FreeBSD 11.4-RELEASE #0 r362094: Fri Jun 12 18:27:15 UTC 2020 [email protected]:/usr/obj/usr/src/sys/GEโฆ
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0โฆ}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
PS /tmp/powershell> Get-Host
Name : ConsoleHost
Version : 7.1.0
InstanceId : fa711f95-926c-47e4-9e0c-dff0f518f825
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS /tmp/powershell>
์ด ์์ ์ ์๋์ผ๋ก(์ฆ, CI ์์คํ ์ธ๋ถ์์) ์ํํ ๋์ ์ ์ผํ ๋ฌธ์ ๋ ๋ค์ ๋น๋์์ ์ฌ์ฉํ ํน์ ๋น๋๋ฅผ ํ์๋ก ํ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค. ์์ฃผ ๋ฐ์ํ์ง๋ ์์ง๋ง ์ฌ๋ฐ๋ฅธ ์ปค๋ฐ์ ์ฐพ๊ธฐ ์ํด ๋ง์ ์ํ์ฐฉ์ค๊ฐ ํ์ํฉ๋๋ค. CI ์์คํ ์์ Linux ํฌ๋ก์ค ๋น๋๋ฅผ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ง ์์ง ์ดํด๋ณด์ง๋ ์์์ต๋๋ค. ๊ทธ๋๋ ์์ ํ SDK๋ฅผ ๋น๋ํ ๋ค์ ํด๋น SDK๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ฒ์ ๋น๋ํ ์ ์๋ค๋ ๊ฒ์ ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
russellh<strong i="5">@freebird</strong>:/www/winlua_net/htdocs/downloads$ pkg search dotnet
linux-dotnet-cli-2.0.7 Cross-platform .NET implementation
linux-dotnet-runtime-2.0.7 Cross-platform .NET implementation
linux-dotnet-sdk-2.1.201 Cross-platform .NET implementation (Software Development Kit)
linux-dotnet10-runtime-1.0.11 Cross-platform .NET implementation
linux-dotnet10-sdk-1.1.9 Cross-platform .NET implementation (Software Development Kit)
linux-dotnet11-runtime-1.1.8 Cross-platform .NET implementation
์ข์ ์ง์ ์
๋๋ค @jasonpugsley. ๋น๋์ ๋ํ ๋ ๋์ ๋ต๋ณ์ ์ฐพ์ผ๋ ค๊ณ ๋
ธ๋ ฅํ๊ณ ์์ง๋ง ์ง๋ ๋ช ๋ฌ ๋์ ์๋นํ ์๊ฐ์ ํ ์ ํ ์ ์์์ต๋๋ค ;(
PowerShell์ด โโterminfo ๋๋ฌธ์ ๋น์ ์๊ฒ ์ด๋ค ์ฌํ์ ์๊ฒจ์ฃผ์์ต๋๊น, ์๋๋ฉด ๋ค๋ฅธ ๊ณณ์์ ํฐ๋ฏธ๋ ์ ์๋ฅผ ๋ณต์ฌํ์ต๋๊น?
๋ด๊ฐ ssh๋ฅผ ๋ณด๋ธ Mac์์ ํฐ๋ฏธ๋ ์ ์๋ฅผ ๊ฐ์ ธ์์ต๋๋ค.
@jasonpugsley ๋น์ ์ ๋๋ณด๋ค ํจ์ฌ ์์ ์์ต๋๋ค. linux cross freebsd์์ ์ฝ์ด ๋ฐ sdk ๋น๋. ์ ํ๋ ํ
์คํธ์์ ์ ์คํ๋ฉ๋๋ค. ๋ฐํ์์ด๋ sdk ํฌ๋ก์ค๋น๋ ๋ชจ๋ freebsd ์์ฒด์์ ๋น๋ํ ์ ์์ต๋๋ค(linux์ freebsd๋ llvm9์ clang9๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค).
ld: error: /root/runtime/artifacts/obj/coreclr/FreeBSD.x64.Release/src/dlls/dbgshim/dbgshim.exports:1: unknown directive: V1.0
์ด๋ฒ ์ฃผ๋ง์ ์๊ฐ์ด ๋ ์์ผ๋ฉด ์กฐ๊ธ ๋ ์ฐ๋ฌ๋ณด๊ณ ์ ์ด๋ freebsd์ฉ Linux์ aspnetcore๋ฅผ ๊ตฌ์ถํ ์ ์๋์ง ํ์ธํ์ญ์์ค.
@Thefrank , ๋น์ ์ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
$ ROOTFS_ENV="ROOTFS_DIR=/crossrootfs/x64"
$ DOTNET_DOCKER_TAG="mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-freebsd-11-20201109180854-f13d79e"
$ docker run -e $ROOTFS_ENV -v $(pwd):/runtime $DOTNET_DOCKER_TAG /runtime/build.sh -c Release -cross -os freebsd
์คํจํ๊ฑฐ๋ artifacts/packages/Release/Shipping/dotnet-runtime-5.0.0-dev-freebsd-x64.tar.gz
์ ๋ฐ์ด๋๋ฆฌ ์คํ์ ์คํจํ์ต๋๊น?
์ฐ๋ถํฌ 18 ๋๋ 20์ SDK 5 ๋ฐฐ๋ฅผ crosscompileํ๋ ค๋ ๊ฒฝ์ฐ, ๋น์ ์์ด ํจ์น๋ฅผ ์ ์ฉ ํ ์ ์์ต๋๋ค https://github.com/dotnet/sdk/commit/80e42f16422352f725d78be72071781d8365a238๋ฅผ (๊ฐ ๋ง์คํฐ ๋ถ๊ธฐ์์ด๋ค).
๋ฐ์ฏค ์ ์ด ๋ค๋ฉด ํฌ์คํ
์ ๊ทธ๋งํด์ผ๊ฒ ์ด์.
๋ฐํ์ ๋ฐ SDK ๋น๋๋ Linux์์ ์๋ฃ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ๋ freebsd(dotnet --info, ์ ์ฝ์ ๋ฐ ์คํ)์์ ์คํ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ๋ freebsd์ ์์ค์์ ๋ฐํ์ ๋๋ SDK๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ทธ๋. ๋๋ HostOS๋ก FreeBSD์์ ๋ฐํ์์ ์ฌ๊ตฌ์ถํ๊ธฐ ์ํด stage0 ๋ฐ์ด๋๋ฆฌ๋ฅผ dogfoddingํ๋ ค๊ณ ์๋ํ์ง ์์์ต๋๋ค.
ld: ์ค๋ฅ: /root/runtime/artifacts/obj/coreclr/FreeBSD.x64.Release/src/dlls/dbgshim/dbgshim. ๋ด๋ณด๋ด๊ธฐ:1 : ์ ์ ์๋ ์ง์๋ฌธ: V1.0
์ด ๋ฌธ์ ๋ฅผ ๋ณ๋๋ก ๋ณด๊ณ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์ด ํจ์น๊ฐ ์ด๋ค ์ฐจ์ด๋ฅผ ๋ง๋ค๊น์?
--- a/eng/native/functions.cmake
+++ b/eng/native/functions.cmake
@@ -211,7 +211,7 @@ function(generate_exports_file)
list(GET INPUT_LIST -1 outputFilename)
list(REMOVE_AT INPUT_LIST -1)
- if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+ if(CMAKE_SYSTEM_NAME STREQUAL Darwin OR CLR_CMAKE_HOST_FREEBSD)
set(AWK_SCRIPT generateexportedsymbols.awk)
else()
set(AWK_SCRIPT generateversionscript.awk)
@@ -229,7 +229,7 @@ endfunction()
function(generate_exports_file_prefix inputFilename outputFilename prefix)
- if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+ if(CMAKE_SYSTEM_NAME STREQUAL Darwin OR CLR_CMAKE_HOST_FREEBSD)
set(AWK_SCRIPT generateexportedsymbols.awk)
else()
set(AWK_SCRIPT generateversionscript.awk)
์ด ํจ์น๊ฐ ์ด๋ค ์ฐจ์ด๊ฐ ์์ต๋๊น
์ ๋ FreeBSD๊ฐ Darwin์ด ์๋๋ผ ์ฌ๋ณผ ๋ฒ์ ์คํฌ๋ฆฝํธ๊ฐ ์งํ๋๋ ํ Linux๋ฅผ ๋ฐ๋ฅผ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. IMO ๋ฌธ์ ๋ generateversionscript.awk์ GNU-awk์ ํน์ ํ ๊ฒ์ด ์๋ค๋ ๊ฒ์ผ ๊ฐ๋ฅ์ฑ์ด ๋ ํฝ๋๋ค.
ํจ์น๊ฐ ์ค๋ฅ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
ld: error: /root/runtime/artifacts/obj/coreclr/FreeBSD.x64.Release/src/dlls/dbgshim/dbgshim.exports:1: unknown directive: _CreateProcessForLaunch
awk ๋ฒ์ ๋ฌธ์ ์ธ ๊ฒฝ์ฐ:
awk --version
awk version 20121220 (FreeBSD)
์คํํ๊ธฐ ์ฌ์ด ๊ฒฝ์ฐ gawk ํจํค์ง๋ฅผ ์ค์นํ๊ณ CMake ํ์ผ์ ํธ์ถ์ gawk๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๊น?
ํจ์น๋ฅผ ๋๋๋ ธ์ต๋๋ค. gawk pkg๋ฅผ ์ค์นํ์ต๋๋ค.
build.sh ์คํฌ๋ฆฝํธ๊ฐ cmake args๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ด๊ธฐ์๋ ๋๋ฌด ๊ฒ์ผ๋ฅด๋ฏ๋ก ์ฆ์ ์๋ฏธ๊ฐ ์์ผ๋ฏ๋ก gawk->awk๋ฅผ ์ฌ๋ณผ๋ฆญ ๋งํฌํ์ต๋๋ค.
๋์ผํ ์๋ ์ค๋ฅ
ld: error: /root/runtime/artifacts/obj/coreclr/FreeBSD.x64.Release/src/dlls/dbgshim/dbgshim.exports:1: unknown directive: V1.0
๋ฆ์ ํธ์ง: Linux์ ๋ฐ์ด๋๋ฆฌ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋น๋๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
# ./dotnet --info
.NET SDK (reflecting any global.json):
Version: 5.0.101-servicing.20605.0
Commit: c3a779b104
Runtime Environment:
OS Name: FreeBSD
OS Version: 12
OS Platform: FreeBSD
RID: osx-x64
Base Path: /root/runtime/.dotnet/sdk/5.0.100/
Host (useful for support):
Version: 5.0.1
Commit: 2ee13ec8e5
.NET SDKs installed:
5.0.100 [/root/runtime/.dotnet/sdk]
.NET runtimes installed:
Microsoft.NETCore.App 5.0.1 [/root/runtime/.dotnet/shared/Microsoft.NETCore.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
์ฃผ๋ก RID: osx-x64
๊ฐ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
์ฃผ๋ก
RID: osx-x64
๊ฐ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์
ํด๋น RID๋ ์ง์๋๋ ํ๋ซํผ๊ณผ ์ง์๋์ง ์๋ ํ๋ซํผ์ ์ผ๋ถ ํด์๋ ํ์ SDK์ ์ํด ํ์๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์คํ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋ฐํ์์์ ๊ฐ์งํ ์ค์ RID๊ฐ ์ ํํ์ง ์์ผ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
(์: dotnet(1)
)์ด ์ ๋๋ก ์คํ๋์ง ์์ต๋๋ค.
c#
using System;
using System.Runtime.InteropServices;
class Program
{
static void Main() =>
Console.WriteLine("Real RID: {0}", RuntimeInformation.RuntimeIdentifier);
}
๋ด ์์์ Real RID: freebsd.12-x64
๋ฅผ ์ธ์ํฉ๋๋ค.
ld ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด #45663์ ์ด์์ต๋๋ค. ์ฌํ๋ ํ ์ ์์์ต๋๋ค.
@Thefrank ld ์ค๋ฅ์ ๊ด๋ จํ์ฌ ๋ค์์ ์๋ํ์ญ์์ค.
diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
index 006a180fa0a..2a270572532 100644
--- a/eng/native/configurecompiler.cmake
+++ b/eng/native/configurecompiler.cmake
@@ -594,7 +594,7 @@ else (CLR_CMAKE_HOST_WIN32)
ERROR_QUIET
OUTPUT_VARIABLE ldVersionOutput)
- if("${ldVersionOutput}" MATCHES "GNU ld" OR "${ldVersionOutput}" MATCHES "GNU gold")
+ if("${ldVersionOutput}" MATCHES "GNU ld" OR "${ldVersionOutput}" MATCHES "GNU gold" OR "${ldVersionOutput}" MATCHES "LLD")
set(LD_GNU 1)
elseif("${ldVersionOutput}" MATCHES "Solaris Link")
set(LD_SOLARIS 1)
๊ทธ๋ฌ๋ฉด eng/native/functions.cmake
์ else
์ ์ด ์ฌ๊ธฐ์์ ํ์ฑํ๋ฉ๋๋ค.
function(set_exports_linker_option exports_filename)
if(LD_GNU OR LD_SOLARIS)
# Add linker exports file option
if(LD_SOLARIS)
set(EXPORTS_LINKER_OPTION -Wl,-M,${exports_filename} PARENT_SCOPE)
else()
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${exports_filename} PARENT_SCOPE)
endif()
elseif(LD_OSX)
# Add linker exports file option
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${exports_filename} PARENT_SCOPE)
endif()
endfunction()
์์งํ ๋งํด์, ์ ๋ ๋ง์ปค ์ ๋ฌธ๊ฐ๊ฐ ์๋๋ฏ๋ก ์ด๊ฒ์ด ์๋ํ๋ ๋์ FreeBSD์ clang์ ์ค์ ๋ก ํ์ํ/์ ๊ทํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์์ธํ ์ดํด๋ณด์ง ์์์ต๋๋ค.
์, ๋ง์ปค ์ฌ์ฉ์ ์์ด์ ํธ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ์ต๋๋ค. LLD์ ๋ฒ์ ๋ฌธ์์ด์๋ ๊ตฌ์ฑ ํ
์คํธ์ GNU ld ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋ ค๋ ์๋์ (compatible with GNU linkers)
๋์ด ์์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ๋ถ๋ช
ํ ์๋ฆฌํ์ง ์์ต๋๋ค. :)
์ด์ LD_GNU
ํ๋๊ทธ์ ์ด๋ฆ์ด ๋ค์ ์๋ชป๋๋๋ผ๋ LLD์์ ์ผ์นํ๋ ๊ฒ์ด ์ข์ ๋ณด์
๋๋ค.
์, ๋ ๋ง์ ์์ ์ด ํ์ํฉ๋๋ค. ํ๋๊ทธ ์ด๋ฆ์ ์ด์ ํผ๋์ค๋ฝ์ต๋๋ค. ์๋ฌด๋ ์ด๊ฒ์ ๊ทธ๋๋ก ์ปค๋ฐํ๋ ค๊ณ ํ์ง ๋ง์ญ์์ค.
๋ณด๋ธ ์ฌ๋: ์๋ ๋ง์คํธ ์๋ฆผ @github.com
๋ณด๋ธ ๋ ์ง: 2020๋
12์ 7์ผ ์์์ผ ์ค์ 10:26:48
๋ฐ๋ ์ฌ๋: dotnet /runtime
์ฐธ์กฐ: Jason Pugsley [email protected] ; ๋ฉ์
@noreply.github.com
์ ๋ชฉ: Re: [dotnet/runtime] FreeBSD ์ง์(#14537)
์, ๋ง์ปค ์ฌ์ฉ์ ์์ด์ ํธ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ์ต๋๋ค. LLD์ ๋ฒ์ ๋ฌธ์์ด์ ๊ตฌ์ฑ ํ ์คํธ์ GNU ld ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๊ธฐ ์ํ ์๋๋ก (GNU ๋ง์ปค์ ํธํ ๊ฐ๋ฅ) ํฌํจ๋์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ๋ถ๋ช ํ ์๋ฆฌํ์ง ์์ต๋๋ค. :)
LD_GNU ํ๋๊ทธ์ ์ด๋ฆ์ด ์ด์ ๋ค์ ์๋ชป๋์๋๋ผ๋ LLD์์์ ์ผ์น๋ ์ฌ๊ธฐ์์ ์ข์ ๋ณด์ ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub https://github.com/dotnet/runtime/issues/14537#issuecomment-739583816 ์์ ํ์ธํ๊ฑฐ๋ https://github.com/notifications/unsubscribe-auth/AECFDEXKTDFRAX4ZEE6VXZTSTQHLRANCNFSM4TS3XPPA ๊ตฌ๋
์ ์ทจ์
https://github.com/dotnet/runtime/pull/45664 ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
Clr์ Clr.Tools ํ์ ์งํฉ์ผ๋ก ๋น๋ํ ๋ค์ ์คํจํฉ๋๋ค.
/root/runtime/.dotnet/sdk/5.0.100/Microsoft.Common.CurrentVersion.targets(4818,5): error MSB3030: Could not copy the file "/root/runtime/artifacts/bin/coreclr/FreeBSD.x64.Release/libjitinterface" because it was not found. [/root/runtime/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj]
/root/runtime/.dotnet/sdk/5.0.100/Microsoft.Common.CurrentVersion.targets(4818,5): error MSB3030: Could not copy the file "/root/runtime/artifacts/bin/coreclr/FreeBSD.x64.Release/libclrjit" because it was not found. [/root/runtime/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj]
ํ์ ์งํฉ "mono" ๋ฐ ํ์ ์งํฉ "libs"๊ฐ ์ค๋ฅ ์์ด ์๋ฃ๋จ
@Thefrank ๊ทธ๊ฒ์ ๋น์ ์ด ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ ์ด diff์ ๋ ๋ฒ์งธ ๋ถ๋ถ์ ๋๋ค:
diff --git a/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj b/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj
index 2de5f568214..87242a728f0 100644
--- a/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj
+++ b/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj
@@ -12,7 +12,7 @@
<OutputPath>$(BinDir)/crossgen2</OutputPath>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
- <RuntimeIdentifiers>linux-x64;linux-musl-x64;win-x64</RuntimeIdentifiers>
+ <RuntimeIdentifiers>linux-x64;linux-musl-x64;win-x64;freebsd-x64</RuntimeIdentifiers>
<Configurations>Debug;Release;Checked</Configurations>
</PropertyGroup>
@@ -53,6 +53,7 @@
<LibraryNameExtension Condition="$([MSBuild]::IsOsPlatform('WINDOWS'))">.dll</LibraryNameExtension>
<LibraryNameExtension Condition="$([MSBuild]::IsOsPlatform('LINUX'))">.so</LibraryNameExtension>
<LibraryNameExtension Condition="$([MSBuild]::IsOsPlatform('OSX'))">.dylib</LibraryNameExtension>
+ <LibraryNameExtension Condition="$([MSBuild]::IsOsPlatform('FREEBSD'))">.so</LibraryNameExtension>
<JitInterfaceLibraryName>$(LibraryNamePrefix)jitinterface$(LibraryNameExtension)</JitInterfaceLibraryName>
</PropertyGroup>
์กฐ๊ฑด์์ OR๋ก LINUX ๋ผ์ธ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค.
@jasonpugsley ๊ฐ ํธ๋ฆญ์ ์ํํ์ต๋๋ค!
/root/runtime/src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj : error NU1101: Unable to find package Microsoft.AspNetCore.App.Runtime.freebsd-x64. No packages exist with this id in source(s):
๋๋ ๋ด๊ฐ ๋ฉฐ์น ์ ์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๋ ๊ฒ์ ์์๋ค๋ ๊ฒ์ ์๊ณ ์์๋ค! ์ด๊ฒ์ ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค
ํธ์ง: crossgen ์์ด (์ผ๋ช ํ๋ฐ๋ถ)
./build.sh -c Release -bl:buildlog.binlog
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:12:05.56
์ด ๊ฒ์๋ฌผ์ ๋ง์ง๋ง ํธ์ง ํธ์ง ๋งน์ธ:
ํ
์คํธ์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๊ณ ์ฅ๊ธฐ ์คํ ํ
์คํธ๋ผ๊ณ ํ์๋์ง๋ง ์ด๊ฒ์ ํ ํ
์คํธ์์ ์์ ๋ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
System.Net.HttpListener.Tests: [Long Running Test] 'System.Net.Tests.HttpListenerResponseTests.AddLongHeader_DoesNotThrow', Elapsed: 00:36:20
2์๊ฐ์ ๊ธฐ๋ค๋ฆฐ ํ ํ ์คํธ๋ฅผ ์ข ๋ฃํ์ต๋๋ค. ๋ค๋ฅธ ํ ์คํธ๋ ์ฌ์ ํ ์คํจํ์ต๋๋ค.
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'Microsoft.Extensions.Hosting.Unit.Tests'. Please check /root/runtime/artifacts/bin/Microsoft.Extensions.Hosting.Unit.Tests/net5.0-Release/testResults.xml for details! [/root/runtime/src/libraries/Microsoft.Extensions.Hosting/tests/UnitTests/Microsoft.Extensions.Hosting.Unit.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.NameResolution.Functional.Tests'. Please check /root/runtime/artifacts/bin/System.Net.NameResolution.Functional.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Net.NameResolution/tests/FunctionalTests/System.Net.NameResolution.Functional.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.NetworkInformation.Functional.Tests'. Please check /root/runtime/artifacts/bin/System.Net.NetworkInformation.Functional.Tests/net5.0-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/System.Net.NetworkInformation.Functional.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'Microsoft.VisualBasic.Core.Tests'. Please check /root/runtime/artifacts/bin/Microsoft.VisualBasic.Core.Tests/net5.0-Release/testResults.xml for details! [/root/runtime/src/libraries/Microsoft.VisualBasic.Core/tests/Microsoft.VisualBasic.Core.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Console.Tests'. Please check /root/runtime/artifacts/bin/System.Console.Tests/net5.0-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Console/tests/System.Console.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Runtime.Extensions.Tests'. Please check /root/runtime/artifacts/bin/System.Runtime.Extensions.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Runtime.Extensions/tests/System.Runtime.Extensions.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.Sockets.Tests'. Please check /root/runtime/artifacts/bin/System.Net.Sockets.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Net.Sockets/tests/FunctionalTests/System.Net.Sockets.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.IO.FileSystem.Tests'. Please check /root/runtime/artifacts/bin/System.IO.FileSystem.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.IO.FileSystem/tests/System.IO.FileSystem.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.Ping.Functional.Tests'. Please check /root/runtime/artifacts/bin/System.Net.Ping.Functional.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Net.Ping/tests/FunctionalTests/System.Net.Ping.Functional.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.Requests.Tests'. [/root/runtime/src/libraries/System.Net.Requests/tests/System.Net.Requests.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.WebSockets.Client.Tests'. [/root/runtime/src/libraries/System.Net.WebSockets.Client/tests/System.Net.WebSockets.Client.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Security.Cryptography.X509Certificates.Tests'. Please check /root/runtime/artifacts/bin/System.Security.Cryptography.X509Certificates.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Security.Cryptography.X509Certificates/tests/System.Security.Cryptography.X509Certificates.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.WebClient.Tests'. [/root/runtime/src/libraries/System.Net.WebClient/tests/System.Net.WebClient.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.Security.Tests'. Please check /root/runtime/artifacts/bin/System.Net.Security.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Net.Security/tests/FunctionalTests/System.Net.Security.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Diagnostics.Process.Tests'. Please check /root/runtime/artifacts/bin/System.Diagnostics.Process.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Diagnostics.Process/tests/System.Diagnostics.Process.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Security.Cryptography.Xml.Tests'. [/root/runtime/src/libraries/System.Security.Cryptography.Xml/tests/System.Security.Cryptography.Xml.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Runtime.Tests'. Please check /root/runtime/artifacts/bin/System.Runtime.Tests/net5.0-Unix-Release/testResults.xml for details! [/root/runtime/src/libraries/System.Runtime/tests/System.Runtime.Tests.csproj]
/root/runtime/eng/testing/tests.targets(117,5): error : One or more tests failed while running tests from 'System.Net.HttpListener.Tests'. [/root/runtime/src/libraries/System.Net.HttpListener/tests/System.Net.HttpListener.Tests.csproj]
0 Warning(s)
18 Error(s)
Time Elapsed 02:11:29.07
Build failed (exit code '1').
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ๋จํ ์ค๋ช ์ ๋๋ค.
์ต๊ทผ ๋ฐํ[1]์ ๋ฐ๋ผ .NET 5๊ฐ ๋ชจ๋ ธ๋ฅผ ์ผํค๋ ค๊ณ ํ๋ฏ๋ก FreeBSD์ ๋ํ ์ ์ ํ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ด ์๊ธํด์ก์ต๋๋ค.
Mono๋ ํฌ๋ก์ค ํ๋ซํผ ์ง์์ด ๋งค์ฐ ์ฐ์ํ๋ฉฐ FreeBSD ํฌํธ์์ ๋ฌธ์ ์์ด ๊ตฌ์ถํ ์ ์์์ด ์ ์ฆ๋์์ต๋๋ค. FreeBSD์๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋ง์ ์์ ์์ .net ๋ก๋๋ฅผ FreeBSD์์ ์คํํฉ๋๋ค. ์ง๊ธ๊น์ง mono๋ ๊ทธ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์์์ง๋ง .NET 5์์๋ ๊ฐ๊น์ด ์ฅ๋์ mono๊ฐ NET 5๋ก ๋ณํฉ๋๊ณ FreeBSD ์ปค๋ฎค๋ํฐ๊ฐ .NET ์ํ๊ณ์์ ์์ ํ ์ฐจ๋จ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Dotnet์ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ๊ธฐ ํจ์ฌ ์ ์ ์ฑ์ํ FreeBSD ์ง์์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
Microsoft๋ ์ด ์์ ์์ ๊ณต์์ ์ผ๋ก FreeBSD๋ฅผ ์ง์ํ๊ณ ๋ชจ๋ dotnet ๋๊ตฌ๊ฐ ์ด ํ๋ซํผ์์ ๋น๋๋๋๋ก ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.