Bug 820544

Summary: Review Request: libguac-client-rdp - RDP support for guacd
Product: [Fedora] Fedora Reporter: Simone Caronni <negativo17>
Component: Package ReviewAssignee: Gwyn Ciesla <gwync>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: bugs.michael, gwync, mads, misc, notting, package-review, rc040203, terje.rosten
Target Milestone: ---Flags: gwync: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-16 14:19:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 820542    
Bug Blocks: 820561    

Description Simone Caronni 2012-05-10 11:00:36 UTC
Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-1.fc17.src.rpm
Description:
libguac-client-rdp is a plugin for guacd which provides support for RDP via the
librdpclient library

****** Note:

Part of the Guacamole package review

http://guac-dev.org/

Comment 1 Mads Kiilerich 2012-05-10 12:31:57 UTC
The freerdp API is immature and probably not very stable. I assume the build requirement must be versioned to something that prevent freerdp < 1.0. The next major version of freerdp will probably change a lot too, so I guess the requirement also should be < 1.1 somehow.

Comment 2 Simone Caronni 2012-05-10 12:57:23 UTC
Added the change, thanks.

Comment 3 Michael S. 2012-05-25 16:48:06 UTC
Let me take this review.

Comment 4 Michael S. 2012-05-25 16:52:17 UTC
Why is there the following :
BuildRequires:  libguac-devel%{?_isa} = %{version}
BuildRequires:  cairo-devel%{?_isa}, freerdp-devel%{?_isa} < 1.1


srpm are not rebuildable on x86_64 if built on 32 bits. I think that's to avoid.
( I would also place each BuildRequires on 1 line, as this permit easier patch review ).

Comment 5 Mads Kiilerich 2012-05-25 17:03:50 UTC
(In reply to comment #4)
> Why is there the following :
> BuildRequires:  libguac-devel%{?_isa} = %{version}
> BuildRequires:  cairo-devel%{?_isa}, freerdp-devel%{?_isa} < 1.1
> 
> srpm are not rebuildable on x86_64 if built on 32 bits. I think that's to
> avoid.

i686 devel packages can be installed on x86_64 machines but do obviously not provide what is needed to build x86_64 packages.

"Normal" users will obviously not see this ... but those who build packages are rarely normal. I prefer being explicit in the requirements - but you are making the official review so it is your call ;-)

Comment 6 Mads Kiilerich 2012-05-25 17:32:14 UTC
I hereby officially change my mind. While explicit requires makes the build more reliable it also put the build host architecture into the data used by yum-builddep which thus will fail on other architectures.

Comment 7 Gwyn Ciesla 2012-05-25 17:39:06 UTC
yum-builddep with rely on the arch on which it is run, not the arch on which the srpm was built.  Assuming identical package availability in yum, if I build srpm on one arch, and then yum-builddep it on another, everything will work as intended.  The arch-specific BRs are good.

