[Spice-devel] [PATCH spice-streaming-agent v3 1/5] Install udev rule

Uri Lublin uril at redhat.com
Thu May 31 22:55:10 UTC 2018


On 06/01/2018 12:12 AM, Frediano Ziglio wrote:
>>
>> On 05/23/2018 12:03 PM, Frediano Ziglio wrote:
>>> The udev rule is used to do some action when the device is added to the
>>> system. Current rule change the permission of the special file to allow to
>>> open it by any user.
>>> Some systems use /lib/udev while others use /usr/lib/udev.
>>> Allow to specify the full path to support both type of systems.
>>>
>>> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
>>> ---
>>>    Makefile.am                   |  4 ++++
>>>    configure.ac                  | 10 ++++++++++
>>>    spice-streaming-agent.spec.in |  4 +++-
>>>    3 files changed, 17 insertions(+), 1 deletion(-)
>>>
>>> Changes since v2:
>>> - use pkg-config to get default udev directory
>>
>> Hi,
>>
>> This fails make install and make distcheck (regular user can not
>> install files under /usr/lib/ ... ) .
>>
> 
> Looks like is expected, see
> https://stackoverflow.com/questions/26980634/can-i-install-a-systemd-file-during-distcheck-using-dc-install-base
> 
> 
> I had to add
> 
> diff --git a/Makefile.am b/Makefile.am
> index 32fdaff..a2da845 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -15,6 +15,8 @@ gdmautostart_DATA = $(builddir)/data/spice-streaming.desktop
>   pkgconfigdir = $(libdir)/pkgconfig
>   pkgconfig_DATA = spice-streaming-agent.pc
> 
> +AM_DISTCHECK_CONFIGURE_FLAGS = --with-udevrulesdir='$$(prefix)/$(UDEVRULESDIR)'
> +
>   udevrulesdir = $(UDEVRULESDIR)
>   udevrules_DATA = $(srcdir)/data/90-spice-guest-streaming.rules
> 
> 
> now is working.
> Looks like make distcheck uses the prefix instead of DESTDIR (used for instance
> by rpm to avoid these issues).
> I think in a normal usage "make install" should install udev rule requiring
> root permissions.

I prefer that the following will not fail as non-root user:
./configure --prefix=/tmp/mydir && make install
(also not that great when running as root).

Anyway, this patch now works on Fedora 28, but fails on RHEL-7.

On my RHEL-7, "autoreconf -fi" fails with:
configure.ac:58: error: possibly undefined macro: PKG_CHECK_VAR

Searching the internet I found this bug
https://bugzilla.redhat.com/show_bug.cgi?id=1084372

Uri.


> 
>> I changed this patch as follows (v4):
>> - do not install the udev rule (remove this part from Makefile.am)
>> - do not change configure.ac (no need for UDEVRULESDIR anymore)
>> - spec-file: do not change configure
>> - spec-file: copy (install) the udev-rule directly
>>
>> Uri.
>>
>> =====
>>
>>   From e5b7287fb7908e2d3ced19b229d61ca4540134f5 Mon Sep 17 00:00:00 2001
>> From: Frediano Ziglio <fziglio at redhat.com>
>> Date: Thu, 31 May 2018 22:19:59 +0300
>> Subject: [PATCH spice-streaming-agent v3 1/5] spec-file: add udev rule
>>
>> The udev rule is used to do some action when the device is added to the
>> system. Current rule changes the permission of the virtio serial port device
>> to allow opening it by any user.
>>
>> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
>> Signed-off-by: Uri Lublin <uril at redhat.com>
>> ---
>>    Makefile.am                   | 1 +
>>    spice-streaming-agent.spec.in | 5 +++++
>>    2 files changed, 6 insertions(+)
>>
>> diff --git a/Makefile.am b/Makefile.am
>> index 94ad7aa..291a883 100644
>> --- a/Makefile.am
>> +++ b/Makefile.am
>> @@ -18,5 +18,6 @@ pkgconfig_DATA = spice-streaming-agent.pc
>>    EXTRA_DIST = \
>>    	spice-streaming-agent.spec \
>>    	spice-streaming-agent.pc \
>> +	data/90-spice-guest-streaming.rules \
>>    	data/spice-streaming.desktop \
>>    	$(NULL)
>> diff --git a/spice-streaming-agent.spec.in b/spice-streaming-agent.spec.in
>> index 132a851..ec144f6 100644
>> --- a/spice-streaming-agent.spec.in
>> +++ b/spice-streaming-agent.spec.in
>> @@ -10,6 +10,7 @@ BuildRequires:  spice-protocol >= @SPICE_PROTOCOL_MIN_VER@
>>    BuildRequires:  libX11-devel libXfixes-devel
>>    BuildRequires:  libjpeg-turbo-devel
>>    BuildRequires:  catch-devel
>> +BuildRequires:  pkgconfig(udev)
>>    # we need /usr/sbin/semanage program which is available on different
>>    # packages depending on distribution
>>    Requires(post): /usr/sbin/semanage
>> @@ -43,6 +44,9 @@ if test -d "%{buildroot}/%{_libdir}/%{name}/plugins"; then
>>        find %{buildroot}/%{_libdir}/%{name}/plugins -name '*.la' -delete
>>    fi
>>
>> +mkdir -p %{buildroot}/%{_udevrulesdir}
>> +install data/90-spice-guest-streaming.rules %{buildroot}/%{_udevrulesdir}
>> +
>>    %post
>>    semanage fcontext -a -t xserver_exec_t
>> %{_bindir}/spice-streaming-agent 2>/dev/null || :
>>    restorecon %{_bindir}/spice-streaming-agent || :
>> @@ -55,6 +59,7 @@ fi
>>
>>    %files
>>    %doc COPYING ChangeLog README
>> +%{_udevrulesdir}/90-spice-guest-streaming.rules
>>    %{_bindir}/spice-streaming-agent
>>    %{_sysconfdir}/xdg/autostart/spice-streaming.desktop
>>    %{_datadir}/gdm/greeter/autostart/spice-streaming.desktop
> 
> Frediano
> 



More information about the Spice-devel mailing list