Bug 1308985 - Review Request: vulkan - Vulkan loader and validation layers
Summary: Review Request: vulkan - Vulkan loader and validation layers
Keywords:
Status: CLOSED CANTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Simone Caronni
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: FE-DEADREVIEW 1308986 1356229
TreeView+ depends on / blocked
 
Reported: 2016-02-16 16:30 UTC by Adam Jackson
Modified: 2016-09-27 16:47 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-09-27 14:30:47 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Adam Jackson 2016-02-16 16:30:51 UTC
Spec URL: https://ajax.fedorapeople.org/vulkan/vulkan.spec
SRPM URL: https://ajax.fedorapeople.org/vulkan/vulkan-1.0.3-2.fc23.src.rpm
Description:

Vulkan is a new high-performance rendering and compute API from the Khronos Group. This package contains the driver loader library, validation layers, and vulkaninfo sample utility for the Vulkan API.

Fedora Account System Username: ajax

Comment 1 Igor Gnatenko 2016-02-16 18:48:32 UTC
Updated SRPM: https://ignatenkobrain.fedorapeople.org/for-review/vulkan-1.0.3-0.1.git1affe90.fc24.src.rpm
Updated SPEC: https://ignatenkobrain.fedorapeople.org/for-review/vulkan.spec

Everything looks okay now except glslang which we are using for building (I think we are using it for tests-only so it is okay). In the future we will package it.

As agreed with Adam, I fixed spec and we will use my spec for Fedora repos.

Comment 2 Jonathan Underwood 2016-02-17 14:49:05 UTC
Err. This is a pretty scant review.

Comment 3 Jonathan Underwood 2016-02-17 15:13:05 UTC
Igor: did you intend setting the review flag ass passed (+)? I suspect not, as there is no evidence here that you've reviewed the package.

