애플 실리콘용 KDE Connect 빌드하기

moseoridev·2023년 4월 13일
0

Ecosystem?

Android 스마트폰(Galaxy S23)과 MacBook Air라는 변태같은 기기 조합을 사용중인 필자는 어떤 생태계의 이점도 볼 수 없는 상황이다. Ecosystem은 커녕 간단한 파일 하나 넘기기도 벅차니 말이다. 불평해서 뭐하겠는가. 내가 길을 찾아야지.

이러한 상황을 위해 KDE에서 개발한 연동성 앱이 존재한다. 이름하야 KDE Connect. 다만 태생이 KDE용 앱인만큼 macOS는 nightly build로만, 그마저도 x86_64 바이너리만 제공할 뿐이다. 필자는 Rosetta 2 알레르기가 있어서 선택할 수 없는 옵션이었다. 인터넷 어딘가에는 답이 있을거라며 해맨지 몇 시간, 사막의 오아시스와 같은 reddit 포스트를 찾았다.

좋아, 이대로만 해보자!.. 일리가 없지. 물론 시행착오를 거듭했고 내 삽질을 모두를 위해 기록해둔다.

기본 설정

먼저 내 환경은 M1 MacBook Air, macOS 13.4 Beta 1이다. 공식 가이드에서는 brew로 curl을 설치하라고 한다.

brew install curl
curl https://raw.githubusercontent.com/KDE/craft/master/setup/CraftBootstrap.py -o setup.py && python3 setup.py --prefix ~/CraftRoot

아직까지는 간단하다.

빌드

이제 빌드를 해주면 된다.

source ~/CraftRoot/craft/craftenv.sh
craft kde/applications/kdeconnect-kde

파일 수정

이 설정을 해야하는 이유는 모르겠지만 아무튼 해주자. ~/CraftRoot/etc/blueprints/locations/craft-blueprints-kde/libs/libfftw/libfftw.py를 수정하면 된다. 35번째 줄에

elif CraftCore.compiler.architecture & CraftCompiler.Architecture.arm64:
            pass

를 추가해주면 된다. 사실 이 코드가 동작을 하고 있는건지도 잘 모르겠다.

그 다음은 ~/CraftRoot/craft/bin/Utils/CodeSign.py 차례이다. 3개의 --sign 부분을 찾아 아래의 f"Developer ID Application: {devID}"를 주석처리 하고 "--sign"을 "--sign -"으로 바꿔주자. Adhoc sign 옵션이라는데.. 이것도 동작은 안하는 것 같다. 이후에 더 알아보자.

패키징

거의 마무리 단계이다.

craft --package kde/applications/kdeconnect-kde

이것을 완료하면 ~/CraftRoot/tmp 경로에 dmg 파일이 생긴다. 열어서 설치해주자. 아직 실행은 안된다.

내용이 다음과 같은 ~/tmp/entitlements.plist 파일을 생성한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
        <key>com.apple.security.get-task-allow</key>
        <true/>
</dict>
</plist>

이후 이 명령어를 입력해준다.

find /Applications/kdeconnect-indicator.app/Contents/MacOS -type f -perm +111 -exec codesign -fs - --options runtime --entitlements ~/tmp/entitlements.plist {} \;
codesign --force --deep -s - /Applications/kdeconnect-indicator.app

이게 전부이다. 사실 빌드 시간이 오래 걸릴 뿐, 상당히 간단한 일인 것 같다.


저 영롱히 빛나는 Apple silicon을 보라.

Todo

업데이트를 간편하게 하는 방법을 찾고 싶다. 하지만 딱봐도 불가능해 보인다. 매번 업데이트마다 이 짓을 해야한다고..?

profile
코딩하는 학생

0개의 댓글