На момент написания, есть открытый запрос на извлечение для добавления llvm6 в порты. Поскольку включает в себя множество патчей и настроек, кажется, что сборку из исходного кода на Alpine не так просто понять.
Итак, у нас есть все основания полагать, что скоро будет официальный пакет llvm6 , но пока он не появится, вы можете использовать APKBUILD из этого пиара для самостоятельного создания llvm из исходного кода.
Установочные зависимости
abuild - это утилита, которую Alpine использует для компиляции своих пакетов.
apk add alpine-sdk
abuild автоматически установит большинство зависимостей, которые вам нужны, но diffutils
отсутствует в списке зависимостей в PR.
apk add diffutils
Перестань быть root
abuild отказывается работать как root , поэтому, если вы этого еще не сделали, создайте учетную запись пользователя. Я использую имя пользователя apk :
adduser apk
adduser apk abuild
su - apk
abuild-keygen -a
Клонируем PR и компилируем
git clone --depth=1 -b pr-llvm-6 https://github.com/xentec/aports
cd aports/main/llvm6
abuild -r
* * * * * * * * * * * * * * * * * * * 1048 'действительно займет очень много времени, поэтому, если вы следуете за ним, сейчас самое время взять обеденный перерыв.
Установить полученный пакет
Если все прошло успешно, abuild поместит кучу файлов .apk в $ HOME / packages / main. Предположим еще раз, что учетная запись пользователя называется apk , а ее домашняя папка - / home / apk , а затем как root
cp /home/apk/.abuild/*.rsa.pub /etc/apk/keys
apk add /home/apk/packages/main/$(uname -m)/*.apk
С благодарностью и благодарностью автору PR: https://github.com/xentec
РЕДАКТИРОВАТЬ: Фрагмент Dockerfile
Поскольку в вашем вопросе упоминается Docker, вот команда RUN
, которую вы можете вставить:
# Temporary workaround for there not being an llvm6 apk yet
# Open PR for llvm6 package: https://github.com/alpinelinux/aports/pull/3583
# See /10702550/sborka-llvm-6-pod-linux-alpine
RUN export BUILD_DEPS='alpine-sdk git diffutils' \
&& apk update \
&& apk add $BUILD_DEPS \
&& adduser -D apk \
&& adduser apk abuild \
&& sudo -iu apk abuild-keygen -a \
&& sudo -iu apk git clone --depth=1 -b pr-llvm-6 https://github.com/xentec/aports \
&& sudo -iu apk sh -xec 'cd aports/main/llvm6; abuild -r' \
&& cp /home/apk/.abuild/*.rsa.pub /etc/apk/keys \
&& apk add /home/apk/packages/main/$(uname -m)/*.apk \
&& deluser --remove-home apk \
&& rm -rf /var/cache/apk/APKINDEX* \
&& apk del --no-cache $BUILD_DEPS