Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libcec for openSUSE:Factory checked in at 2026-08-04 21:36:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libcec (Old) and /work/SRC/openSUSE:Factory/.libcec.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libcec" Tue Aug 4 21:36:41 2026 rev:20 rq:1369366 version:8.1.4 Changes: -------- --- /work/SRC/openSUSE:Factory/libcec/libcec.changes 2026-08-01 18:37:54.785558038 +0200 +++ /work/SRC/openSUSE:Factory/.libcec.new.16738/libcec.changes 2026-08-04 21:39:08.042060877 +0200 @@ -1,0 +2,9 @@ +Tue Aug 4 05:37:28 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 8.1.4: + * Windows-only release: the Windows install tree now follows + GNUInstallDirs, and the static library no longer overwrites the + DLL import library. There are no library or protocol changes, + so nothing changes for the Linux build + +------------------------------------------------------------------- Old: ---- libcec-8.1.3.tar.gz New: ---- libcec-8.1.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libcec.spec ++++++ --- /var/tmp/diff_new_pack.ywfoSF/_old 2026-08-04 21:39:08.542078368 +0200 +++ /var/tmp/diff_new_pack.ywfoSF/_new 2026-08-04 21:39:08.542078368 +0200 @@ -21,7 +21,7 @@ %define libname %{name}%{sover} %bcond_with enable_rpi_build Name: libcec -Version: 8.1.3 +Version: 8.1.4 Release: 0 Summary: Library to control devices with TV remote control via HDMI License: GPL-2.0-or-later ++++++ libcec-8.1.3.tar.gz -> libcec-8.1.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/CLAUDE.md new/libcec-libcec-8.1.4/CLAUDE.md --- old/libcec-libcec-8.1.3/CLAUDE.md 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/CLAUDE.md 2026-08-03 19:46:07.000000000 +0200 @@ -55,7 +55,7 @@ python windows\create-installer.py -vs # generate Visual Studio project files for development ``` -Useful flags: `-a {x64,x86,arm,arm64}` (default x64), `-m {Release,Debug,RelWithDebInfo}` (default Release), `-t <toolchain>` (e.g. `2019c`, `2022`, `2026c`), `-nc` (no clean / incremental), `-ne` (skip EventGhost plugin), `-ni` (no installer). Build artifacts land in `build\<target>\<arch>\`. The orchestrator's structure is in `windows/toolchain.py` (toolchain/arch enums) and `windows/mixins.py` / `windows/pathbuilder.py` (helpers). +Useful flags: `-a {x64,x86,arm,arm64}` (default x64), `-m {Release,Debug,RelWithDebInfo}` (default Release), `-t <toolchain>` (e.g. `2019c`, `2022`, `2026c`), `-nc` (no clean / incremental), `-ne` (skip EventGhost plugin), `-ni` (no installer). Build artifacts land in `build\<target>\<arch>\`, laid out per GNUInstallDirs like every other platform: `bin\` (cec.dll, cec-client.exe, cecc-client.exe, cec.pdb), `lib\` (the import library `cec.lib`, plus `cec-static.lib` and `cmake\libcec\`), `include\libcec\`. The NSIS scripts take their payload from those subdirectories; what the *installer* then lays down under `Program Files` is unchanged and still flat. Two things to keep in mind: the DLL's import library and the static library are both `cec.lib` by default, so the static target is renamed `cec-static` on Windows to stop it overwriting the import library in the build **and** install trees; and the Windows layout used to be flat (everything in the prefix root), which is what downstrea m consumers such as Kodi's `FindCEC.cmake` had to patch around — keep it GNUInstallDirs-conformant so they don't have to. The orchestrator's structure is in `windows/toolchain.py` (toolchain/arch enums) and `windows/mixins.py` / `windows/pathbuilder.py` (helpers). **Code signing** is Azure Artifact Signing (formerly Trusted Signing), driven by `windows/codesigner.py` and enabled by the presence of `AZURE_SIGNING_JSON` — the `/dmdf` metadata blob holding Endpoint, CodeSigningAccountName and CertificateProfileName. The dlib comes from the `Microsoft.ArtifactSigning.Client` NuGet package, found by globbing `C:\jenkins-deps\Microsoft.ArtifactSigning.Client*` (override with `AZURE_SIGNING_DLIB`), and it is native x64 so all signing goes through the x64 `signtool.exe`. Credentials are read from `AZURE_TENANT_ID`/`AZURE_CLIENT_ID`/`AZURE_CLIENT_SECRET` in the environment by the Azure SDK; nothing is stored in the repo. `create-installer.py` signs the payload before makensis packages it and the installer afterwards, and writes `support/private/sign-binary.cmd` (a gitignored path) that `project/libCEC.nsi` already looks for to sign the uninstaller. Without `AZURE_SIGNING_JSON` the build says so and produces unsigned output. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/CMakeLists.txt new/libcec-libcec-8.1.4/CMakeLists.txt --- old/libcec-libcec-8.1.3/CMakeLists.txt 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/CMakeLists.txt 2026-08-03 19:46:07.000000000 +0200 @@ -3,7 +3,7 @@ set(LIBCEC_VERSION_MAJOR 8) set(LIBCEC_VERSION_MINOR 1) -set(LIBCEC_VERSION_PATCH 3) +set(LIBCEC_VERSION_PATCH 4) if(NOT WIN32) # set here rather than in CheckPlatformSupport.cmake, which only gets included diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/debian/changelog.in new/libcec-libcec-8.1.4/debian/changelog.in --- old/libcec-libcec-8.1.3/debian/changelog.in 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/debian/changelog.in 2026-08-03 19:46:07.000000000 +0200 @@ -1,3 +1,11 @@ +libcec (8.1.4.1~#DIST#) #DIST#; urgency=medium + + [ Lars Op den Kamp ] + * fixed: use the GNUInstallDirs layout on Windows - cec.dll, the client executables and the pdb in bin/, the import library in lib/ - instead of dropping them in the install prefix root, so consumers no longer need to patch libCEC's cmake files to build against it + * fixed: name the Windows static library cec-static, so it no longer overwrites the DLL's import library of the same name in the build and install trees, which left consumers linking libCEC statically or failing on unresolved __imp_libcec_* symbols + + -- Lars Op den Kamp <[email protected]> Mon, 03 Aug 2026 19:45:18 +0200 + libcec (8.1.3.1~#DIST#) #DIST#; urgency=medium [ Lars Op den Kamp ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/docs/README.windows.md new/libcec-libcec-8.1.4/docs/README.windows.md --- old/libcec-libcec-8.1.3/docs/README.windows.md 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/docs/README.windows.md 2026-08-03 19:46:07.000000000 +0200 @@ -30,7 +30,7 @@ ``` cd src\nodejs set LIBCEC_INCLUDE_DIR=..\..\include -set LIBCEC_LIB_DIR=..\..\build\Release\x64 +set LIBCEC_LIB_DIR=..\..\build\Release\x64\lib npm install ``` `create-installer.py` does exactly this and stages the result (for x64 builds diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/project/nsis/libcec-pdb.nsh new/libcec-libcec-8.1.4/project/nsis/libcec-pdb.nsh --- old/libcec-libcec-8.1.3/project/nsis/libcec-pdb.nsh 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/project/nsis/libcec-pdb.nsh 2026-08-03 19:46:07.000000000 +0200 @@ -3,7 +3,7 @@ SectionIn 1 SetOutPath "$INSTDIR" - File "${BINARY_SOURCE_DIR}\cec.pdb" + File "${BINARY_SOURCE_DIR}\bin\cec.pdb" SetOutPath "$INSTDIR\net8.0" File /nonfatal "${BINARY_SOURCE_DIR}\net8.0\cec-tray.pdb" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/project/nsis/nodejs.nsh new/libcec-libcec-8.1.4/project/nsis/nodejs.nsh --- old/libcec-libcec-8.1.3/project/nsis/nodejs.nsh 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/project/nsis/nodejs.nsh 2026-08-03 19:46:07.000000000 +0200 @@ -7,7 +7,7 @@ ; its own directory without the install dir being on PATH. SetOutPath "$INSTDIR\nodejs\build\Release" File "${BINARY_SOURCE_DIR}\nodejs\build\Release\cec_native.node" - File "${BINARY_SOURCE_DIR}\cec.dll" + File "${BINARY_SOURCE_DIR}\bin\cec.dll" SetOutPath "$INSTDIR\nodejs\lib" File "${BINARY_SOURCE_DIR}\nodejs\lib\*.js" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/project/nsis/sections.nsh new/libcec-libcec-8.1.4/project/nsis/sections.nsh --- old/libcec-libcec-8.1.3/project/nsis/sections.nsh 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/project/nsis/sections.nsh 2026-08-03 19:46:07.000000000 +0200 @@ -51,7 +51,7 @@ File "..\docs\README.windows.md" File "..\support\windows\tv_on.cmd" File "..\support\windows\tv_off.cmd" - File "${BINARY_SOURCE_DIR}\cec.dll" + File "${BINARY_SOURCE_DIR}\bin\cec.dll" File "/oname=p8-logo.ico" "favicon.ico" ; Copy the headers @@ -106,7 +106,7 @@ ; Copy binaries SetOutPath "$INSTDIR\python\cec" - File "${BINARY_SOURCE_DIR}\cec.dll" + File "${BINARY_SOURCE_DIR}\bin\cec.dll" File "${BINARY_SOURCE_DIR}\python\cec\_pycec.pyd" File "${BINARY_SOURCE_DIR}\python\cec\cec.py" !ifdef NSIS_X86 @@ -122,7 +122,7 @@ ; Copy binaries (pure C# LibCecSharp; no Ijwhost.dll / runtimeconfig for the library) SetOutPath "$INSTDIR\net8.0" - File "${BINARY_SOURCE_DIR}\cec.dll" + File "${BINARY_SOURCE_DIR}\bin\cec.dll" File "${BINARY_SOURCE_DIR}\net8.0\LibCecSharp.deps.json" File "${BINARY_SOURCE_DIR}\net8.0\LibCecSharp.dll" File "${BINARY_SOURCE_DIR}\net8.0\LibCecSharp.xml" @@ -145,8 +145,8 @@ ; Copy binaries SetOutPath "$INSTDIR" - File "${BINARY_SOURCE_DIR}\cec-client.exe" - File "${BINARY_SOURCE_DIR}\cecc-client.exe" + File "${BINARY_SOURCE_DIR}\bin\cec-client.exe" + File "${BINARY_SOURCE_DIR}\bin\cecc-client.exe" ; Start menu item !insertmacro MUI_STARTMENU_WRITE_BEGIN Application diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/src/cec-client/CMakeLists.txt new/libcec-libcec-8.1.4/src/cec-client/CMakeLists.txt --- old/libcec-libcec-8.1.3/src/cec-client/CMakeLists.txt 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/src/cec-client/CMakeLists.txt 2026-08-03 19:46:07.000000000 +0200 @@ -76,10 +76,7 @@ # write env.h CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/env.h.in ${CMAKE_CURRENT_SOURCE_DIR}/env.h) -if (WIN32) - install(TARGETS cec-client - DESTINATION .) -else() - install(TARGETS cec-client - DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() +# bin/ on every platform: Windows used to drop executables in the prefix root, +# which left the install tree half GNUInstallDirs and half flat +install(TARGETS cec-client + DESTINATION ${CMAKE_INSTALL_BINDIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/src/cecc-client/CMakeLists.txt new/libcec-libcec-8.1.4/src/cecc-client/CMakeLists.txt --- old/libcec-libcec-8.1.3/src/cecc-client/CMakeLists.txt 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/src/cecc-client/CMakeLists.txt 2026-08-03 19:46:07.000000000 +0200 @@ -45,10 +45,6 @@ # write env.h CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/env.h.in ${CMAKE_CURRENT_SOURCE_DIR}/env.h) -if (WIN32) - install(TARGETS cecc-client - DESTINATION .) -else() - install(TARGETS cecc-client - DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() +# bin/ on every platform, as for cec-client +install(TARGETS cecc-client + DESTINATION ${CMAKE_INSTALL_BINDIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/src/libcec/CMakeLists.txt new/libcec-libcec-8.1.4/src/libcec/CMakeLists.txt --- old/libcec-libcec-8.1.3/src/libcec/CMakeLists.txt 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/src/libcec/CMakeLists.txt 2026-08-03 19:46:07.000000000 +0200 @@ -213,11 +213,21 @@ if(NOT DISABLE_STATIC) + # Windows names the DLL's import library cec.lib too, so a static library + # called cec overwrites it - in the build tree and again on install, with + # whichever target links last winning. Anything then linking the install tree + # gets unresolved __imp_libcec_* symbols, or silently links libCEC statically. + # Unix has no such clash: libcec.a next to libcec.so. + set(CEC_STATIC_NAME cec) + if(WIN32) + set(CEC_STATIC_NAME cec-static) + endif() + add_library(cec-static STATIC $<TARGET_OBJECTS:libobj>) set_target_properties(cec-static PROPERTIES VERSION ${LIBCEC_VERSION_MAJOR}.${LIBCEC_VERSION_MINOR}.${LIBCEC_VERSION_PATCH} SOVERSION ${LIBCEC_VERSION_MAJOR} - OUTPUT_NAME cec) + OUTPUT_NAME ${CEC_STATIC_NAME}) target_link_libraries(cec-static ${cec_depends}) endif() @@ -248,10 +258,13 @@ list(APPEND CEC_INSTALL_TARGETS cec-static) endif() +# ARCHIVE is its own destination rather than LIB_DESTINATION: on Windows that is +# bin/, which is where the .dll belongs but not the import library. Everywhere +# else the two are the same value, so this only moves the Windows .lib. install(TARGETS ${CEC_INSTALL_TARGETS} EXPORT libcec RUNTIME DESTINATION ${LIB_DESTINATION} - ARCHIVE DESTINATION ${LIB_DESTINATION} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${LIB_DESTINATION}) include(CMakePackageConfigHelpers) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/src/libcec/cmake/CheckPlatformSupport.cmake new/libcec-libcec-8.1.4/src/libcec/cmake/CheckPlatformSupport.cmake --- old/libcec-libcec-8.1.3/src/libcec/cmake/CheckPlatformSupport.cmake 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/src/libcec/cmake/CheckPlatformSupport.cmake 2026-08-03 19:46:07.000000000 +0200 @@ -40,7 +40,11 @@ if(WIN32) # Windows add_definitions(-DTARGET_WINDOWS -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -D_WINSOCKAPI_) - set(LIB_DESTINATION ".") + # cec.dll goes to bin/, matching the include/ and lib/cmake/libcec the rest of + # the install already uses. It used to land in the prefix root, which every + # consumer expecting the GNUInstallDirs layout had to patch around. + # GNUInstallDirs is included before this file, so this is "bin" by default. + set(LIB_DESTINATION "${CMAKE_INSTALL_BINDIR}") set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/src/nodejs/README.md new/libcec-libcec-8.1.4/src/nodejs/README.md --- old/libcec-libcec-8.1.3/src/nodejs/README.md 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/src/nodejs/README.md 2026-08-03 19:46:07.000000000 +0200 @@ -38,7 +38,7 @@ ``` set LIBCEC_INCLUDE_DIR=..\..\include -set LIBCEC_LIB_DIR=..\..\build\Release\x64 +set LIBCEC_LIB_DIR=..\..\build\Release\x64\lib npm install ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcec-libcec-8.1.3/windows/create-installer.py new/libcec-libcec-8.1.4/windows/create-installer.py --- old/libcec-libcec-8.1.3/windows/create-installer.py 2026-07-31 17:39:37.000000000 +0200 +++ new/libcec-libcec-8.1.4/windows/create-installer.py 2026-08-03 19:46:07.000000000 +0200 @@ -268,7 +268,10 @@ @property def libfile_name(self) -> str: - return 'cec.lib' if self.staticlib else 'cec.dll' + # the install tree follows GNUInstallDirs: cec.dll in bin/, the import + # library in lib/. The static library is cec-static.lib, so it cannot + # overwrite the DLL's import library of the same name. + return 'lib/cec-static.lib' if self.staticlib else 'bin/cec.dll' @property def libfile(self) -> PathBuilder: @@ -415,9 +418,10 @@ node = shutil.which('node') gyp = self.src_dir.add('node_modules/node-gyp/bin/node-gyp.js') # the addon includes libCEC's (flat) headers and links cec.lib; point it - # at the repo headers and this build's output dir + # at the repo headers and at this build's lib/, where the import library + # is (the DLL is in bin/, and node-gyp only needs the .lib to link) inc = self.config.repo_dir.add('include') - lib = self.libcec.builder.target_dir + lib = self.libcec.builder.target_dir.add('lib') gyp_arch = self._GYP_ARCH[self.config.architecture] cmd = 'cmd /c "' + \ f'set "LIBCEC_INCLUDE_DIR={inc}" && set "LIBCEC_LIB_DIR={lib}" && ' + \
