Package.swift 에서 암시적으로 지정된 소스 파일의 경로가 실제 소스 파일의 경로와 일치하지 않음

Package.swift 에서 암시적으로 지정된 소스 파일은 Sources 디렉토리 아래에 있어야 합니다.
하지만 실제 소스 파일은 sources 디렉토리 아래에 존재하여 Swift Package Manager 가 kakao-ios-sdk 와 관련된 패키지 그래프를 업데이트하지 못하고 있습니다.

이는 파일 시스템에서 대소문자를 구분하기 때문에 발생하는 것으로 추측되고, 따라서 대소문자 구분 HFS+ 및 대소문자 구분 APFS를 사용 중일 경우 kakao-ios-sdk 패키지를 사용할 수 없습니다.

이 문제를 해결하려면 sources 디렉토리의 이름을 Sources 로 변경해야 합니다.

안녕하세요.

Package.swift 에 경로를 명시하고 있습니다.
말씀하신 이슈가 APFS 볼륨에서 재현되지 않는데요 사용하시는 파일 시스템에 대해 좀더 알려주시겠어요?

말씀하신 이슈가 APFS 볼륨에서 재현되지 않는데요 사용하시는 파일 시스템에 대해 좀더 알려주시겠어요?

해당 문제는 상기했다시피 대소문자 구분 HFS+대소문자 구분 APFS를 사용 중일 경우 발생합니다.

1개의 좋아요

프로젝트가 소스코드가 위치한 파일 시스템 포멧이 HFS+(대소문자구분) 인가요? 아니면 APFS(대소문자구분) 인가요?

해당 이슈의 해결을 위해 sources 경로를 변경하여 제공할지는 확인 및 검토에 다소 시간이 소요될것 같습니다.
이 부분은 명확한 답변을 드리기 어려워 양해 부탁드리며 그동안은 일반적인 APFS 볼륨 내에서 개발 진행 부탁드립니다.

프로젝트가 소스코드가 위치한 파일 시스템 포멧이 HFS+(대소문자구분) 인가요? 아니면 APFS(대소문자구분) 인가요?

이 사실이 두 번씩이나 확인해야 할 정도로 중요한지 정말로 모르겠습니다만, APFS(대소문자구분) 입니다. 하지만 이 문제는 HFS+(대소문자구분) 에서도 발생할 것입니다.

해당 이슈의 해결을 위해 sources 경로를 변경하여 제공할지는 확인 및 검토에 다소 시간이 소요될것 같습니다.

어째서 디렉토리 이름을 변경할 뿐인 작업에 시간이 소요되어야 하는지 모르겠습니다.

해당 문제는 kakao-ios-sdk 패키지의 Package.swift 가 Swift Package Manager 의 PackageDescription 표준을 따르지 않아 발생한 문제로, 대소문자를 구분하지 않는 환경에서 정상 작동하는 것이 오히려 잘못된 동작인 상황입니다.

첨언하자면, 공식 문서에서는 기본 경로에 대해 아래와 같이 서술하고 있습니다.

By default, the Swift Package Manager requires a target's sources to reside at predefined search paths;
for example, `[PackageRoot]/Sources/[TargetName]`.
Don't escape the package root; for example, values like `../Foo` or `/Foo` are invalid.

부디 조속한 처리 부탁드립니다.

1개의 좋아요

안녕하세요.

kakao sdk는 cocoapod으로만 배포를 시작했습니다.
해당 path(=sources)는 원래 cocoapods 전용의 압축파일내 path로 사용하였던것을 SPM 지원시점 (2.8.5)부터 git repo로 그대로 옮긴것입니다.
리포트 하신 부분 확인하였으며 팀 내부 개발일정에 따라 수정 반영될 예정입니다.

대부분의 맥개발자가 잘사용하지 않는 “대소문자구분 APFS 사용” 엣지케이스로 판단되며
수정 배포시까지 cocoapod 설치를 추천 드립니다.

p.s.
사용자의 개발기기가 대소문자구분 APFS 파일시스템을 사용시 "S"ources가 아닌 path 사용에 대한 경고나
그것이 표준이라는 문구는 애플문서 그 어디에도 확인할 수 없습니다.
오히려 대부분의 개발자들이 대소문자 구분을 하지 않는 파일시스템을 사용하는데 그렇지 않은 사용자에게 혼란을 줄수있는 여지를 해당 스펙이 가지고 있는것이 문제라고 보여집니다.
(애플이 대소문자를 구분, 구분하지 않는 파일시스템을 선택가능하게 제공하고 있으니 당연히 관련 스펙에는 대소문자 체크를 하지 않아야 정상이겠죠?)

@lucas.arts 님 안녕하세요.

Swift Package Manager 코드를 직접 봤을때, "Sources", "Source", "src", "srcs" 순으로 참조하고 있습니다.
여기서 봤을때 Apple에서도 Case-Sensitive한 환경에서 사용할 것을 고려하고, 저렇게 찾는 것으로 보고 있습니다.

특히, Swift Package Manager의 경우 Apple Platform의 Case-Sensitive FS만이 아닌 Linux 등의 환경에서도 사용 가능해 Case-Sensitive를 존중해야만하는 상황입니다.

개발일정에 따라 바쁘거나 사용자가 소수라 Priority가 밀리는 점은 이해하지만,

사용자의 개발기기가 대소문자구분 APFS 파일시스템을 사용시 "S"ources가 아닌 path 사용에 대한 경고나
그것이 표준이라는 문구는 애플문서 그 어디에도 확인할 수 없습니다.
오히려 대부분의 개발자들이 대소문자 구분을 하지 않는 파일시스템을 사용하는데 그렇지 않은 사용자에게 혼란을 줄수있는 여지를 해당 스펙이 가지고 있는것이 문제라고 보여집니다.
(애플이 대소문자를 구분, 구분하지 않는 파일시스템을 선택가능하게 제공하고 있으니 당연히 관련 스펙에는 대소문자 체크를 하지 않아야 정상이겠죠?)

는 잘못된 사실인 것 같습니다.

특히, 누군가는 해당 문제로 OS를 아에 재설치까지 해야하는 문제가 발생한다는건 단순한 문제로 치부하기는 어려울 것 같습니다.

1개의 좋아요

@j.kang 님 안녕하세요?
개발일정중에 우선순위 높혀서 진행중 입니다.
해당 리포가 SPM만 사용하는것이 아니기 때문에 배포가 늦어지는점 양해바라며 위에 배경설명을 짧게 드렸습니다.

p.s.

애플이 Non Case-Sensitive 환경을 디폴트로 제공하므로 Case-Sensitive만 염두에 두고 설계했다는것은 큰 모순입니다.
따라서,
Case-Sensitive, Non Case-Sensitive 환경에서 사용할걸 고려한다면 “sources”, “source” 디렉토리도 순차적으로 찾아야 하는것이라 생각되며 그래서 말씀하신 가정은 잘못된 사실같습니다.

그리고, 죄송하게도 kakao ios sdk는 리눅스 개발을 지원하지 않습니다.
참고) https://developers.kakao.com/docs/latest/ko/getting-started/sdk-ios#requirement

그리고, 리포트 하신분의 글이 다소 거칠어서 해당사실을 개발자가 잘 인지하지 못하게 "애플이 원인제공을 한것"에 대해서 얘기를 한것인데 어떤 부분이 잘못된 사실이라는 것인지요?