Summary: | [NEW PORT] graphics/vulkan-sdk and dependencies | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Ports & Packages | Reporter: | Val Packett <val> | ||||||||||||||
Component: | Individual Port(s) | Assignee: | Jan Beich <jbeich> | ||||||||||||||
Status: | Closed FIXED | ||||||||||||||||
Severity: | Affects Some People | CC: | jbeich, johalun0, koobs, w.schwarzenfeld | ||||||||||||||
Priority: | --- | Keywords: | feature, needs-qa | ||||||||||||||
Version: | Latest | ||||||||||||||||
Hardware: | Any | ||||||||||||||||
OS: | Any | ||||||||||||||||
Bug Depends on: | 221540, 227423 | ||||||||||||||||
Bug Blocks: | 222182, 231248 | ||||||||||||||||
Attachments: |
|
Description
Val Packett
2017-09-09 19:45:54 UTC
Comment on attachment 186206 [details] The patch === devel/glslang-devel === > +PORTNAME= glslang-devel Use PKGNAMESUFFIX=-devel or just drop it due to lack of stable port. As maintainer you can switch to track releases once upstream starts doing those more often. Ditto for devel/spirv-tools-devel. > +DISTVERSION= Overload400-PrecQual.2000-12-Apr-2017 [...] > +GH_TAGNAME= d5aedc199 Maybe convert to a tag offset: $ git describe --tags --match 3.0 d5aedc199 3.0-1516-gd5aedc19 would be DISTVERSION= 3.0-1516 DISTVERSIONSUFFIX= -gd5aedc19 represented as $ make -V PKGNAME glslang-devel-3.0.1516 Maybe ditto for devel/spirv-tools-devel: DISTVERSIONPREFIX= v DISTVERSION= 2016.6-155 DISTVERSIONSUFFIX= -gf0fe601 [...] GH_ACCOUNT= KhronosGroup GH_PROJECT= SPIRV-Tools GH_TUPLE= KhronosGroup:SPIRV-Headers:2bb92e6:headers/external/spirv-headers $ make -V PKGNAME spirv-tools-2016.6.155 In both cases you'd have a monotonically increasing version for each upstream commit, sparing inventing arbitrary suffixes. > +LICENSE= BSD3DLABS > +LICENSE_NAME= Modified BSD License (3Dlabs/LunarG) > +LICENSE_FILE= ${FILESDIR}/LICENSE > +LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept Doesn't look modified compared to regular variants[1]. Google copyrights are also missing. Maybe generate license text on-the-fly: LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKDIR}/LICENSE post-extract: ${SED} '/^$$/,$$d' ${WRKSRC}/${PORTNAME}/Include/Types.h \ >${WRKDIR}/LICENSE [1] https://fedoraproject.org/wiki/Licensing:BSD > +USES= cmake:outsource compiler:c++11-lang Can you reindent with 8 column tabs to achieve consistent whitespace alignment? Ditto for devel/spirv-tools-devel. > +Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator. A bit terse for pkg-descr. Maybe use the first paragraph from khronos.org link. > +WWW: https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ > +WWW: https://github.com/KhronosGroup/glslang One of those can probably be dropped given both cross-reference each other. === devel/spirv-tools-devel === Fails to build with DEVELOPER=1 set in make.conf: ====> Running Q/A tests (stage-qa) Error: '/bin/bash' is an invalid shebang you need USES=shebangfix for 'bin/spirv-lesspipe.sh' *** Error code 1 > +USES= cmake:outsource compiler:c++11-lang python:2 - USES=compiler:c++11-lib instead as std::unique_ptr isn't available in libstdc++ 4.2. - USES=python:build instead given it builds fine with "python3.6" and runtime doesn't call "python2". Ditto for graphics/vulkan-sdk. > +LICENSE= APACHE20 > +LICENSE_FILE= ${WRKSRC}/LICENSE In this case, defining LICENSE_FILE isn't necessary. Apache 2.0 is a standardized license for which there's a copy under Templates/Licenses/. Ditto for graphics/vulkan-sdk. === graphics/vulkan-sdk === Fails to build in poudriere: In file included from /wrkdirs/usr/ports/graphics/vulkan-sdk/work/Vulkan-LoaderAndValidationLayers-sd k-1.0.57.0/layers/vk_layer_extension_utils.cpp:22: In file included from /wrkdirs/usr/ports/graphics/vulkan-sdk/work/Vulkan-LoaderAndValidationLayers-sd k-1.0.57.0/layers/vk_layer_extension_utils.h:21: In file included from /wrkdirs/usr/ports/graphics/vulkan-sdk/work/Vulkan-LoaderAndValidationLayers-sd k-1.0.57.0/include/vulkan/vk_layer.h:29: /wrkdirs/usr/ports/graphics/vulkan-sdk/work/Vulkan-LoaderAndValidationLayers-sdk-1.0.57.0/layers/../include/vulkan/vulkan.h:5916:10: fatal error: 'X11/extensions/Xrandr.h' file not found #include <X11/extensions/Xrandr.h> ^ http://sprunge.us/OaAM > +XLIB_CMAKE_ON= -DBUILD_WSI_XLIB_SUPPORT:BOOL=ON > +XLIB_CMAKE_OFF= -DBUILD_WSI_XLIB_SUPPORT:BOOL=OFF Switch to _CMAKE_BOOL to improve readability. > +-if(CMAKE_SYSTEM_NAME STREQUAL "Linux") > ++if((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")) What about other BSDs? DragonFly is a downstream of FreeBSD Ports. Maybe switch to if(UNIX AND NOT APPLE) Ditto in other places. > +- set(FALLBACK_CONFIG_DIRS "/etc/xdg" CACHE STRING > ++ set(FALLBACK_CONFIG_DIRS "/usr/local/etc/xdg:/etc/xdg" CACHE STRING Would it respect LOCALBASE? Maybe replace /usr/local with ${CMAKE_INSTALL_PREFIX}. > ++if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") > ++ include_directories("/usr/local/include") > + endif() Better add include_directories(SYSTEM ${XCB_INCLUDE_DIR}) just after find_package(XCB) and include_directories(SYSTEM ${X11_Xlib_INCLUDE_PATH}) just after find_package(X11). > ++++ demos/cube.cpp [...] > +-#elif __linux__ > ++#elif defined(__linux__) || defined(__FreeBSD__) Maybe use #elif !defined(__APPLE__) > ++ list(APPEND libraries PRIVATE -lrt) On BSDs clock_gettime() is in libc. Maybe limit to if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$") > ++ if(NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") > ++ list(APPEND libraries PRIVATE -ldl) > ++ endif() Switch to ${CMAKE_DL_LIBS}. > ++++ loader/loader.c [...] > +-#if defined(__linux__) > ++#if defined(__linux__) || defined(__FreeBSD__) getenv() is part of POSIX. Maybe use #ifndef _WIN32 or #if !defined(_WIN32) && !defined(__APPLE__) depending on how weird OS X is. ;) > ++++ loader/vk_loader_platform.h [...] > +-#if defined(__linux__) > ++#if defined(__linux__) || defined(__FreeBSD__) Ditto. Created attachment 186513 [details]
vulkan-sdk-glslang-devel-spirv-tools-devel.patch (v2)
Thanks a lot for the review! Didn't know about some things (like _CMAKE_BOOL).
Yeah, the license looks exactly like BSD3CLAUSE. I guess they just called it "modified" because they wrote their names in :D
For the ifdef, using __unix__ now, which is supposedly also NOT APPLE. By the way, Apple doesn't have Vulkan, except via a 3rd party commercial library that translates Vulkan to Apple's Metal.
Created attachment 189119 [details]
vulkan-update-1_0_65.patch
Update to 1.0.65.1 (on top of the previous patch)
There are files like distinfo and pkg-plist missing in vulkan-sdk and the second patch does not apply. Please make one patch file that includes all necessary changes. Created attachment 191036 [details]
vulkan-1_0_68.patch
Here's an update to 1.0.68, as one patch
Build failure in poudriere ===> Returning to build of vulkan-sdk-1.0.68.0 =========================================================================== =======================<phase: configure >============================ ===> Configuring for vulkan-sdk-1.0.68.0 ===> Performing out-of-source build /bin/mkdir -p /wrkdirs/usr/ports/graphics/vulkan-sdk/work/.build -- The C compiler identification is Clang 5.0.0 -- The CXX compiler identification is Clang 5.0.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find PythonInterp: Found unsuitable version "2.7.14", but required is at least "3" (found /usr/local/bin/python2.7) Call Stack (most recent call first): /usr/local/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:376 (_FPHSA_FAILURE_MESSAGE) /usr/local/share/cmake/Modules/FindPythonInterp.cmake:152 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:16 (find_package) -- Configuring incomplete, errors occurred! See also "/wrkdirs/usr/ports/graphics/vulkan-sdk/work/.build/CMakeFiles/CMakeOutput.log". *** Error code 1 Stop. make: stopped in /usr/ports/graphics/vulkan-sdk =>> Cleaning up wrkdir ===> Cleaning for vulkan-sdk-1.0.68.0 build of graphics/vulkan-sdk | vulkan-sdk-1.0.68.0 ended at Tue Feb 27 17:19:07 GMT 2018 build time: 00:00:26 !!! build failure encountered !!! Created attachment 191374 [details]
vulkan-1_1_70.patch
Updated to version 1.1. Added python 3 requirement.
Created attachment 195987 [details] vulkan-1_1_82.patch Update to 1.1.82 — no longer one monolithic port, since the original repo has exploded into four :) Note: wayland-egl is depended on from the wayland port instead of the mesa port (bug 227423). I don't like the spread of Vulkan SDK across different categories, especially devel/vulkan-headers vs. graphics/vulkan-loader. Is it OK to move everything under graphics/? devel/ is usually the last resort and it's hard to distinguish ports there. https://www.freebsd.org/doc/en/books/porters-handbook/makefile-categories.html A commit references this bug: Author: jbeich Date: Mon Sep 3 17:43:58 UTC 2018 New revision: 478883 URL: https://svnweb.freebsd.org/changeset/ports/478883 Log: Add Vulkan SDK ports https://www.khronos.org/vulkan/ PR: 222175 Tested by: Johannes Lundberg <johalun0@gmail.com> Submitted by: Greg V <greg@unrelenting.technology> Changes: head/devel/Makefile head/devel/glslang/ head/devel/glslang/Makefile head/devel/glslang/distinfo head/devel/glslang/pkg-descr head/devel/glslang/pkg-plist head/devel/spirv-tools/ head/devel/spirv-tools/Makefile head/devel/spirv-tools/distinfo head/devel/spirv-tools/pkg-descr head/devel/spirv-tools/pkg-plist head/devel/vulkan-headers/ head/devel/vulkan-headers/Makefile head/devel/vulkan-headers/distinfo head/devel/vulkan-headers/pkg-descr head/devel/vulkan-headers/pkg-plist head/devel/vulkan-tools/ head/devel/vulkan-tools/Makefile head/devel/vulkan-tools/distinfo head/devel/vulkan-tools/files/ head/devel/vulkan-tools/files/patch-cube_CMakeLists.txt head/devel/vulkan-tools/files/patch-cube_cube.cpp head/devel/vulkan-tools/files/patch-vulkaninfo_CMakeLists.txt head/devel/vulkan-tools/pkg-descr head/devel/vulkan-tools/pkg-plist head/devel/vulkan-validation-layers/ head/devel/vulkan-validation-layers/Makefile head/devel/vulkan-validation-layers/distinfo head/devel/vulkan-validation-layers/files/ head/devel/vulkan-validation-layers/files/patch-CMakeLists.txt head/devel/vulkan-validation-layers/files/patch-layers_CMakeLists.txt head/devel/vulkan-validation-layers/files/patch-layers_vk__loader__platform.h head/devel/vulkan-validation-layers/pkg-descr head/devel/vulkan-validation-layers/pkg-plist head/emulators/rpcs3/Makefile head/graphics/Makefile head/graphics/vulkan-loader/ head/graphics/vulkan-loader/Makefile head/graphics/vulkan-loader/distinfo head/graphics/vulkan-loader/files/ head/graphics/vulkan-loader/files/patch-CMakeLists.txt head/graphics/vulkan-loader/files/patch-loader_CMakeLists.txt head/graphics/vulkan-loader/files/patch-loader_loader.c head/graphics/vulkan-loader/files/patch-loader_vk__loader__platform.h head/graphics/vulkan-loader/pkg-descr head/graphics/vulkan-loader/pkg-plist Thanks. Landed. Renaming is slated for later. Bringing other Vulkan consumers in the tree is more important. |