[Kimchi-devel] [PATCH v2] Fix make install for systemd systems
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Jun 9 14:25:26 UTC 2015
On 05/06/2015 17:53, Ramon Medeiros wrote:
>
>
> On 06/05/2015 11:35 AM, Aline Manera wrote:
>>
>>
>> On 05/06/2015 11:32, Ramon Medeiros wrote:
>>>
>>>
>>> On 06/05/2015 09:55 AM, Aline Manera wrote:
>>>>
>>>>
>>>> On 03/06/2015 10:39, Ramon Medeiros wrote:
>>>>> Make install now will install firewalld and systemctl service. Also,
>>>>> it will create base file structure to run kimchi (what was being
>>>>> created
>>>>> at rpm spec).
>>>>>
>>>>> Changes:
>>>>>
>>>>> v2:
>>>>> Use macros to determine systemd directory
>>>>> Do not use root permissions on make install script (like rebooting
>>>>> systemctl)
>>>>> ---
>>>>> Makefile.am | 50
>>>>> +++++++++++++++++++++++++++----------------
>>>>> configure.ac | 9 ++++++++
>>>>> contrib/kimchi.spec.fedora.in | 16 --------------
>>>>> contrib/kimchi.spec.suse.in | 18 ----------------
>>>>> 4 files changed, 41 insertions(+), 52 deletions(-)
>>>>>
>>>>> diff --git a/Makefile.am b/Makefile.am
>>>>> index 91a0fa2..46b0b5b 100644
>>>>> --- a/Makefile.am
>>>>> +++ b/Makefile.am
>>>>> @@ -115,27 +115,41 @@ ChangeLog:
>>>>> fi
>>>>>
>>>>> install-data-local:
>>>>> - @if test -d /usr/lib/systemd/system/ ; then \
>>>>> - $(INSTALL_DATA) contrib/kimchid.service.fedora
>>>>> /usr/lib/systemd/system/kimchid.service; \
>>>>> - systemctl daemon-reload; \
>>>>> - elif test -d /etc/systemd/system; then \
>>>>> - $(INSTALL_DATA) contrib/kimchid.service.fedora
>>>>> /etc/systemd/system/kimchid.service; \
>>>>> - systemctl daemon-reload; \
>>>>> - else \
>>>>> - $(INSTALL_DATA) contrib/kimchid.sysvinit
>>>>> /etc/init.d/kimchid; \
>>>>> - chmod +x /etc/init.d/kimchid; \
>>>>> - fi
>>>>> + @if test -d $(systemdsystemunitdir) ; then \
>>>>> + mkdir -p $(DESTDIR)/$(systemdsystemunitdir); \
>>>>> + $(INSTALL_DATA) contrib/kimchid.service.fedora
>>>>> $(DESTDIR)/$(systemdsystemunitdir)/kimchid.service; \
>>>>> + else \
>>>>> + mkdir -p $(DESTDIR)/etc/init.d/ \
>>>>> + $(INSTALL_DATA) contrib/kimchid.sysvinit
>>>>> $(DESTDIR)/etc/init.d/kimchid; \
>>>>> + chmod +x $(DESTDIR)/etc/init.d/kimchid; \
>>>>> + fi; \
>>>>> + if test -d /usr/lib/firewalld/services/; then \
>>>>> + mkdir -p $(DESTDIR)/usr/lib/firewalld/services/; \
>>>>> + $(INSTALL_DATA) src/firewalld.xml
>>>>> $(DESTDIR)/usr/lib/firewalld/services/kimchid.xml; \
>>>>> + fi; \
>>>>
>>>>> + mkdir -p
>>>>> $(DESTDIR)/var/lib/kimchi/{debugreports,screenshots,vnc-tokens,isos}
>>>>> + touch $(DESTDIR)/var/lib/kimchi/objectstore
>>>>> + mkdir -p $(DESTDIR)/var/log/kimchi/
>>>>> + touch $(DESTDIR)/var/log/kimchi/kimchi-access.log
>>>>> + touch $(DESTDIR)/var/log/kimchi/kimchi-error.log
>>>>> + mkdir -p $(DESTDIR)/etc/kimchi/
>>>>> + touch $(DESTDIR)/etc/nginx/conf.d/kimchi.conf
>>>>
>>>> You don't need to create the above directories/files as they will
>>>> be created on demand on server start up.
>>> which files you are saying? These files are not created on startup:
>>> mkdir -p
>>> $(DESTDIR)/var/lib/kimchi/{debugreports,screenshots,vnc-tokens,isos}
>>> touch $(DESTDIR)/var/lib/kimchi/objectstore
>>> mkdir -p $(DESTDIR)/var/log/kimchi/
>>>
>>>
>>
>> Yes, there are. Otherwise, the user would not be able to start the
>> server from a "make install" installation.
>>
> Just tested it and kimchi is creating them. So, we are not going to
> create it on make install, but, when creating for rpm, we will create
> this structure on spec file, like it was before?
Yes.
>>>
>>>>
>>>>> uninstall-local:
>>>>> - @if test -f /usr/lib/systemd/system/kimchid.service; then \
>>>>> - $(RM) /usr/lib/systemd/system/kimchid.service; \
>>>>> - systemctl daemon-reload; \
>>>>> - elif test -f /etc/systemd/system/kimchid.service; then \
>>>>> - $(RM) /etc/systemd/system/kimchid.service; \
>>>>> + @if test -f $(systemdsystemunitdir)/kimchid.service; then \
>>>>> + $(RM) $(DESTDIR)/$(systemdsystemunitdir)/kimchid.service; \
>>>>> elif test -f /etc/init.d/kimchid; then \
>>>>> - $(RM) /etc/init.d/kimchid; \
>>>>> - fi
>>>>> -
>>>>> + $(RM) $(DESTDIR)/etc/init.d/kimchid; \
>>>>> + $(RM) $(DESTDIR)/etc/init/kimchi.conf; \
>>>>> + fi; \
>>>>> + if test -d /usr/lib/firewalld/services/; then \
>>>>> + $(RM) $(DESTDIR)/usr/lib/firewalld/services/kimchid.xml; \
>>>>> + fi; \
>>>>> + $(RM) -rf $(DESTDIR)/var/lib/kimchi
>>>>> + $(RM) -rf $(DESTDIR)/var/log/kimchi
>>>>> + $(RM) -rf $(DESTDIR)/etc/kimchi
>>>>> + $(RM) $(DESTDIR)/etc/nginx/conf.d/kimchi.conf
>>>>> +
>>>>> VERSION:
>>>>> @if test -d .git; then \
>>>>> git describe --abbrev=0 > $@; \
>>>>> diff --git a/configure.ac b/configure.ac
>>>>> index f5091b8..0261b5f 100644
>>>>> --- a/configure.ac
>>>>> +++ b/configure.ac
>>>>> @@ -64,6 +64,15 @@ else
>>>>> AC_SUBST([ENABLE_SAMPLE], [False])
>>>>> fi
>>>>
>>>>> +# check for systemd
>>>>> +PKG_PROG_PKG_CONFIG
>>>>> +AC_ARG_WITH([systemdsystemunitdir],
>>>>> + AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory
>>>>> for systemd service files]),
>>>>> + [], [with_systemdsystemunitdir=$($PKG_CONFIG
>>>>> --variable=systemdsystemunitdir systemd)])
>>>>> +if test "x$with_systemdsystemunitdir" != xno; then
>>>>> + AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
>>>>> +fi
>>>>> +
>>>>
>>>> So the user will need to pass that information during the build?
>>>> Don't we have other way to discover it automatically?
>>> No, the user will not need to pass it. Please, try to use it in your
>>> system. After running ./autogen --system, you will see the variable
>>> systemdsystemunitdir at Makefile
>>
>> OK. I'll try it.
>>
>>>>
>>>>> AC_ARG_WITH(
>>>>> [spice-html5],
>>>>> [AS_HELP_STRING([--with-spice-html5],
>>>>> diff --git a/contrib/kimchi.spec.fedora.in
>>>>> b/contrib/kimchi.spec.fedora.in
>>>>> index 30f8417..dc5533a 100644
>>>>> --- a/contrib/kimchi.spec.fedora.in
>>>>> +++ b/contrib/kimchi.spec.fedora.in
>>>>> @@ -85,22 +85,6 @@ make DESTDIR=%{buildroot} install
>>>>>
>>>>> %if 0%{?with_systemd}
>>>>>
>>>>> -# create /var/lib/kimchi structure
>>>>> -mkdir -p
>>>>> %{buildroot}/%{_sharedstatedir}/kimchi/{debugreports,screenshots,vnc-tokens,isos}
>>>>> -touch %{buildroot}/%{_sharedstatedir}/kimchi/objectstore
>>>>> -
>>>>> -# create /var/log/kimchi structure
>>>>> -mkdir -p %{buildroot}/%{_localstatedir}/log/kimchi/
>>>>> -touch %{buildroot}/%{_localstatedir}/log/kimchi/kimchi-access.log
>>>>> -touch %{buildroot}/%{_localstatedir}/log/kimchi/kimchi-error.log
>>>>> -
>>>>> -# create /etc/kimchi structure
>>>>> -mkdir -p %{buildroot}/%{_sysconfdir}/kimchi/
>>>>> -touch %{buildroot}/%{_sysconfdir}/nginx/conf.d/kimchi.conf
>>>>> -
>>>>> -# Install the systemd scripts
>>>>> -install -Dm 0644 contrib/kimchid.service.fedora
>>>>> %{buildroot}%{_unitdir}/kimchid.service
>>>>> -install -Dm 0640 src/firewalld.xml
>>>>> %{buildroot}%{_prefix}/lib/firewalld/services/kimchid.xml
>>>>> %endif
>>>>>
>>>>> %if 0%{?rhel} == 6
>>>>> diff --git a/contrib/kimchi.spec.suse.in
>>>>> b/contrib/kimchi.spec.suse.in
>>>>> index bf85661..5681a60 100644
>>>>> --- a/contrib/kimchi.spec.suse.in
>>>>> +++ b/contrib/kimchi.spec.suse.in
>>>>> @@ -54,24 +54,6 @@ make
>>>>> rm -rf %{buildroot}
>>>>> make DESTDIR=%{buildroot} install
>>>>>
>>>>> -# create /var/lib/kimchi structure
>>>>> -mkdir -p
>>>>> %{buildroot}/%{_var}/lib/kimchi/{debugreports,screenshots,vnc-tokens,isos}
>>>>> -touch %{buildroot}/%{_var}/lib/kimchi/objectstore
>>>>> -
>>>>> -# create /var/log/kimchi structure
>>>>> -mkdir -p %{buildroot}/%{_localstatedir}/log/kimchi/
>>>>> -touch %{buildroot}/%{_localstatedir}/log/kimchi/kimchi-access.log
>>>>> -touch %{buildroot}/%{_localstatedir}/log/kimchi/kimchi-error.log
>>>>> -
>>>>> -# create /etc/kimchi structure
>>>>> -mkdir -p %{buildroot}/%{_sysconfdir}/kimchi/
>>>>> -
>>>>> -# create nginx configuration
>>>>> -touch %{buildroot}/%{_sysconfdir}/nginx/conf.d/kimchi.conf
>>>>> -
>>>>> -# Install the SysV init scripts
>>>>> -install -Dm 0755 contrib/kimchid.sysvinit
>>>>> %{buildroot}%{_initrddir}/kimchid
>>>>> -
>>>>> %post
>>>>> chkconfig kimchid on
>>>>>
>>>>
>>>
>>
>
More information about the Kimchi-devel
mailing list