Бедолаги фришники не могут портировать launchd из своей дочки, OS X, про какой systemd может идти речь? Они там только пару лет назад убрали RH-специфичные вещи, т.е. оно даже на других дистрах Linux не работало. На столько всё запущено.
Ты или тролль или невежда. Ненужнод умышленно прибит гвоздями к лялиху. Ни на одной другой платформе запустить его не представляется возможным. Что, в прочем, есть хорошо.
Если ты прочтёшь содержимое патча, то поймёшь, что там речь о конфигурации сборочной системы и прописывании разных путей. Что и понятно: в начале существования systemd дистрибутивы были устроены кто во что горазд. Сейчас — в сильно меньшей степени. Благодаря systemd.
Так что тон вида «посмотрите на этих ушлёпков, они не могут даже писать обобщённо от конкретного дистрибутива» совершенно неуместен.
+case $with_distro in
+ fedora)
+ SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
+ SYSTEM_SYSVRCND_PATH=/etc/rc.d
+ ;;
+ suse)
+ SYSTEM_SYSVINIT_PATH=/etc/init.d
+ SYSTEM_SYSVRCND_PATH=/etc/init.d
+ ;;
+ debian)
+ SYSTEM_SYSVINIT_PATH=/etc/init.d
+ SYSTEM_SYSVRCND_PATH=/etc
+ ;;
+ none)
+ SYSTEM_SYSVINIT_PATH=/etc/fix/the/configure/script
+ SYSTEM_SYSVRCND_PATH=/etc/fix/the/configure/script
+ ;;
+ *)
+ AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, SysV init scripts could not be found! (patches welcome); you can specify --with-distro=none to skip this check])
+ ;;
+esac
Нормальные программы можно собрать и запустить на системах, о которых авторы даже и не слышали никогда. А это говно жёстко прописывало поддерживаемые дистры?
Или вот в этом коммите Лёня просит патчить код на C, даже не сборочный скрипт? для определения дистра.
commit eb10a76494542fb560efd09c16b40826fc37bc5f
Author: Lennart Poettering <lennart@poettering.net>
Date: Mon May 17 01:39:51 2010 +0200
docs: add terse distribution porting guide
diff --git a/DISTRO_PORTING b/DISTRO_PORTING
new file mode 100644
index 0000000..4190538
--- /dev/null
+++ b/DISTRO_PORTING
@@ -0,0 +1,36 @@
+Porting systemd To New Distributions
+
+ You need to make the follow changes to adapt systemd to your
+ distribution:
+
+ 0) Make your distribution recognized via the autoconf checks
+ in configure.ac. Grep for the word "fedora" (case
+ insensitively) and you should be able to find the places where
+ you need to add/change things.
+
+ 1) Patch src/hostname-setup.c so that systemd knows where to
+ read your host name from.
+
+ 2) Check the unit files in units/ if they match your
+ distribution. Most likely you will have to make additions to
+ units/*.m4 and create a copy of units/fedora/ with changes for
+ your distribution.
+
+ 3) Adjust Makefile.am to register the unit files you added in
+ step 2. Also you might need to update the m4 invocation in
+ Makefile.am. Grep for the word "fedora" (case insensitively)
+ and you should be able to find the places where you need to
+ add/change things.
+
+ 4) Try it out.
+
Ответь на вопрос: оно собиралось на $vasya_pupkin distro из коробки?
Нет, конечно. И не должно было. Самому-то не смешно?
case $with_distro in
Нормальные программы можно собрать и запустить на системах, о которых авторы даже и не слышали никогда.
Тебе знакомо такое понятие, как автодетект распространённых частных случаев? Для всего остального ./configure.sh --with-sysvinit-path --with-sysvrcnd-path в помощь.
Или вот в этом коммите Лёня просит патчить код на C, даже не сборочный скрипт? для определения дистра.
Date: Mon May 17 01:39:51 2010 +0200
Ты бы ещё самый первый коммит взял и спросил, почему оно не варит тебе кофе. Учись троллить тоньше.
Система инициализации очень сильно лезет в потроха системы в отличии от текстового редактора или браузера. А в дистрибутивах до недавнего времени был полный зоопарк в плане систем инициализации и хранения некоторых конфигов. Так что без обработки частных случаев задача в принципе не решалась.
Ты ещё возмутись, что драйвера для оборудования имеют разные сборочные скрипты (а как правило вообще разный код) для разных ОС.
И что? Вплоть до 2013 года они тащили поддержку дистроспецифичного легаси, которое (внезапно) не описывается декларативно. Потом решили убрать и оставить только унифицированную схему, которую толкали в массы с самого начала.
Поведай же нам, Иван, когда оно научилось cross-platform в рамках Linux, больше 2х лет назад? Я так понимаю, ПОСЛЕ того как все ввели то, что просил Ленни Поттер? Ну это же красная шапка, она даже Демьяна с Марком нагнула, один Патрик ещё держится, хотя всем плевать на него. Ну и в Gentoo по-умолчанию OpenRC, но systemd ставится в 2 команды, но это у них фича такая, гибкость. Ну и Amazon AMI до следующего Ubuntu LTS.
Давай посмотрим. Впервые systemd появился в Fedora 15 (чей релиз случился в 2011-05-24 и имел там версию 26 (чей релиз состоялся в 2011-04-30).
В арче systemd появился (в extra) в 2012-01-12 на версии 38 и был перемещён в core через полгода (2012-06-01) на версии 184 (т. е. уже после слияния с udev).
В дебиане (надо полагать, самый нетривиальный порт) systemd появился в experimental с самого начала (2010-05-30), в unstable с версии 29 в 2011-06-08 и, наконец, принял окончательную версию 44 (которая так и осталась в wheezy) в 2012-05-03. Вот тебе чейнджлог.
Так что да, оно научилось в кросс-платформу сильно больше двух лет назад. Предвосхищая контраргумент насчёт «так его наверняка пропатчили с ног до головы» — так нет, арчовские PKGBUILD'ы вполне себе чисты и аккуратны, дебиановские исходники вроде тоже.
При этом пресловутое --with-distro никуда не делось, но на версии 44 этот флаг отвечал ровно за две вещи: автоуказание путей до легаси-инитскриптов и выбор в коде специальных дистроспецифичных имён целей и ранлевелов, опять же, внутри слоя совместимости с легаси. Т. е. как я и говорил — все дистроспецифичные куски кода, насчёт которых ты негодовал, на указанный момент относились исключительно к обеспечению совместимости с дистроспецифичными же скриптами, которые каждый дистрибутив лепил кто во что горазд. А это камень в огород sysvinit, не systemd.