Comment 4 Igor Gnatenko 2016-02-17 15:24:08 UTC
(In reply to Jonathan Underwood from comment #3)
> Igor: did you intend setting the review flag ass passed (+)? I suspect not,
> as there is no evidence here that you've reviewed the package.

I reviewed package and fixed all problems which I found during review, so I set + because from my POV everything is good.

If you want to re-review - you are welcome.

Comment 5 Jonathan Underwood 2016-02-17 15:28:44 UTC
https://fedoraproject.org/wiki/Package_Review_Process

Includes:

5. Include the text of your review in a comment in the ticket. For easy readability, simply use a regular comment instead of an attachment. 


I really don't think the state of this review at present is acceptable.

Comment 6 Jonathan Underwood 2016-02-17 19:26:43 UTC
rpmlint output:

vulkan.x86_64: W: name-repeated-in-summary C Vulkan
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_mem_tracker.so libVkLayer_mem_tracker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_device_limits.so libVkLayer_device_limits.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_threading.so libVkLayer_threading.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_unique_objects.so libVkLayer_unique_objects.so
vulkan.x86_64: E: invalid-soname /usr/lib64/liblayer_utils.so liblayer_utils.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_param_checker.so libVkLayer_param_checker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_swapchain.so libVkLayer_swapchain.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_object_tracker.so libVkLayer_object_tracker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_draw_state.so libVkLayer_draw_state.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_image.so libVkLayer_image.so
vulkan.x86_64: W: no-manual-page-for-binary vulkaninfo
vulkan-devel.x86_64: W: only-non-binary-in-usr-lib
vulkan-devel.x86_64: W: no-documentation
vulkan-filesystem.noarch: W: no-documentation
vulkan.src: W: name-repeated-in-summary C Vulkan

Comment 7 Jonathan Underwood 2016-02-17 20:00:50 UTC

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://fedoraproject.org/wiki/Packaging:Guidelines
- Development (unversioned) .so files in -devel subpackage, if present.
  Note: Unversioned so-files directly in %_libdir.
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages
- All build dependencies are listed in BuildRequires, except for any that
  are listed in the exceptions section of Packaging Guidelines.
  Note: These BR are not needed: gcc gcc-c++
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
- Forcing the scripts to use python 2.7 should be conditionalised for
  RHEL - no need to do that for Fedora.

- Other stuff below

===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig called in %post and %postun if required.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Apache (v2.0)", "GPL", "GPL (v2 or later)", "GPL (v3 or
     later)", "Unknown or generated", "MIT/X11 (BSD like)", "BSD (3
     clause)". 50 files have unknown license. Detailed output of
     licensecheck in /home/jgu/Fedora/1308985-vulkan/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[!]: Development files must be in a -devel package

I'm pretty sure the .so's aren't actually devel libs so shouldn't be
moved to the devel package, but they do need to be versioned.

[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 1 files.
[!]: Package complies to the Packaging Guidelines

See above.

[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[!]: Uses parallel make %{?_smp_mflags} macro.

Needs fixing.

[x]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in vulkan-
     devel , vulkan-filesystem , vulkan-debuginfo
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[!]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.

Is Ajax technically upstream? If not, those patches do need pushing
upstream and an appropriate comment added to spec for each patch.

[-]: Scriptlets must be sane, if used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Installation errors
-------------------
INFO: mock.py version 1.2.14 starting (python version = 3.4.3)...
Start: init plugins
INFO: selinux enabled
Finish: init plugins
Start: run
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled dnf cache
Start: cleaning dnf metadata
Finish: cleaning dnf metadata
INFO: enabled ccache
Mock Version: 1.2.14
INFO: Mock Version: 1.2.14
Finish: chroot init
INFO: installing package(s): /home/jgu/Fedora/1308985-vulkan/results/vulkan-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-devel-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-filesystem-1.0.3-0.1.git1affe90.fc24.noarch.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-debuginfo-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-debuginfo-1.0.3-0.1.git1affe90.fc24.x86_64.rpm
ERROR: Command failed. See logs for output.
 # /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 24 --setopt=deltarpm=false install /home/jgu/Fedora/1308985-vulkan/results/vulkan-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-devel-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-filesystem-1.0.3-0.1.git1affe90.fc24.noarch.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-debuginfo-1.0.3-0.1.git1affe90.fc24.x86_64.rpm /home/jgu/Fedora/1308985-vulkan/results/vulkan-debuginfo-1.0.3-0.1.git1affe90.fc24.x86_64.rpm --setopt=tsflags=nocontexts


Rpmlint
-------
Checking: vulkan-1.0.3-0.1.git1affe90.fc24.x86_64.rpm
          vulkan-devel-1.0.3-0.1.git1affe90.fc24.x86_64.rpm
          vulkan-filesystem-1.0.3-0.1.git1affe90.fc24.noarch.rpm
          vulkan-debuginfo-1.0.3-0.1.git1affe90.fc24.x86_64.rpm
          vulkan-1.0.3-0.1.git1affe90.fc24.src.rpm
vulkan.x86_64: W: name-repeated-in-summary C Vulkan
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_mem_tracker.so libVkLayer_mem_tracker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_device_limits.so libVkLayer_device_limits.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_threading.so libVkLayer_threading.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_unique_objects.so libVkLayer_unique_objects.so
vulkan.x86_64: E: invalid-soname /usr/lib64/liblayer_utils.so liblayer_utils.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_param_checker.so libVkLayer_param_checker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_swapchain.so libVkLayer_swapchain.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_object_tracker.so libVkLayer_object_tracker.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_draw_state.so libVkLayer_draw_state.so
vulkan.x86_64: E: invalid-soname /usr/lib64/libVkLayer_image.so libVkLayer_image.so
vulkan.x86_64: W: no-manual-page-for-binary vulkaninfo
vulkan-devel.x86_64: W: only-non-binary-in-usr-lib
vulkan-devel.x86_64: W: no-documentation
vulkan-filesystem.noarch: W: no-documentation
vulkan.src: W: name-repeated-in-summary C Vulkan
5 packages and 0 specfiles checked; 10 errors, 6 warnings.




Requires
--------
vulkan-devel (rpmlib, GLIBC filtered):
    libvulkan.so.1()(64bit)
    vulkan(x86-64)

vulkan-debuginfo (rpmlib, GLIBC filtered):

vulkan-filesystem (rpmlib, GLIBC filtered):

vulkan (rpmlib, GLIBC filtered):
    /sbin/ldconfig
    ld-linux-x86-64.so.2()(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    liblayer_utils.so()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libvulkan.so.1()(64bit)
    libxcb.so.1()(64bit)
    rtld(GNU_HASH)
    vulkan-filesystem



Provides
--------
vulkan-devel:
    vulkan-devel
    vulkan-devel(x86-64)

vulkan-debuginfo:
    vulkan-debuginfo
    vulkan-debuginfo(x86-64)

vulkan-filesystem:
    vulkan-filesystem

vulkan:
    libVkLayer_device_limits.so()(64bit)
    libVkLayer_draw_state.so()(64bit)
    libVkLayer_image.so()(64bit)
    libVkLayer_mem_tracker.so()(64bit)
    libVkLayer_object_tracker.so()(64bit)
    libVkLayer_param_checker.so()(64bit)
    libVkLayer_swapchain.so()(64bit)
    libVkLayer_threading.so()(64bit)
    libVkLayer_unique_objects.so()(64bit)
    liblayer_utils.so()(64bit)
    libvulkan.so.1()(64bit)
    vulkan
    vulkan(x86-64)



Unversioned so-files
--------------------
vulkan: /usr/lib64/libVkLayer_device_limits.so
vulkan: /usr/lib64/libVkLayer_draw_state.so
vulkan: /usr/lib64/libVkLayer_image.so
vulkan: /usr/lib64/libVkLayer_mem_tracker.so
vulkan: /usr/lib64/libVkLayer_object_tracker.so
vulkan: /usr/lib64/libVkLayer_param_checker.so
vulkan: /usr/lib64/libVkLayer_swapchain.so
vulkan: /usr/lib64/libVkLayer_threading.so
vulkan: /usr/lib64/libVkLayer_unique_objects.so
vulkan: /usr/lib64/liblayer_utils.so

Source checksums
----------------
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/1affe90f0ec7f9bccb6841a56a2a5b66861efe6a/vulkan-1affe90.tar.gz :
  CHECKSUM(SHA256) this package     : 36253f9982e7cec27d7cde375203dbe88c4b7f49c885963f0e0b8de07db971c0
  CHECKSUM(SHA256) upstream package : 36253f9982e7cec27d7cde375203dbe88c4b7f49c885963f0e0b8de07db971c0
https://github.com/KhronosGroup/glslang/archive/6c292d3ba78533fed7b5ec46bb93b53419cf6535/glslang-6c292d3.tar.gz :
  CHECKSUM(SHA256) this package     : 299c411c44bf44d0e380f743112f3f1969d3f7dca8b1e91f550c0a95834bb493
  CHECKSUM(SHA256) upstream package : 299c411c44bf44d0e380f743112f3f1969d3f7dca8b1e91f550c0a95834bb493


Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1308985
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 8 Igor Gnatenko 2016-02-17 20:15:09 UTC
> - Package installs properly.
>   Note: Installation errors (see attachment)
>   See: https://fedoraproject.org/wiki/Packaging:Guidelines
You didn't attach anything and in fact it is installable, you have problems with mock or we have broken rawhide.

> - Development (unversioned) .so files in -devel subpackage, if present.
>   Note: Unversioned so-files directly in %_libdir.
>   See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages
See below.

> - All build dependencies are listed in BuildRequires, except for any that
>   are listed in the exceptions section of Packaging Guidelines.
>   Note: These BR are not needed: gcc gcc-c++
>   See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
This guidelines changed recently. Now we need to require explicitly.

> - Forcing the scripts to use python 2.7 should be conditionalised for
>   RHEL - no need to do that for Fedora.
It is compile-time only. But I agree that this could be fixed.

> [!]: License field in the package spec file matches the actual license.
>      Note: Checking patched sources after %prep for licenses. Licenses
>      found: "Apache (v2.0)", "GPL", "GPL (v2 or later)", "GPL (v3 or
>      later)", "Unknown or generated", "MIT/X11 (BSD like)", "BSD (3
>      clause)". 50 files have unknown license. Detailed output of
>      licensecheck in /home/jgu/Fedora/1308985-vulkan/licensecheck.txt
Code which goes to install (linking and whatever) only MIT.

> I'm pretty sure the .so's aren't actually devel libs so shouldn't be
moved to the devel package, but they do need to be versioned.
Not yet.

> [!]: Uses parallel make %{?_smp_mflags} macro.
It is using %make_build which effectively does smp_mflags

> Is Ajax technically upstream? If not, those patches do need pushing
upstream and an appropriate comment added to spec for each patch.

Most of all patches made only for compatibility with our guidelines and never will be accepted in upstream as it stays now. (Read as buildsystem changes). Some of patches we are going to send to upstream, but not right now.




So after all only python2/python3 question still exists which could be easily fixed and versioning of so-files but I don't think that we need to do it because if understood correctly it is not going via public API so it is okay.

I am still insisting that package is totally compatible with guidelines except few points which I mentioned above.

Comment 9 Jonathan Underwood 2016-02-17 20:32:40 UTC
(In reply to Igor Gnatenko from comment #8)
> > - Package installs properly.
> >   Note: Installation errors (see attachment)
> >   See: https://fedoraproject.org/wiki/Packaging:Guidelines
> You didn't attach anything and in fact it is installable, you have problems
> with mock or we have broken rawhide.
> 
> > - Development (unversioned) .so files in -devel subpackage, if present.
> >   Note: Unversioned so-files directly in %_libdir.
> >   See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages
> See below.
> 
> > - All build dependencies are listed in BuildRequires, except for any that
> >   are listed in the exceptions section of Packaging Guidelines.
> >   Note: These BR are not needed: gcc gcc-c++
> >   See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
> This guidelines changed recently. Now we need to require explicitly.
> 
> > - Forcing the scripts to use python 2.7 should be conditionalised for
> >   RHEL - no need to do that for Fedora.
> It is compile-time only. But I agree that this could be fixed.
> 
> > [!]: License field in the package spec file matches the actual license.
> >      Note: Checking patched sources after %prep for licenses. Licenses
> >      found: "Apache (v2.0)", "GPL", "GPL (v2 or later)", "GPL (v3 or
> >      later)", "Unknown or generated", "MIT/X11 (BSD like)", "BSD (3
> >      clause)". 50 files have unknown license. Detailed output of
> >      licensecheck in /home/jgu/Fedora/1308985-vulkan/licensecheck.txt
> Code which goes to install (linking and whatever) only MIT.
> 
> > I'm pretty sure the .so's aren't actually devel libs so shouldn't be
> moved to the devel package, but they do need to be versioned.
> Not yet.

Why not? This needs at the very least an explicit comment in the spec file, and an FPC exception - right now, you're breaking guidelines. "Not yet" just doesn't cut it.


> 
> > [!]: Uses parallel make %{?_smp_mflags} macro.
> It is using %make_build which effectively does smp_mflags
> 
> > Is Ajax technically upstream? If not, those patches do need pushing
> upstream and an appropriate comment added to spec for each patch.
> 
> Most of all patches made only for compatibility with our guidelines and
> never will be accepted in upstream as it stays now. (Read as buildsystem
> changes). Some of patches we are going to send to upstream, but not right
> now.
> 

OK, so comments need adding to the spec file indicating this, in order to comply with guidelines.

> 
> 
> 
> So after all only python2/python3 question still exists which could be
> easily fixed and versioning of so-files but I don't think that we need to do
> it because if understood correctly it is not going via public API so it is
> okay.

The libraries are currently installed in the linker path and so are public at the moment. They either need versioning, or moving to a non-public location.

> 
> I am still insisting that package is totally compatible with guidelines
> except few points which I mentioned above.

"Except a few points" doesn't cut it. Your approach to this review is worryingly sloppy.

Comment 10 Adam Jackson 2016-02-24 20:03:26 UTC
(In reply to Jonathan Underwood from comment #9)

> > > I'm pretty sure the .so's aren't actually devel libs so shouldn't be
> > moved to the devel package, but they do need to be versioned.
> > Not yet.

Not ever, in fact.

> Why not? This needs at the very least an explicit comment in the spec file,
> and an FPC exception - right now, you're breaking guidelines. "Not yet" just
> doesn't cut it.

Because they are not things applications link against. Vulkan layers are requested by the application explicitly, through OS configuration, or by the user through environment variables, and the loader is responsible for inserting them into the call chain. They do not provide useful functionality on their own, and there is no plausible application that would try to use them on their own.

There is no functional benefit to moving them to a directory other than %{_libdir}, so I chose not to. Khronos intentionally left that decision up to the operating system.

> OK, so comments need adding to the spec file indicating this, in order to
> comply with guidelines.

Sure, we can do that.

Those patches are probably not _currently_ acceptable to upstream as they make some policy decisions that other OSes might want to do differently. I'm happy to get that delta down as close to zero as possible.

> The libraries are currently installed in the linker path and so are public
> at the moment. They either need versioning, or moving to a non-public
> location.

I really can't agree with this logic. All library paths are public. It would certainly be _nice_ if there existed the complement of 'ld -z nodlopen' to mean "no really, do not link against this library", but there does not. And the set of packages extant that explicitly link against libraries with these names is empty. There is no danger here, only missing linker features.

The relevant section of the packaging guidelines seems simply to be missing a clause of the conditional:

"As an additional complication, some software generates unversioned shared objects which are not intended to be used as system libraries. These files are usually plugins or modular functionality specific to an application, and are not located in the ld library paths or cache. [...] Usually, these unversioned shared objects can be found in a dedicated subdirectory under /usr/lib or /usr/lib64 (e.g. /usr/lib/purple-2/ is the plugin directory used for libpurple applications). In these cases, the unversioned shared objects do not need to be placed in a -devel package."

"In these cases" could be read to mean _either_ "in cases where such libraries exist at all" or "in cases where such libraries are packaged in a subdir below %{_libdir}".

Comment 11 Jonathan Underwood 2016-03-23 12:27:49 UTC
Thanks for the information, Adam - this is precisely the sort of thing that should be raised and documented during package review, and is why I objected to Igor's non-existant (or at least undocumented) review and instant approval.

So, I think we agree that normal practice for unversioned shared objects which are not intended to be used as system libraries (and so not directly linked against) is to place them outside the ld library paths or cache, and the guidelines allow these to not be put in a -devel sub-package. So, I agree, they don't need to be in a -devel, and they don't need to be versioned.

However, I haven't seen a good argument for not putting them under/usr/lib[64]/vulkan ?

Comment 12 jan p. springer 2016-05-04 08:59:14 UTC
any chance the lunarg tools from the sdk could be included?

% ls -1 lunarg-vulkan-sdk/1.0.11.0/x86_64/bin

glslangValidator
spirv-as
spirv-dis
spirv-remap
vkjson_info
vkreplay
vktrace
vulkaninfo

Comment 13 Dave Airlie 2016-07-27 20:40:24 UTC
Upstream so far says they need to be in /usr/lib directly not a subdirectory, and I'd rather not diverge from upstream for no good reason here.

Jan, we can look into packaging those later, let's get the initial package done first please.

So what else is blocking this?

Comment 14 Igor Gnatenko 2016-07-28 06:13:37 UTC
(In reply to Dave Airlie from comment #13)
> Upstream so far says they need to be in /usr/lib directly not a
> subdirectory, and I'd rather not diverge from upstream for no good reason
> here.
> 
> Jan, we can look into packaging those later, let's get the initial package
> done first please.
> 
> So what else is blocking this?

I don't see any. Probably there needs update to latest version, but it should be trivial.

Comment 15 Igor Gnatenko 2016-09-03 06:45:03 UTC
> Source0:	vulkan.tar.xz
> Source1:	glslang.tar.xz
using URLs please

> Group:		System Environment/Libraries
> Group:		Development/Libraries
> Group:		System Environment/Base
not needed

> Requires:	%{name} = %{version}-%{release}
missing %{?_isa}

> %doc LICENSE.txt
%license please

> #BuildArch:	noarch
looks like it owns only noarch directories, so you can uncomment this.

sorry, but I don't have enough free time to continue with this Review Request.

Comment 16 Simone Caronni 2016-09-04 09:37:08 UTC
I also need Vulkan for the Nvidia drivers, so I'm taking it.

Comment 17 leigh scott 2016-09-08 00:21:55 UTC
(In reply to Simone Caronni from comment #16)
> I also need Vulkan for the Nvidia drivers, so I'm taking it.

I have packaged the latest git 1.0.26.0

https://copr.fedorainfracloud.org/coprs/leigh123linux/Vulkan/builds/

Comment 18 Michael Cronenworth 2016-09-27 14:30:47 UTC
Simone and/or Leigh,

I'm considering this review dead. Adam doesn't respond to requests to move this review forward... even after it was approved.

Please open a new review and assign it to me. I'll get it done.


Note You need to log in before you can comment on or make changes to this bug.