Я совершенно не понимаю, как правильно упаковать мое приложение на основе python3.
Мое приложение использует Makefile для установки файлов в нужные места, например.
/usr/lib/rhythmbox/plugins/foo/myfoo.plugin
/usr/lib/rhythmbox/plugins/foo/myfoo/po/translation.mo
/usr/lib/rhythmbox/plugins/foo/myfoo_module.py
/usr/lib/rhythmbox/plugins/foo/myfoo_module2.py
Я не использую установку типа python distutils setup.py - просто простой метод, основанный на sudo make install
.
Когда я пытаюсь упаковать Debian, мои правила очень просты:
#!/usr/bin/make -f %: dh $@ --parallel --with autoreconf,python3 override_dh_autoreconf: dh_autoreconf -- ./autogen.sh override_dh_auto_configure: dh_auto_configure -- --libdir="\$${exec_prefix}/lib"
Мой файл debian / control "зависит от сборки" снова прост:
Build-Depends: debhelper (>= 9), dh-autoreconf, dh-python (>= 1.20130903), gir1.2-glib-2.0, gir1.2-gstreamer-1.0, gir1.2-gtk-3.0, gir1.2-peas-1.0, gir1.2-rb-3.0, gobject-introspection (>= 0.10.0), intltool (>= 0.35.0), libglib2.0-dev, python3
Это прекрасно работает - я могу запустить debuild -us -uc
, и он создаст мой .deb, и когда я установлю через sudo dpkg -i myfoo-0.1_all.deb
, все будет установлено в правильные места для файлов.
За исключением одной мелочи - каждый модуль python должен быть скомпилирован побайтно, чтобы при установке была вложенная папка /usr/lib/rhythbox/plugins/foo/__pycache__
, содержащая myfoo_module.pyc
и myfoo_module2.pyc
Теперь я знаю, что не могу выполнить байтовую компиляцию в процессе сборки - правила Debian запрещают иметь .deb с модулями, скомпилированными в байтах. Так что как-то мне нужно, чтобы debhelper работал на меня.
Глядя на руководство по упаковке Debian, они упоминают такие вещи, как cdbs, distutils и т. Д. - любые примеры debhelper всегда используют синтаксис как:
override_dh_auto_install: dh_auto_install python setup.py install --root=$(CURDIR)/debian/$(DEB_SOURCE) --install-layout=deb)
... но я не использую distutils setup.py для установки своего приложения.
Так что я, должно быть, упускаю что-то довольно очевидное - какие-нибудь мысли?