Comment 8 Mads Kiilerich 2012-05-25 18:08:49 UTC
(In reply to comment #7)

Are you 100% sure? Obvioulsy _some_ macro expansion happens on srpm build time. I verified that rpm -q --requires on a srpm with isa buildrequires has foo-devel(x86-32). yum-builddep on that srpm on x86_64 pulls in the i686 package.

Comment 9 Michael S. 2012-05-25 19:01:34 UTC
Mock, and fedora-review, failed to build, but it seems to be due to missing libguac-devel. I will wait until it can be installed.

Comment 10 Ralf Corsepius 2012-05-26 04:17:54 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > Why is there the following :
> > BuildRequires:  libguac-devel%{?_isa} = %{version}
> > BuildRequires:  cairo-devel%{?_isa}, freerdp-devel%{?_isa} < 1.1

IMO, isas in these BR's are not useful and would recommend to remove them.

Comment 11 Simone Caronni 2012-05-28 12:03:04 UTC
(In reply to comment #9)
> Mock, and fedora-review, failed to build, but it seems to be due to missing
> libguac-devel. I will wait until it can be installed.

You can use the build from here:

http://koji.fedoraproject.org/koji/packageinfo?packageID=13907

I'm not pushing the library alone to the updates unless all the pieces of the stack have passed review.

Comment 12 Simone Caronni 2012-05-28 12:05:37 UTC
(In reply to comment #10)
> (In reply to comment #5)
> > (In reply to comment #4)
> > > Why is there the following :
> > > BuildRequires:  libguac-devel%{?_isa} = %{version}
> > > BuildRequires:  cairo-devel%{?_isa}, freerdp-devel%{?_isa} < 1.1
> 
> IMO, isas in these BR's are not useful and would recommend to remove them.

Depending on who's doing the review I got mixed results regarding the ISA'ed BRs. Some time is necessary to get the package approved, in some cases it's the opposite.

Since libguac has already been approved with ISA'ed BRs and there's no difference in building I would leave them in the spec file for uniformity with all the pieces of the stack.

Comment 13 Simone Caronni 2012-05-28 12:18:40 UTC
Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-2.fc17.src.rpm

Small spec file changes for conformity with libguac-client-vnc review.

Comment 14 Ralf Corsepius 2012-05-28 17:26:03 UTC
(In reply to comment #11)
> I'm not pushing the library alone to the updates unless all the pieces of
> the stack have passed review.

That's not how Fedora packaging works and not helpful.

Maybe your sponsor should have a serious talk with you.

Comment 15 Simone Caronni 2012-05-28 20:10:30 UTC
(In reply to comment #14)
> (In reply to comment #11)
> > I'm not pushing the library alone to the updates unless all the pieces of
> > the stack have passed review.
> 
> That's not how Fedora packaging works and not helpful.
> 
> Maybe your sponsor should have a serious talk with you.

It's funny, because depending on who I talk to I got completely opposing comments. When begging for reviews I've been said "hell no" until all the reviews for all the packages in the stack were in bugzilla.

If I push the library to the updates we'll have an orphaned library that nobody is using and if a later piece of the stack is blocked permanently for some reason the library is going to stay orphan.

If I remember correctly one the policies says that there should not be libraries in the distribution that nobody is using.

Anyway, if you need to run the build with the official updates and nobody is opposing I can push it to the repositories.

Comment 16 Simone Caronni 2012-05-28 20:19:23 UTC
I've checked the _isa debate:

- https://fedoraproject.org/wiki/Packaging:ReviewGuidelines

"MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name}%{?_isa} = %{version}-%{release} [21]"


- https://fedoraproject.org/wiki/PackagingDrafts/DraftsTodo

"Use %{_isa} to make hardcoded Requires Arch Specific"


Additional info:

- https://fedoraproject.org/wiki/PackagingDrafts/ArchSpecificRequires
- http://www.rpm.org/wiki/PackagerDocs/ArchDependencies

So I assume those are to be kept in the spec file.

Thanks,
--Simone

Comment 17 Michael S. 2012-05-28 20:33:17 UTC
I think I do not have the same understanding of the guideline as you do. That's not a Requires on base package, that's a BuildRequires. 

For the package, you are right that you should not add package that are not used, but the goal is to use the library once the reviews are finished, so this can be sent. Do not fear to push things, we can always remove if there is problem later.

Comment 18 Simone Caronni 2012-05-28 20:42:09 UTC
Ok, pushed to updates-testing. Should I request "stable" directly or is "updates-testing" enough?

Thanks,
--Simone

Comment 19 Simone Caronni 2012-05-28 20:47:30 UTC
Added more explicit files list as requested in other subpackage libguac-client-vnc (approved):

Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-3.fc17.src.rpm

Regards,
--Simone

Comment 20 Simone Caronni 2012-05-29 09:02:05 UTC
(In reply to comment #17)
> That's not a Requires on base package, that's a BuildRequires. 

Another note on _isa's:

The only difference I spot is when I build packages on x86_64 and have devel packages for i686 and x86_64 availables.

For example, I have installed libguac-devel.i686 and try to build libguac-client-rpd.x86_64 using rpmbuild. The dependency is satisfied, but the build fails as it should search for libguac-devel.x86_64.

From all the builds I've done (koji, rpmbuild, mock, 32 / 64 bit) where the arch is set at build time I see absolutely no difference in adding the _isa tag or not.

Comment 21 Mads Kiilerich 2012-05-29 09:15:44 UTC
(In reply to comment #20)
> The only difference I spot is when I build packages on x86_64 and have devel
> packages for i686 and x86_64 availables.

Yes, that is exactly the case where isa'ed BRs can save a lot of confusion and prevent incorrect builds.

> From all the builds I've done (koji, rpmbuild, mock, 32 / 64 bit) where the
> arch is set at build time I see absolutely no difference in adding the _isa
> tag or not.

yum-builddep on a srpm built on x86_64 will however fail on i686 if it has isa'ed BRs.

Comment 22 Simone Caronni 2012-05-29 09:25:18 UTC
Ok, so I assume it is good to leave them in place as this will lead to the expected behaviour.

Comment 23 Simone Caronni 2012-05-29 09:50:51 UTC
Updated package with a separate %{_libdir}/guacamole/ just for plugins; this makes a lot of sense especially by the fact that the project is planning to add additional plugins like Spice, etc.

Requires libguac-0.6.0-6 that is currently building in Koji and will be pushed to updates-testing.

Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-4.fc17.src.rpm

See bug #820543

Comment 24 Simone Caronni 2012-05-29 09:59:05 UTC
Pushed the libguac build into updates-testing (fc17, fc16, el6), now it's available also outside of rawhide.

Comment 25 Simone Caronni 2012-05-31 06:45:35 UTC
Any chance to see this moving forward? It's the only C piece of the stack that's missing from being approved.

All the other packages are in rawhide and updates-testing (f16/f17/el6) now.

Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-5.fc17.src.rpm

- Added requirement on freerdp-plugins so the clipboard works as expected.

Thanks,
--Simone

Comment 26 Michael S. 2012-05-31 12:12:21 UTC
I am unfortunately quite busy during the week with $DAYJOB, while try to finish the review tomorow

Comment 27 Simone Caronni 2012-05-31 12:34:34 UTC
Thanks!
--Simone

Comment 28 Michael S. 2012-06-01 22:29:55 UTC
So for some reason, i am still unable to build it in mock ( despites cleaning cache and so on ), and even if i see the package in rawhide. I am attempting a scratch build as a try.

Comment 29 Michael S. 2012-06-01 22:58:06 UTC
So it fail on 64 bits :
http://koji.fedoraproject.org/koji/taskinfo?taskID=4120336

that's weird, cause i see the package in koji :/

Comment 30 Simone Caronni 2012-06-02 09:13:03 UTC
Hello,

1) koji:

If you use koji you should build for rawhide, for all the other released distributions you should use buildroot overrides:

http://fedoraproject.org/wiki/Bodhi/BuildRootOverrides

Packages dependent one on the other are built and released all at the same time based on builds generated from build overrides.

In this case, you should create a root with libguac-0.6.0-6.fc17:

bodhi --buildroot-override=libguac-0.6.0-6.fc17 --notes="Test for review"

If you login to Bodhi you can see all the BuildRootOverrides that are used for the various stacks.

2) mock:

Based on your first request I also created testing updates for all the other parts, so if you want to use mock, for evertyhing except rawhide edit your /etc/mock/fedora-17-x86_64.cfg file adding the updates-testing repository.

Or install directly libguac / libguac-devel in the chroot.

---

That's the point of not putting updates before the whole stack is built: when you have all the stack at the same time to be updated, you create buildroots, build everything and then release all the packages that are dependent on each other at the same time so you don't break dependencies for the users.

Look for Evolution inside Bodhi, that's a clear example of that. You can't release an updated Evolution unless all the packages / plugins depending on it are built.

Comment 31 Michael S. 2012-06-02 21:18:49 UTC
Well, you pushed them in updates-testing, so shouldn't they be in f17-candidate ( I am not that familliar with bodhi koji ) ?

And no, since there is no package existing currently, nothing would be broken if they are pushed to updates-testing.

Comment 32 Simone Caronni 2012-06-03 09:01:16 UTC
Hello,

updates is not "f17-candidate", that's a tag in koji. Only in rawhide updates are pushed into the repositories, all other releases need staging. The packages are in "updates-testing" as you requested.

To test the build, please use one of the following:

1- rawhide:

koji, mock.

2- f17, f16, f15, el6:

koji + buildroot ovverrides OR mock + updates-testing enabled

--Simone

Comment 33 Simone Caronni 2012-06-05 06:57:04 UTC
Any news? Have you tried to build the package?

Comment 34 Simone Caronni 2012-06-11 09:23:12 UTC
Hello, another week has passed, any chance to see this progress forward? You took the review on the 25th of May.

btw, all the other Guacamole packages are now pushed to stable.

--Simone

Comment 35 Michael S. 2012-06-11 10:51:18 UTC
I do not have time right now to make this go further, so better to let someone else do it, sorry for the delay.

Comment 36 Michael Schwendt 2012-06-14 13:18:14 UTC
* _isa in BuildRequires are insane. BuildRequires become the src.rpm's Requires.


> Requires:       freerdp-plugins < 1.1

Please add a comment to such explicit Requires. You can copy what you added to the %changelog:
https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires


* The following lead to some head-scratching:

> %post -p /sbin/ldconfig
> 
> %postun -p /sbin/ldconfig

> %files
...
> %{_libdir}/guacamole/%{name}.so
> %{_libdir}/guacamole/%{name}.so.*

So, some shared libs are stored in a private non-default path that is not in default search path for shared libs. ldconfig is run nevertheless. This prompted me to take a look at the libguac package. That one creates this private directory and extends the run-time linker's search path list.

Why? The libguac spec file doesn't answer the question.

The libguac source code dlopen's these modules. They are named "libguac-client-$(PROTOCOL).so". That's not a naming scheme that asks for trouble. The libs could be stored in %_libdir without much risk of causing file conflicts.

A comment in the spec file that %{_libdir}/guacamole/ is provided by libguac which is an automatic dependency would be nice, too.

Comment 37 Simone Caronni 2012-06-14 13:29:03 UTC
Hello,

thanks for the comments.

(In reply to comment #36)
> * _isa in BuildRequires are insane. BuildRequires become the src.rpm's
> Requires.

And that's correct, as if I install a 64 bits package I expect to pull in 64 bit dependencies. Please read from comment #4 of this bug.

> > Requires:       freerdp-plugins < 1.1
> 
> Please add a comment to such explicit Requires. You can copy what you added
> to the %changelog:
> https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

It's explained in comment #1, I will add a note, then.

> * The following lead to some head-scratching:
> 
> > %post -p /sbin/ldconfig
> > 
> > %postun -p /sbin/ldconfig

Yes, this is probably a leftover, I will remove it.
 
> > %files
> ...
> > %{_libdir}/guacamole/%{name}.so
> > %{_libdir}/guacamole/%{name}.so.*
> 
> So, some shared libs are stored in a private non-default path that is not in
> default search path for shared libs. ldconfig is run nevertheless. This
> prompted me to take a look at the libguac package. That one creates this
> private directory and extends the run-time linker's search path list.
> 
> Why? The libguac spec file doesn't answer the question.
> 
> The libguac source code dlopen's these modules. They are named
> "libguac-client-$(PROTOCOL).so". That's not a naming scheme that asks for
> trouble. The libs could be stored in %_libdir without much risk of causing
> file conflicts.
> 
> A comment in the spec file that %{_libdir}/guacamole/ is provided by libguac
> which is an automatic dependency would be nice, too.

They were like you're saying before I was asked to do the opposite for libguac-client-vnc. Please see comment #8 of [1] for the explanation. Developers will add other plugins to this (Spice, SSH, etc,).

[1] https://bugzilla.redhat.com/show_bug.cgi?id=820543

I will add a note for this as well, thanks.

--Simone

Comment 38 Gwyn Ciesla 2012-06-14 15:14:12 UTC
Can you post current links?

Comment 39 Michael Schwendt 2012-06-14 17:40:23 UTC
> And that's correct, as if I install a 64 bits package I expect
> to pull in 64 bit dependencies. Please read from comment #4 of this bug.

No, not again. :-/

It's disappointing you've not even thought twice before disagreeing with me.

A src.rpm package is arch-independent (!), which means it is built on an arbitrary build server using an arbitrary arch, and the single src.rpm is published in a _single_ package repository.

You can easily see the result of your packaging mistake if you downloaded the src.rpm of your own libguac-client-vnc package, for example:

http://dl.fedoraproject.org/pub/fedora/linux/updates/17/SRPMS/libguac-client-vnc-0.6.0-4.fc17.src.rpm

Note that's _the_ single SRPMS repo for all archs!

$ rpm -qpR libguac-client-vnc-0.6.0-4.fc17.src.rpm 
cairo-devel(x86-64)  
gnutls-devel(x86-64)  
libguac-devel(x86-64) = 0.6.0
libvncserver-devel(x86-64)  
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

Ooops! This is completely wrong for i686. Package resolvers will fail trying to download x86_64 packages which are not available for i686. One would first need to rebuild the src.rpm, which is highly recommended anyway, because there might be conditional (arch-dependent!) BuildRequires in the spec file, which only become active build requirements if the src.rpm is built on the correct target arch.


> > %post -p /sbin/ldconfig
> > 
> > %postun -p /sbin/ldconfig
>
> Yes, this is probably a leftover, I will remove it.

No, they are needed. How else would dlopen find the libs? Could it be that you just got lost due to lack of comments in your package?


> https://bugzilla.redhat.com/show_bug.cgi?id=820543#c8

That comment is misguided, unfortunately. There is a major difference between "hiding shared libs in a subdir of %_libdir" (and effectively hiding it from the run-time linker) and "moving shared libs into a subdir of %_libdir plus adding that subdir to the run-time linker's search path". Do you realize what the limited gain is when you do that?

Comment 40 Gwyn Ciesla 2012-06-14 17:45:40 UTC
Michael's comments in #39 seconded.

Comment 41 Terje Røsten 2012-06-14 21:09:09 UTC
Hi guys,

I support Michael's words about the not-no-private-libs. 

Keep libs really private (apps might need patching) or let the default location be ok. No using in moving for the sake of it.

The use of %{__isa} is solving a problem, however creating a new one. 

I have lots a real life experience with the wrong arch devel package is installed issue, the archness of src package seems more a theoretical
problem. 

I have never used yum-builddep, mock/koji is better for such
operations any way?

Some comments are always good, when a stack has deps between packages
a common packager has no problem remembering how and why. However, Fedora
is large project and packages change maintainers all the time. Please
try to keep packages simple and easy to maintain for the next maintainer.


Btw: the package seems good outside this issues.

Comment 42 Simone Caronni 2012-06-15 08:07:08 UTC
> It's disappointing you've not even thought twice before disagreeing with me.

Sorry I misunderstood your "BuildRequires become the src.rpm's Requires." I removed the "src." in my mind.

Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-6.fc17.src.rpm

- Moved back plugins to _libdir.
- Removed _isaed build requirements.
- Added comment on Explicit BuildRequires.

I removed the previously introduced changes, I prefer not to patch things if it's not really needed and try to keep it simple; so I would go to the default _libdir.

Since all the other packages are new I can push the changes back to the other libraries, no problem:

http://pkgs.fedoraproject.org/gitweb/?p=libguac.git;a=summary
http://pkgs.fedoraproject.org/gitweb/?p=libguac-client-vnc.git;a=summary

Probably the "< 1.1" could be removed as well, if the API changes there would be a soname bump and compilation errors which are part of the normal building and testing.

Comment 43 Mads Kiilerich 2012-06-15 08:52:39 UTC
(In reply to comment #39)
> Ooops! This is completely wrong for i686. Package resolvers will fail trying
> to download x86_64 packages which are not available for i686. One would
> first need to rebuild the src.rpm, which is highly recommended anyway,
> because there might be conditional (arch-dependent!) BuildRequires in the
> spec file, which only become active build requirements if the src.rpm is
> built on the correct target arch.

As you point out: The src.rpm dependencies (and thus yum-builddep) are not reliable anyway. It is for example (usually) not possible to do 'yum-builddep grub2' on i686. (IMO it would be better to deprecate yum-builddep and provide a simple way to install build dependencies from rpmbuild/fedpkg, using locally and correctly exapanded macros.)

It do however IMO matter that build requirements are 100% reliable that if just the stated requirements are met somehow then we can trust that the build will succeed and be valid. A unspecific requirement can be ambiguous and fatal on multilib systems. IMO it is thus better to make the arch requirement explicit when it matters.

But right, this is not how we do in Fedora where multilib has several grey areas ... and this is thus not the rigth place to discuss it.

Comment 44 Michael Schwendt 2012-06-15 11:22:17 UTC
> The src.rpm dependencies (and thus yum-builddep) are not reliable anyway.

Remains the question whether that is sufficient reason to break "rpm -qpR …src.rpm" queries and tools such as yum-builddep? Perhaps the RPM devs would also like to kill src.rpm Requires that are created from the BuildRequires.


> A unspecific requirement can be ambiguous and fatal on multilib systems.

... for cross-arch building only (such as i686 on x86_64 *without* using Mock), and mainly because not all -devel subpackages contain arch-specific base package dependencies yet (despite the added entry in the Packaging Guidelines).

The bad effects are not limited to yum-builddep, however. A manual "yum install 'gnutls-devel(x86-32)'"  currently still pulls in a mix of i686/x86_64 packages, for example. And that's just one example. One doesn't even get the minimum build environment via arch-specific dependencies alone. No glibc-devel.i686 and similar packages.


> ... and this is thus not the rigth place to discuss it.

:) That would be something for the FPC.

It would be half-hearted anyway that arch-specific base pkg deps are a MUST in the guidelines, but packagers don't update their spec files accordingly or even refuse to do so because they disagree with the guidelines. Not even glibc-devel contains an arch-specific base pkg dep yet.


> multilib has several grey areas 

This topic is not limited to "multilib".

I understand the intention to add %_isa to BuildRequires, but it's of questionable benefit and not free of problems either.

Comment 45 Gwyn Ciesla 2012-06-15 14:30:21 UTC
Good:

- rpmlint checks return:

libguac-client-rdp.src: W: spelling-error Summary(en_US) guacd -> guard
The value of this tag appears to be misspelled. Please double-check.

libguac-client-rdp.src: W: spelling-error %description -l en_US guacd -> guard
The value of this tag appears to be misspelled. Please double-check.

1 packages and 0 specfiles checked; 0 errors, 2 warnings.

Ignore.

libguac-client-rdp.x86_64: W: devel-file-in-non-devel-package /usr/lib64/libguac-client-rdp.so
A development file (usually source code) is located in a non-devel package. If
you want to include source code in your package, be sure to create a
development package.

Is that really a plugin?  The presence of a solib and an include directory with headers makes me think a -devel package might be warranted.

- package meets naming guidelines
- package meets packaging guidelines
- license ( MPLv1.1 or GPLv2+ or LGPLv2+ ) OK, text in %doc, matches source
- spec file legible, in am. english
- source matches upstream
- package compiles on devel (x86_64)
- no missing BR
- no unnecessary BR
- no locales
- not relocatable
- owns all directories that it creates
- no duplicate files
- permissions ok
- %clean ok
- macro use consistent
- code, not content
- no need for -docs
- nothing in %doc affects runtime
- no need for .desktop file 

Other than my questions about the need for a -devel package, it looks OK.

Comment 46 Michael Schwendt 2012-06-15 14:34:28 UTC
> Is that really a plugin?  

Yes, libguac dlopen()s these shared libs (bottom of comment 36). That's why a comment in the spec file would be helpful.


> The presence of a solib and an include directory with headers
> makes me think a -devel package might be warranted.

? The spec file doesn't package any headers.

Comment 47 Gwyn Ciesla 2012-06-15 14:36:22 UTC
(In reply to comment #46)
> > Is that really a plugin?  
> 
> Yes, libguac dlopen()s these shared libs (bottom of comment 36). That's why
> a comment in the spec file would be helpful.

Gotcha.  That would be great.

> 
> > The presence of a solib and an include directory with headers
> > makes me think a -devel package might be warranted.
> 
> ? The spec file doesn't package any headers.

Exactly.  But they're there in the tarball.  So I'm asking if possibly the headers should be packaged.

Comment 48 Michael Schwendt 2012-06-15 14:42:22 UTC
> But they're there in the tarball. So I'm asking if possibly the headers
> should be packaged.

Don't just ask, but try to come up with a more convincing rationale as why they should be packaged. ;)

The files in ./src include these headers. It looks like a normal split of C source code into .h and .c files, with no immediate reason to believe the headers define a _public_ interface.

Comment 49 Gwyn Ciesla 2012-06-15 14:46:06 UTC
Then there's no good reason to do so.  Usually those life in the same dir, but they don't need to.  So since that's resolved, put a comment in the spec about the dlopened plugin and I'm happy.

Comment 50 Simone Caronni 2012-06-15 14:48:54 UTC
(In reply to comment #46)
> Yes, libguac dlopen()s these shared libs (bottom of comment 36). That's why
> a comment in the spec file would be helpful.

Yes, I forgot the comment, sorry. There should be no devel package for the plugins. I took part of your sentence. And put it in the %files section:

%files
%doc AUTHORS LICENSE README
# The libguac source code dlopen's these plugins, and they are named without
# the version in the shared object; i.e. "libguac-client-$(PROTOCOL).so".
%{_libdir}/%{name}.so
%{_libdir}/%{name}.so.*

Spec URL: http://slaanesh.fedorapeople.org/libguac-client-rdp.spec
SRPM URL: http://slaanesh.fedorapeople.org/libguac-client-rdp-0.6.0-7.fc17.src.rpm

I will add these and all the other changes to libguac-client-vnc and libguac after the review.

Thanks,
--Simone

Comment 51 Gwyn Ciesla 2012-06-15 14:51:15 UTC
Perfect, thanks!

APPROVED.

Comment 53 Simone Caronni 2012-06-15 15:00:41 UTC
New Package SCM Request
=======================
Package Name: libguac-client-rdp
Short Description: RDP support for guacd
Owners: slaanesh
Branches: f17 f16 el6
InitialCC:

Comment 54 Gwyn Ciesla 2012-06-15 15:04:36 UTC
Git done (by process-git-requests).