Для сборки deb-пакета Wirec я использую вызов LibreOffice внутри Makefile, чтобы конвертировать картинку из ODG в SVG. При запуске локально все работало, однако при попытке собрать deb-пакет на Launchpad, то есть при сборке в chroot, возникла ошибка:
libreoffice --convert-to svg --outdir /<>/debian/wirec///usr/share/icons desktop/wirec.odg javaldx failed! Warning: failed to read path from javaldx
После исправления Makefile был таким:
# PREFIX = / TMPHOME=/tmp/wirec-build all: @ echo "Nothing to compile. Use: make install, make uninstall" install: install -d $(DESTDIR)/$(PREFIX)/usr/bin install -d $(DESTDIR)/$(PREFIX)/usr/share/wirec install -d $(DESTDIR)/$(PREFIX)/usr/share/icons install -d $(DESTDIR)/$(PREFIX)/usr/share/applications install -m0755 ./wirec.sh $(DESTDIR)/$(PREFIX)/usr/bin/wirec install -m0644 ./profile.tpl.sh $(DESTDIR)/$(PREFIX)/usr/share/wirec/profile.tpl.sh install -m0644 ./desktop/wirec.desktop $(DESTDIR)/$(PREFIX)/usr/share/applications/wirec.desktop pkill libreoffice || true pkill -9 libreoffice || true pkill soffice || true pkill -9 soffice || true mkdir -p $(TMPHOME) env HOME=$(TMPHOME) libreoffice --headless --convert-to svg --outdir $(DESTDIR)/$(PREFIX)/usr/share/icons desktop/wirec.odg uninstall: rm -fv $(PREFIX)/usr/bin/wirec rm -fv $(PREFIX)/usr/share/icons/wirec.svg rm -fv $(PREFIX)/usr/share/applications/wirec.desktop rm -fvr $(PREFIX)/usr/share/wirec/
Что я туда добавил?
* Задаем пустую домашнюю директорию: TMPHOME=/tmp/wirec-build
* Убиваем все запущенные копии LibreOffice (на всякий случай, это больше для локальной сборки, т.к. иначе возможно зависание до тех пор, пока существующая копия LibreOffice не будет закрыта, хотя в целом это излишне):
pkill libreoffice || true pkill -9 libreoffice || true pkill soffice || true pkill -9 soffice || true
* Создаем нашу пустую домашнюю папку: mkdir -p $(TMPHOME)
* Далее запускаем конвертирование с помощью LibreOffice, установив переменную окружения HOME на нашу пустую папку и задав ключ ---headless
:
env HOME=$(TMPHOME) libreoffice --headless --convert-to svg --outdir $(DESTDIR)/$(PREFIX)/usr/share/icons desktop/wirec.odg
Отправить ответ