Runtime: FreeBSD ์ง€์›

์— ๋งŒ๋“  2015๋…„ 05์›” 04์ผ  ยท  158์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/runtime

2017/9๋ถ€ํ„ฐ ์—…๋ฐ์ดํŠธ๋œ ์ œ์•ˆ

์ œ์•ˆ( @karelz ์ž‘์„ฑ - https://github.com/dotnet/corefx/issues/1626#issuecomment-329840518)์€ ์ถ”๊ฐ€ ํ† ๋ก  ๋ฐ ์ œ์•ˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ‘ ํฌ์ŠคํŠธ์— ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ชจ๋‘์ด ์ผ์— ๊ด€์‹ฌ์„ ํ‘œ๋ช… @RussellHaley ๋ฐ @wfurt (FreeBSD์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ) (.NET์—์„œ ์ฝ”์–ด ํŒ€)์™€ FreeBSD๋ฅผ์œ„ํ•œ ์ง€์—ญ ์‚ฌํšŒ ์ค‘์‹ฌ์˜ ํฌํŠธ๋ฅผ ๋…ผ์˜ํ–ˆ๋‹ค.
๋‹ค์Œ์€ ์šฐ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ๋งŒ๋“  ๊ณ„ํš ์ œ์•ˆ์ž…๋‹ˆ๋‹ค(ํ”ผ๋“œ๋ฐฑ/์ œ์•ˆ ํ™˜์˜).

  1. FreeBSD๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” CoreCLR ๋ฐ CoreFX ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ƒ์„ฑ - ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

    • ๋ณ‘๋ ฌํ™”ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. @wfurt ๊ฐ€ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • ๋นŒ๋“œ๋Š” FreeBSD๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ(Mac, Linux)์˜ ๋นŒ๋“œ๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • FreeBSD ๊ด€๋ จ ๋ฒ„๊ทธ ์ˆ˜์ •์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด ๋ฌธ์„œํ™”๋œ ๋‹จ๊ณ„(FreeBSD wiki์—์„œ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  2. CoreCLR ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐ ์•ˆ์ •ํ™”(corerun ์‚ฌ์šฉ)

    • ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๊ตฌ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋ชฉํ‘œ: ๋Ÿฐํƒ€์ž„์˜ ๊ธฐ๋ณธ ํ’ˆ์งˆ ์ œ๊ณต

  3. CoreFX ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐ ์•ˆ์ •ํ™”(corerun ์‚ฌ์šฉ)

    • ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๊ตฌ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๊ธฐ์—๋Š” xunit์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณผ๊ฑฐ ํฌํŒ… ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ [2]๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด xunit์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ์ด๋ก ์ ์œผ๋กœ [2]์™€ ๋ณ‘๋ ฌํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. xunit ๋ฐ”๋กœ ๊ฐ€๊ธฐ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์ •์  ์‹คํ–‰ ๋ ˆ์‹œํ”ผ ์ƒ์„ฑ)

    • ํ†ต๊ณผ์œจ์ด ํ•ฉ๋ฆฌ์ ์ผ ๋•Œ FreeBSD์šฉ ์ƒˆ๋กœ์šด OSPlatform API๋ฅผ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dotnet/corefx#23989 ์ฐธ์กฐ

  4. FreeBSD์—์„œ ์ „์ฒด ์Šคํƒ ๋นŒ๋“œ([1]-[3]์˜ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํผ๋กœ corerun ์‚ฌ์šฉ)

    • .NET Core๋ฅผ ๋ถ€์ŠคํŠธ๋ž˜ํ•‘ํ•˜๋ ค๋ฉด ๋ชจ๋“  ๋„๊ตฌ(nuget, msbuild, roslyn)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  5. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ(FreeBSD ํฌํŠธ)

    • 1๋‹จ๊ณ„: ๋„ˆ๊ฒŸ ํ”ผ๋“œ์˜ ์ œํ’ˆ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์šฉ

    • 2๋‹จ๊ณ„: ์†Œ์Šค์—์„œ ์ œํ’ˆ ๋นŒ๋“œ(์†Œ์Šค์—์„œ ๋นŒ๋“œ ์ž‘์—…์—์„œ ์ฐจ๋‹จ๋จ)

    • FreeBSD ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „๋ฌธ ์ง€์‹๊ณผ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฐธ๊ณ : ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ํŒจํ‚ค์ง€๋กœ ๊ณต์‹ .NET Core ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ๋„ FreeBSD ํŒจํ‚ค์ง€๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. FreeBSD์—์„œ ์ •๊ธฐ์ ์ธ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰

    • ๋ชฉํ‘œ: FreeBSD๋ฅผ ๊นจ๋Š” .NET Core ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ๊ธฐ์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ํ•„์š”ํ•œ ๋””์ž์ธ

    • FreeBSD ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „๋ฌธ ์ง€์‹๊ณผ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ์›๋ฆฌ:

  • [2]-[4]์˜ ๋ณ€๊ฒฝ์€ ์ฃผ๋กœ CoreCLR/CoreFX ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(CLA ์„œ๋ช… ์š”๊ตฌ ์‚ฌํ•ญ, .NET Core ํŒ€ ์ „๋ฌธ๊ฐ€/๊ตฌ์„ฑ์›์˜ ์ฝ”๋“œ ๊ฒ€ํ†  ๋“ฑ์œผ๋กœ ์ธํ•ด).
  • ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋†’์€ ์ˆ˜์ค€์˜ ์ž‘์—…์„ ์ถ”์ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„๊ทธ๋Š” ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์—์„œ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. [1]๊ณผ ์ถฉ๋ถ„ํžˆ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฉด ์œ„์˜ [2]์™€ [3]์—์„œ ์ž‘์—… ํ•ญ๋ชฉ์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2015/5 ๋ถ€ํ„ฐ @ghuntley์˜ ๋…์ฐฝ์ ์ธ ์ œ์•ˆ

์ด ๋ฌธ์ œ๋Š” corefx์šฉ FreeBSD ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ๋‹จ์œ„์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@stephentoub - ์‹ค์ œ๋กœ FreeBSD๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ• ์ค‘์ธ ๋” ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ํŠน์ • ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ „๋ฌธํ™”ํ•ด์•ผ ํ•  ๋•Œ Windows, Linux, OSX์˜ ์„ธ ๊ฐ€์ง€ ๊ด€๋ฆฌ๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๋นŒ๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ์ง€๊ธˆ์œผ๋กœ์„œ๋Š” ๋„ค ๋ฒˆ์งธ FreeBSD๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ OSGroup ๋Œ€์ƒ๊ณผ ํ•จ๊ป˜ IsFreeBSD ์†์„ฑ์„ ์ง€์›ํ•˜๋„๋ก ๋นŒ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•„์š”์— ๋”ฐ๋ผ csproj ํŒŒ์ผ์—์„œ FreeBSD ๊ด€๋ จ ์ฝ”๋“œ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ „๋ฌธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์ œ)

  • dotnet/runtime#14536(๊ณต๊ฐœ API์˜ OSGroup ์‹๋ณ„์ž)
  • dotnet/runtime#14507(๋น„๊ณต๊ฐœ API์˜ OSGroup ์‹๋ณ„์ž)

