Package: release.debian.org
Severity: normal
X-Debbugs-Cc: qzx...@packages.debian.org
Control: affects -1 + src:qzxing
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package qzxing

During tests it turned out that the installation of qml-module-qzxing in
fact breaks the lomiri-barcodereader-app (a startup mode of
lomiri-camera-app). After some deeper dive into the QML integration of
qzxing into lomiri-barcodereader-app/lomiri-camera-app it turned out
that lomiri-camera-app works well in barcode reader mode if
qml-module-qzxing is not installed. The functionality is compiled in
without the need of loading a QML module at runtime.

The qml-module-qzxing bin:pkg is not used anywhere else anymore (since
lomiri-camera-app 4.0.8+dfsg-3), so dropping it from trixie via this update
should not interfere with other packages.

[ Reason ]
Fix broken barcode reader app mode of lomiri-camera-app.

[ Impact ]
Lomiri's Barcode Reader app will stay broken.

[ Tests ]
Runtime tests on a Debian trixie machine with a webcam.

[ Risks ]
None.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
This will go together with an unblock request for lomiri-camera-app (in prep).

unblock qzxing/3.3.0+dfsg-7
diff -Nru qzxing-3.3.0+dfsg/debian/changelog qzxing-3.3.0+dfsg/debian/changelog
--- qzxing-3.3.0+dfsg/debian/changelog  2024-08-14 10:34:26.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/changelog  2025-05-10 16:25:56.000000000 +0200
@@ -1,3 +1,23 @@
+qzxing (3.3.0+dfsg-7) unstable; urgency=medium
+
+  * debian/patches:
+    + Update 1001_build-as-shared-lib.patch. Drop files related to 
to-be-removed
+      qml-module-qzxing bin:pkg.
+    + Rebase 1002_cmake-pkg-config-export.patch.
+  * debian/:
+    + Drop bin:pkg qml-module-qzxing. Not needed, and in fact breaking 
consumers
+      of the qzxing library when using it as QQuickImageProvider. (See:
+      #1092953) and upload of lomiri-camera-app 4.0.8+dfsg-3.
+  * debian/control:
+    + Assure uninstallation of bin:pkg qml-module-qzxing from previous versions
+      of qzxing. The formerly shipped QML module breaks consumers of qzxing 
when
+      used as QQuickImageProvider in QML applications.
+    + Bump Standards-Version: to 4.7.2. No changes needed.
+  * debian/copyright:
+    + Update copyright attributions for debian/.
+
+ -- Mike Gabriel <sunwea...@debian.org>  Sat, 10 May 2025 16:25:56 +0200
+
 qzxing (3.3.0+dfsg-6) unstable; urgency=medium
 
   [ Guido Berhoerster ]
diff -Nru qzxing-3.3.0+dfsg/debian/control qzxing-3.3.0+dfsg/debian/control
--- qzxing-3.3.0+dfsg/debian/control    2024-08-14 10:33:56.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/control    2025-05-10 16:25:56.000000000 +0200
@@ -14,7 +14,7 @@
                qtmultimedia5-dev,
                qtquickcontrols2-5-dev,
                pkg-kde-tools,
-Standards-Version: 4.6.1
+Standards-Version: 4.7.2
 Rules-Requires-Root: no
 Homepage: https://github.com/ftylitak/qzxing
 Vcs-Git: https://salsa.debian.org/ubports-team/qzxing.git
@@ -25,6 +25,8 @@
 Multi-Arch: same
 Depends: ${misc:Depends},
          ${shlibs:Depends},
+Breaks: qml-module-qzxing,
+Replaces: qml-module-qzxing,
 Description: QZXing library
  Qt wrapper for the ZXing 1D/2D barcode image decoder.
  .
@@ -81,34 +83,3 @@
  .
  This package contains the development header files of the QZXing shared
  library.
-
-Package: qml-module-qzxing
-Architecture: any
-Multi-Arch: same
-Depends: ${misc:Depends},
-         qml-module-qtquick2,
-         libqzxing3 (= ${binary:Version}),
-Description: QZXing QML/QtQuick module
- Qt wrapper for the ZXing 1D/2D barcode image decoder.
- .
- Supports barcode decoding for the following types:
- .
-    UPC-A
-    UPC-E
-    EAN-8
-    EAN-13
-    ITF
-    Code 39
-    Code 93
-    Code 128 (GS1)
-    Codabar
-    QR Code
-    Data Matrix
-    Aztec (beta)
-    PDF 417
- .
- Supports barcode encoding for the following types:
- .
-   QR Code
- .
- This package contains the QML module for QZXing.
diff -Nru qzxing-3.3.0+dfsg/debian/copyright qzxing-3.3.0+dfsg/debian/copyright
--- qzxing-3.3.0+dfsg/debian/copyright  2022-10-12 22:43:03.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/copyright  2025-05-10 16:25:56.000000000 +0200
@@ -481,7 +481,7 @@
 
 Files: debian/*
 Copyright: 2013, David Planella <david.plane...@ubuntu.com>
-  2022, Mike Gabriel <mike.gabr...@das-netzwerkteam.de
+  2022-2025, Mike Gabriel <mike.gabr...@das-netzwerkteam.de
 License: Apache-2.0 or BSD-3-clause or Expat
 
 License: Apache-2.0
diff -Nru qzxing-3.3.0+dfsg/debian/patches/1001_build-as-shared-lib.patch 
qzxing-3.3.0+dfsg/debian/patches/1001_build-as-shared-lib.patch
--- qzxing-3.3.0+dfsg/debian/patches/1001_build-as-shared-lib.patch     
2024-08-14 10:34:26.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/patches/1001_build-as-shared-lib.patch     
2025-05-10 16:20:05.000000000 +0200
@@ -96,23 +96,7 @@
  
  if(WIN32)
      add_subdirectory(zxing/win32)
-@@ -78,6 +117,15 @@
-         Qt5::Quick
-         Qt5::QuickControls2)
-     target_compile_definitions(qzxing PUBLIC -DQZXING_QML)
-+
-+    if(BUILD_SHARED)
-+        # copy qmldir file to build dir so QML unit tests can use it to 
import the plugin
-+        configure_file(
-+            qmldir.in
-+            qmldir
-+        )
-+    endif()
-+
- endif(QZXING_USE_QML)
- 
- if(QZXING_USE_ENCODER)
-@@ -108,9 +156,10 @@
+@@ -108,9 +147,10 @@
      target_compile_definitions(qzxing PRIVATE -DENABLE_DECODER_1D_BARCODES)
  endif()
  
@@ -126,7 +110,7 @@
  
  # Target includes
  target_include_directories(qzxing
-@@ -120,7 +169,57 @@
+@@ -120,7 +160,23 @@
          zxing/win32/zxing
          zxing/zxing
          zxing/bigint
@@ -151,43 +135,4 @@
 +        FILES ${PUBLIC_HEADERS} DESTINATION 
"${CMAKE_INSTALL_INCLUDEDIR}/qzxing"
 +    )
 +
-+    # Qt5's cmake does not export QT_IMPORTS_DIR, lets query qmake on our own 
for now
-+    get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
-+    function(QUERY_QMAKE VAR RESULT)
-+      exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE 
return_code OUTPUT_VARIABLE output )
-+      if(NOT return_code)
-+        file(TO_CMAKE_PATH "${output}" output)
-+        set(${RESULT} ${output} PARENT_SCOPE)
-+      endif(NOT return_code)
-+    endfunction(QUERY_QMAKE)
-+    query_qmake(QT_INSTALL_QML QT_IMPORTS_DIR)
-+
-+    if(QZXING_USE_QML)
-+        set(PLUGIN_DIR ${QT_IMPORTS_DIR}/QZXing)
-+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qmldir DESTINATION 
${PLUGIN_DIR})
-+
-+        set(CHECK_DEFAULT_PATH "")
-+        if (EXISTS "/etc/debian_version")
-+            set(CHECK_DEFAULT_PATH "NO_DEFAULT_PATH")
-+        endif()
-+        find_program(QML_PLUGIN_DUMP qmlplugindump REQUIRED
-+                         PATHS /usr/lib/qt5/bin
-+                         ${CHECK_DEFAULT_PATH}
-+        )
-+        add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/plugins.qmltypes
-+            COMMAND ${QML_PLUGIN_DUMP} -noinstantiate -notrelocatable ${URI} 
1.0 ../ > ${CMAKE_CURRENT_BINARY_DIR}/plugins.qmltypes
-+            DEPENDS qzxing
-+            WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
-+        )
-+
-+        add_custom_target(qzxing_generated_files ALL SOURCES 
${CMAKE_CURRENT_BINARY_DIR}/plugins.qmltypes)
-+        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plugins.qmltypes 
DESTINATION ${PLUGIN_DIR})
-+
-+    endif()
-+
 +endif()
---- /dev/null
-+++ b/src/qmldir.in
-@@ -0,0 +1,2 @@
-+module QZXing
-+plugin qzxing @CMAKE_INSTALL_FULL_LIBDIR@
diff -Nru qzxing-3.3.0+dfsg/debian/patches/1002_cmake-pkg-config-export.patch 
qzxing-3.3.0+dfsg/debian/patches/1002_cmake-pkg-config-export.patch
--- qzxing-3.3.0+dfsg/debian/patches/1002_cmake-pkg-config-export.patch 
2024-08-14 10:33:56.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/patches/1002_cmake-pkg-config-export.patch 
2025-05-10 16:25:56.000000000 +0200
@@ -11,8 +11,6 @@
  create mode 100644 src/QZXing.pc.in
  create mode 100644 src/cmake/JoinPaths.cmake
 
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index ce5c834..b3e640d 100644
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
 @@ -1,12 +1,15 @@
@@ -31,7 +29,7 @@
  
      OPTION(QZXING_MULTIMEDIA "" OFF)
      OPTION(QZXING_USE_QML "" OFF)
-@@ -22,7 +25,7 @@ if(BUILD_SHARED)
+@@ -22,7 +25,7 @@
      OPTION(QZXING_USE_DECODER_1D_BARCODES "" OFF)
  
      include (GNUInstallDirs)
@@ -40,7 +38,7 @@
  endif()
  
  find_package(Qt5 COMPONENTS Core REQUIRED)
-@@ -42,6 +45,8 @@ set(PUBLIC_HEADERS
+@@ -42,6 +45,8 @@
      QZXing_global.h
  )
  
@@ -49,7 +47,7 @@
  set(SOURCES
  
      CameraImageWrapper.cpp
-@@ -56,7 +61,7 @@ if(QZXING_MULTIMEDIA)
+@@ -56,7 +61,7 @@
  
      LIST(APPEND SOURCES QZXingFilter.cpp QZXingFilter.h)
      LIST(APPEND PUBLIC_HEADERS QZXingFilter.h)
@@ -58,7 +56,7 @@
  
      SET(QZXING_USE_QML ON)
  
-@@ -65,18 +70,18 @@ endif(QZXING_MULTIMEDIA)
+@@ -65,18 +70,18 @@
  if(QZXING_USE_QML)
      LIST(APPEND SOURCES QZXingImageProvider.cpp QZXingImageProvider.h)
      LIST(APPEND PUBLIC_HEADERS QZXingImageProvider.h)
@@ -80,7 +78,7 @@
          SOVERSION ${SOVERSION_MAJOR}
  )
  else()
-@@ -108,7 +113,6 @@ target_link_libraries(qzxing Qt5::Core Qt5::Gui)
+@@ -108,7 +113,6 @@
  
  if(QZXING_MULTIMEDIA)
      target_link_libraries(qzxing Qt5::Multimedia)
@@ -88,16 +86,8 @@
  endif(QZXING_MULTIMEDIA)
  
  if(QZXING_USE_QML)
-@@ -116,7 +120,6 @@ if(QZXING_USE_QML)
-         Qt5::Svg
-         Qt5::Quick
-         Qt5::QuickControls2)
--    target_compile_definitions(qzxing PUBLIC -DQZXING_QML)
- 
-     if(BUILD_SHARED)
-         # copy qmldir file to build dir so QML unit tests can use it to 
import the plugin
-@@ -128,10 +131,6 @@ if(QZXING_USE_QML)
- 
+@@ -119,10 +123,6 @@
+     target_compile_definitions(qzxing PUBLIC -DQZXING_QML)
  endif(QZXING_USE_QML)
  
 -if(QZXING_USE_ENCODER)
@@ -107,7 +97,7 @@
  if(QZXING_USE_DECODER_QR_CODE)
      target_compile_definitions(qzxing PRIVATE -DENABLE_DECODER_QR_CODE)
  endif()
-@@ -158,9 +157,11 @@ endif()
+@@ -149,9 +149,11 @@
  
  if(!BUILD_SHARED)
      # Change Global Definitions depending on how you want to use the library
@@ -120,7 +110,7 @@
  # Target includes
  target_include_directories(qzxing
    PRIVATE
-@@ -188,6 +189,17 @@ if(BUILD_SHARED)
+@@ -179,4 +181,15 @@
          FILES ${PUBLIC_HEADERS} DESTINATION 
"${CMAKE_INSTALL_INCLUDEDIR}/qzxing"
      )
  
@@ -135,12 +125,7 @@
 +    configure_file(QZXing.pc.in ${CMAKE_CURRENT_BINARY_DIR}/QZXing.pc @ONLY)
 +    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QZXing.pc DESTINATION 
${CMAKE_INSTALL_LIBDIR}/pkgconfig)
 +
-     # Qt5's cmake does not export QT_IMPORTS_DIR, lets query qmake on our own 
for now
-     get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
-     function(QUERY_QMAKE VAR RESULT)
-diff --git a/src/QZXing.pc.in b/src/QZXing.pc.in
-new file mode 100644
-index 0000000..7a13d44
+ endif()
 --- /dev/null
 +++ b/src/QZXing.pc.in
 @@ -0,0 +1,10 @@
@@ -154,9 +139,6 @@
 +Version: @SOVERSION_FULL@
 +Cflags: @PC_DEFINES@ -I${includedir}
 +Libs: -L${libdir} -lqzxing
-diff --git a/src/cmake/JoinPaths.cmake b/src/cmake/JoinPaths.cmake
-new file mode 100644
-index 0000000..c68d91b
 --- /dev/null
 +++ b/src/cmake/JoinPaths.cmake
 @@ -0,0 +1,23 @@
@@ -183,6 +165,3 @@
 +    endforeach()
 +    set(${joined_path} "${temp_path}" PARENT_SCOPE)
 +endfunction()
--- 
-2.44.1
-
diff -Nru qzxing-3.3.0+dfsg/debian/qml-module-qzxing.install 
qzxing-3.3.0+dfsg/debian/qml-module-qzxing.install
--- qzxing-3.3.0+dfsg/debian/qml-module-qzxing.install  2022-10-20 
00:42:17.000000000 +0200
+++ qzxing-3.3.0+dfsg/debian/qml-module-qzxing.install  1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-usr/lib/*/qt5/qml/QZXing/

Reply via email to