/cc: @janhenke @josteink

area-Meta enhancement os-freebsd

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฐ„๋‹จํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ ๋ฐœํ‘œ[1]์— ๋”ฐ๋ผ .NET 5๊ฐ€ ๋ชจ๋…ธ๋ฅผ ์‚ผํ‚ค๋ ค๊ณ  ํ•˜๋ฏ€๋กœ FreeBSD์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์‹œ๊ธ‰ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

Mono๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•˜๋ฉฐ FreeBSD ํฌํŠธ์—์„œ ๋ฌธ์ œ ์—†์ด ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ์ด ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. FreeBSD์—๋Š” ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ƒ์ ์—์„œ .net ๋กœ๋“œ๋ฅผ FreeBSD์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ mono๋Š” ๊ทธ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ”์›Œ์™”์ง€๋งŒ .NET 5์—์„œ๋Š” ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— mono๊ฐ€ NET 5๋กœ ๋ณ‘ํ•ฉ๋˜๊ณ  FreeBSD ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ .NET ์ƒํƒœ๊ณ„์—์„œ ์™„์ „ํžˆ ์ฐจ๋‹จ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Dotnet์€ ์ด๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๊ธฐ ํ›จ์”ฌ ์ „์— ์„ฑ์ˆ™ํ•œ FreeBSD ์ง€์›์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Microsoft๋Š” ์ด ์‹œ์ ์—์„œ ๊ณต์‹์ ์œผ๋กœ FreeBSD๋ฅผ ์ง€์›ํ•˜๊ณ  ๋ชจ๋“  dotnet ๋„๊ตฌ๊ฐ€ ์ด ํ”Œ๋žซํผ์—์„œ ๋นŒ๋“œ๋˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  158 ๋Œ“๊ธ€

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์— ๋”ฐ๋ฅธ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. "FreeBSD ํฌํŠธ ํŒ€"์€ CoreFX์˜ FreeBSD ๋ฒ„์ „์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž‘์—…์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค(dotnet/corefx#1626์— ์˜ํ•ด ์ถ”์ ๋จ).
  2. ํฌํŠธ ํŒ€์€ FreeBSD์—์„œ CoreFX ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก FreeBSD์—์„œ CoreFX ๋ฐ CoreCLR ์Šคํƒ์„ ์ถฉ๋ถ„ํžˆ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  3. ํ…Œ์ŠคํŠธ๋Š” ์ตœ์†Œํ•œ์˜ ํ’ˆ์งˆ ์ˆ˜์ค€์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์˜๋ฏธํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” FreeBSD์— ๋Œ€ํ•ด์„œ๋งŒ ํŠน์ • ํ…Œ์ŠคํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(Linux ๋ฐ OSX์™€ ๋น„๊ตํ•˜์—ฌ FreeBSD๋ฅผ ๋‹ค๋ฅธ *NIX ํ”Œ๋žซํผ๋ณด๋‹ค ๋†’์€ ํ‘œ์ค€์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค).
  4. FreeBSD ํฌํŠธ ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ CoreFX ํŒ€์€ FreeBSD์—์„œ ์‹คํ–‰๋˜๋Š” CI ์‹œ์Šคํ…œ์— CoreFX ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  5. ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ 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. FreeBSD์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ๋นŒ๋“œ
  2. FreeBSD์—์„œ ์ด๋Ÿฌํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ ๋นŒ๋“œ

(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

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

  • [ ] ์ž‘์—… 1
  • [ ] ์ž‘์—… 2
  • [ ] ์ž‘์—… 3

์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋Ÿฌํ•œ ์—…์ ์„ ๋‹ฌ์„ฑํ•˜๋„๋ก ์žฅ๋ คํ•  ๊ฒƒ์ด๋ฉฐ FreeBSD ์ง€์›์€ ์˜ˆ์ƒ๋ณด๋‹ค ํ›จ์”ฌ ๋นจ๋ฆฌ ๋„์ฐฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค! :์ƒ‰์•ˆ๊ฒฝ:

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ FreeBSD ์ง€์›์—๋Š” CoreFX์—์„œ ๋‹ค์Œ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • [x] ๋นŒ๋“œ ๋„๊ตฌ์™€ ์Šคํฌ๋ฆฝํŠธ์— FreeBSD ํ”Œ๋žซํผ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ( @josteink ์™€ ์ €, PR dotnet/corefx#2021 ๋ณ‘ํ•ฉ, dotnet/corefx#2030 ๋ณ‘ํ•ฉ)

13 ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ž์ฒด์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์œผ๋ฉฐ FreeBSD์— ํŠน์ •ํ•œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ Linux/OS X์šฉ์œผ๋กœ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” Interop ์กฐ๊ฐ(๋นŒ๋“œ ์ถœ๋ ฅ์˜ ๋ฐœ์ƒ์ˆœ):

  • [x] System.Private.URI (์™„๋ฃŒ, PR dotnet/corefx#2032 ๋ณ‘ํ•ฉ)
  • [x] System.Console (์™„๋ฃŒ, PR dotnet/corefx#2031 ๋ณ‘ํ•ฉ)
  • [x] System.Diagnostics.Debug (์™„๋ฃŒ, PR dotnet/corefx#2039 ๋ณ‘ํ•ฉ)
  • [x] System.Diagnostics.Process (ํ† ๋ก  dotnet/corefx#2070, ํ™๋ณด dotnet/corefx#3257)
  • [x] System.IO.Compression.ZipFile (์™„๋ฃŒ, PR dotnet/corefx#2041 ๋ณ‘ํ•ฉ)
  • [x] System.IO.FileSystem.DriveInfo (ํ† ๋ก  dotnet/corefx#2526, ํ™๋ณด dotnet/corefx#2606)
  • [x] System.IO.FileSystem.Watcher (ํ† ๋ก  dotnet/corefx#2046, ํ™๋ณด dotnet/corefx#3257)
  • [x] System.IO.FileSystem (์™„๋ฃŒ, PR dotnet/corefx#2049 ๋ณ‘ํ•ฉ)
  • [x] System.IO.MemoryMappedFiles (ํ† ๋ก  dotnet/corefx#2527, ํ™๋ณด dotnet/corefx#3143)
  • [x] System.IO.Pipes (ํ† ๋ก  dotnet/corefx#2528, ํ™๋ณด dotnet/corefx#2974)
  • [x] System.Net.NameResolution (ํ† ๋ก  dotnet/corefx#2988, ํ™๋ณด dotnet/corefx#3471)
  • [x] System.Security.Cryptography.Hashing.Algorithms (์™„๋ฃŒ, PR dotnet/corefx#2040 ๋ณ‘ํ•ฉ)
  • [x] System.Security.SecureString (์™„๋ฃŒ, PR dotnet/corefx#2039 ๋ณ‘ํ•ฉ)
  • [x] System.Runtime.Environment (dotnet/corefx#1999์— ์˜ํ•ด ์ฐจ๋‹จ๋จ)
  • [x] 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 ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ์ทจ์†Œ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@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 ๋ฒ„์ „์€ ๋ฌด์‹œํ•˜๋„๋ก ์„ค์ •๋œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/dotnet/corefx/blob/master/src/System.IO.FileSystem.DriveInfo/src/System/IO/DriveInfo.Linux.cs#L98 -L99

๋‹ค์Œ ํ•„ํ„ฐ๋ฅผ ๋„ฃ์œผ๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ถœ๋ ฅ ์ธก๋ฉด์—์„œ ์‹ค์ œ๋กœ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

    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 ์ฐธ์กฐ)์— ๋Œ€ํ•œ ์ตœ๊ทผ ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๋‹ค์Œ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ.์ง„๋‹จ.ํ”„๋กœ์„ธ์Šค
  • ์‹œ์Šคํ…œ.์ง„๋‹จ.ํ”„๋กœ์„ธ์Šค๋งค๋‹ˆ์ €
  • System.Diagnostics.ThreadInfo
  • System.IO.FileSystemWatcher
  • System.Net.SocketAddress _(์ข‹์•„์š”, ์ด๊ฒƒ์€ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค)_

๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ํ•œ ๊ด€๋ จ 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

์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

  • "common_function_for_posix_compliants"๋Š” ๊ณต์œ  Unix ๊ด€๋ฆฌ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๋…ผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๋ฐ๋œ 1:1 ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • "slightly_diverged_function"์€ ๊ณต์œ  Unix ๊ด€๋ฆฌ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๋…ผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ถ€ ๊ธฐ๋ณธ #ifdef๊ฐ€ ์žˆ๋Š” ๊ฑฐ์˜ 1:1 ๊ธฐ๋Šฅ์œผ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๋ฐ๋ฉ๋‹ˆ๋‹ค.
  • "painfully_diverged_watch_function"์€ ํ”Œ๋žซํผ๋ณ„ ๊ด€๋ฆฌ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๋…ผ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 1:1 ๊ธฐ๋Šฅ์œผ๋กœ ์‹œ๋ฐ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์ฐจ์ด์ ์€ "๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋ถ„๊ธฐ๋œ" ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ 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์ž…๋‹ˆ๋‹ค.

https://gist.githubusercontent.com/jasonwilliams200OK/b375ce52c7b0c90e24af/raw/c895d405a3044dd6acdb26ec49c4b0ced0c76d1a/corefx-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).

  • https://gist.github.com/jasonwilliams200OK/6efa7907e66275df2d24 (ํŠนํžˆ ๊ธฐ๋ณธ shim์„ ๋ณ„๋„๋กœ ๋นŒ๋“œํ•˜๋Š” ๋‹จ๊ณ„ _after_ ์ƒํƒœ 1๋กœ build.sh ์ข…๋ฃŒ) ํ›„ CoreCLR ์•„ํ‹ฐํŒฉํŠธ zip: 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. FreeBSD๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” CoreCLR ๋ฐ CoreFX ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ƒ์„ฑ - ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

    • ๋ณ‘๋ ฌํ™”ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. @wfurt ๊ฐ€ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • ๋นŒ๋“œ๋Š” FreeBSD๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ(Mac, Linux)์˜ ๋นŒ๋“œ๋ฅผ ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • FreeBSD ๊ด€๋ จ ๋ฒ„๊ทธ ์ˆ˜์ •์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด ๋ฌธ์„œํ™”๋œ ๋‹จ๊ณ„(FreeBSD wiki์—์„œ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  2. CoreCLR ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐ ์•ˆ์ •ํ™”(corerun ์‚ฌ์šฉ)

    • ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๊ตฌ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋ชฉํ‘œ: ๋Ÿฐํƒ€์ž„์˜ ๊ธฐ๋ณธ ํ’ˆ์งˆ ์ œ๊ณต

  3. CoreFX ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋ฐ ์•ˆ์ •ํ™”(corerun ์‚ฌ์šฉ)

    • ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๊ตฌ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์—ฌ๊ธฐ์—๋Š” xunit์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณผ๊ฑฐ ํฌํŒ… ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ [2]๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด xunit์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ์ด๋ก ์ ์œผ๋กœ [2]์™€ ๋ณ‘๋ ฌํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. xunit ๋ฐ”๋กœ ๊ฐ€๊ธฐ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์ •์  ์‹คํ–‰ ๋ ˆ์‹œํ”ผ ์ƒ์„ฑ)

  4. FreeBSD์—์„œ ์ „์ฒด ์Šคํƒ ๋นŒ๋“œ([1]-[3]์˜ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํผ๋กœ corerun ์‚ฌ์šฉ)

    • .NET Core๋ฅผ ๋ถ€์ŠคํŠธ๋ž˜ํ•‘ํ•˜๋ ค๋ฉด ๋ชจ๋“  ๋„๊ตฌ(nuget, msbuild, roslyn)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  5. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ(FreeBSD ํฌํŠธ)

    • 1๋‹จ๊ณ„: ๋„ˆ๊ฒŸ ํ”ผ๋“œ์˜ ์ œํ’ˆ ๋ฐ”์ด๋„ˆ๋ฆฌ ์‚ฌ์šฉ

    • 2๋‹จ๊ณ„: ์†Œ์Šค์—์„œ ์ œํ’ˆ ๋นŒ๋“œ(์†Œ์Šค์—์„œ ๋นŒ๋“œ ์ž‘์—…์—์„œ ์ฐจ๋‹จ๋จ)

    • FreeBSD ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „๋ฌธ ์ง€์‹๊ณผ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฐธ๊ณ : ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ํŒจํ‚ค์ง€๋กœ ๊ณต์‹ .NET Core ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ๋„ FreeBSD ํŒจํ‚ค์ง€๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. FreeBSD์—์„œ ์ •๊ธฐ์ ์ธ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰

    • ๋ชฉํ‘œ: FreeBSD๋ฅผ ๊นจ๋Š” .NET Core ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ๊ธฐ์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ํ•„์š”ํ•œ ๋””์ž์ธ

    • FreeBSD ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „๋ฌธ ์ง€์‹๊ณผ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ์›๋ฆฌ:

  • [2]-[4]์˜ ๋ณ€๊ฒฝ์€ ์ฃผ๋กœ CoreCLR/CoreFX ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(CLA ์„œ๋ช… ์š”๊ตฌ ์‚ฌํ•ญ, .NET Core ํŒ€ ์ „๋ฌธ๊ฐ€/๊ตฌ์„ฑ์›์˜ ์ฝ”๋“œ ๊ฒ€ํ†  ๋“ฑ์œผ๋กœ ์ธํ•ด).
  • ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋†’์€ ์ˆ˜์ค€์˜ ์ž‘์—…์„ ์ถ”์ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„๊ทธ๋Š” ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์—์„œ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. [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์˜ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฐœ์ธ ์ •๋ณด ์„ค์ •?

https://github.com/mprevot

๊ฑด๋ฐฐ,

๋Ÿฌ์Šค

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://github.com/dotnet/coreclr/issues/1419

ํŒจ์น˜๋Š” ์—ฌ๊ธฐ: 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: \&quot;\&quot;)
System.Net.NameResolution.Tests.GetHostEntryTest.Dns_GetHostEntryAsync_HostString_Ok(hostName: \&quot;\&quot;)
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').
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