Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package maim for openSUSE:Factory checked in at 2026-09-17 15:24:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/maim (Old) and /work/SRC/openSUSE:Factory/.maim.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "maim" Thu Sep 17 15:24:06 2026 rev:10 rq:1378452 version:5.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/maim/maim.changes 2025-06-11 18:35:05.504525131 +0200 +++ /work/SRC/openSUSE:Factory/.maim.new.383539/maim.changes 2026-09-17 15:24:15.344149785 +0200 @@ -1,0 +2,11 @@ +Wed Sep 16 20:25:10 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to 5.8.2: + * Let libjpeg manage screenshot memory + * Write to stdout when the output path is "-" + * Require C++17 (needed for ICU >= 76) and CMake 3.10 + * Stop linking slop against GLX and X11 +- Drop use_cxx17_standard.patch: C++17 is now upstream +- Drop unused gengetopt and pkgconfig(gl) BuildRequires + +------------------------------------------------------------------- Old: ---- maim-5.8.0.tar.gz use_cxx17_standard.patch New: ---- maim-5.8.2.tar.gz ----------(Old B)---------- Old: * Stop linking slop against GLX and X11 - Drop use_cxx17_standard.patch: C++17 is now upstream - Drop unused gengetopt and pkgconfig(gl) BuildRequires ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ maim.spec ++++++ --- /var/tmp/diff_new_pack.kHwznI/_old 2026-09-17 15:24:16.400194113 +0200 +++ /var/tmp/diff_new_pack.kHwznI/_new 2026-09-17 15:24:16.401194155 +0200 @@ -1,7 +1,7 @@ # # spec file for package maim # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,22 +16,18 @@ # -# See also http://en.opensuse.org/openSUSE:Specfile_guidelines Name: maim -Version: 5.8.0 +Version: 5.8.2 Release: 0 Summary: Flexible screenshotting utility License: GPL-3.0-or-later -Group: Productivity/Graphics/Other URL: https://github.com/naelstrof/maim Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: cmake >= 3.7 +BuildRequires: cmake >= 3.10 BuildRequires: gcc-c++ -BuildRequires: gengetopt -BuildRequires: glm-devel BuildRequires: pkgconfig BuildRequires: slop-devel >= 7 -BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(glm) BuildRequires: pkgconfig(icu-uc) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libpng) @@ -40,10 +36,6 @@ BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(zlib) -%if 0%{?suse_version} >= 1600 -# We must use the C++17 standard if we're using ICU >= 75 -Patch0: use_cxx17_standard.patch -%endif %description maim (Make Image) is a utility that takes screenshots of the desktop @@ -51,7 +43,7 @@ utility and performs better in several ways. %prep -%autosetup +%autosetup -p1 %build %cmake ++++++ maim-5.8.0.tar.gz -> maim-5.8.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/CMakeLists.txt new/maim-5.8.2/CMakeLists.txt --- old/maim-5.8.0/CMakeLists.txt 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/CMakeLists.txt 2026-05-28 20:58:56.000000000 +0200 @@ -1,6 +1,6 @@ -cmake_minimum_required( VERSION 3.1.3 ) +cmake_minimum_required( VERSION 3.10 ) -project(maim VERSION 5.8.0 LANGUAGES CXX) +project(maim VERSION 5.8.2 LANGUAGES CXX) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) @@ -38,7 +38,7 @@ find_package( GLM REQUIRED ) set_property(TARGET ${BIN_TARGET} PROPERTY CXX_STANDARD_REQUIRED ON) -set_property(TARGET ${BIN_TARGET} PROPERTY CXX_STANDARD 11) +set_property(TARGET ${BIN_TARGET} PROPERTY CXX_STANDARD 17) set_property(TARGET ${BIN_TARGET} PROPERTY CXX_EXTENSIONS OFF) # Includes @@ -64,20 +64,16 @@ ${XRANDR_LIBRARY} ${JPEG_LIBRARIES} ${XRENDER_LIBRARY} - ${SLOP_LIBRARIES} + ${SLOP_LIBRARY} ${WEBP_LIBRARY} ) -if( ${CMAKE_VERSION} VERSION_LESS 3.7 ) - message( WARNING "CMake version is below 3.7, CMake version >= 3.7 is required for unicode support." ) -else() - find_package(ICU COMPONENTS uc) - set( MAIM_UNICODE TRUE CACHE BOOL "To enable or disable unicode support." ) - if ( MAIM_UNICODE AND ICU_FOUND ) - # ICU is required for old nvidia drivers to work for whatever reason. - add_definitions(-DCXXOPTS_USE_UNICODE) - include_directories( ${ICU_INCLUDE_DIR} ) - target_link_libraries( ${BIN_TARGET} ${ICU_UC_LIBRARIES} ) - endif() +find_package(ICU COMPONENTS uc) +set( MAIM_UNICODE TRUE CACHE BOOL "To enable or disable unicode support." ) +if ( MAIM_UNICODE AND ICU_FOUND ) +# ICU is required for old nvidia drivers to work for whatever reason. + add_definitions(-DCXXOPTS_USE_UNICODE) + include_directories( ${ICU_INCLUDE_DIR} ) + target_link_libraries( ${BIN_TARGET} ${ICU_UC_LIBRARIES} ) endif() install( TARGETS ${BIN_TARGET} DESTINATION "${CMAKE_INSTALL_BINDIR}" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/README.md new/maim-5.8.2/README.md --- old/maim-5.8.0/README.md 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/README.md 2026-05-28 20:58:56.000000000 +0200 @@ -31,7 +31,7 @@ * [OpenBSD: graphics/maim](http://openports.se/graphics/maim) * [CRUX: maim](https://crux.nu/portdb/?a=search&q=maim) * [Gentoo: media-gfx/maim](https://packages.gentoo.org/packages/media-gfx/maim) -* [NixOS: maim](https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/graphics/maim/default.nix) +* [NixOS: maim](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/ma/maim/package.nix) * [GNU Guix: maim](https://packages.guix.gnu.org/packages/maim/) * [Ravenports: maim](http://www.ravenports.com/catalog/bucket_B4/maim/standard/) * [Fedora: maim](https://src.fedoraproject.org/rpms/maim) @@ -39,7 +39,12 @@ * [Alpine Linux: maim](https://pkgs.alpinelinux.org/packages?name=maim&branch=edge&repo=&arch=&maintainer=) * Please make a package for maim on your favorite system, and make a pull request to add it to this list. -### Install using CMake (Requires CMake, git, libXrender, libXfixes, libGLM, libxcomposite, libxrandr, libxext, GLEW) +### Install using CMake +#### Requires these at build-time: +CMake, glm, x11proto + +#### Requires these at build- and runtime: +libjpeg-turbo, libpng, libwebp, libX11, libXcomposite, libXext, libXfixes, libXrandr, libXrender ```bash git clone https://github.com/naelstrof/slop.git cd slop diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/modules/FindGLX.cmake new/maim-5.8.2/modules/FindGLX.cmake --- old/maim-5.8.0/modules/FindGLX.cmake 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/modules/FindGLX.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,44 +0,0 @@ -# Try to find GLX. Once done, this will define: -# -# GLX_FOUND - variable which returns the result of the search -# GLX_INCLUDE_DIRS - list of include directories -# GLX_LIBRARIES - options for the linker - -#============================================================================= -# Copyright 2012 Benjamin Eikel -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) - -find_package(PkgConfig) -pkg_check_modules(PC_GLX QUIET glx) - -find_path(GLX_INCLUDE_DIR - GL/glx.h - HINTS ${PC_GLX_INCLUDEDIR} ${PC_GLX_INCLUDE_DIRS} -) -find_library(GLX_LIBRARY - GL - HINTS ${PC_GLX_LIBDIR} ${PC_GLX_LIBRARY_DIRS} -) - -set(GLX_INCLUDE_DIRS ${GLX_INCLUDE_DIR}) -set(GLX_LIBRARIES ${GLX_LIBRARY}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GLX DEFAULT_MSG - GLX_INCLUDE_DIR - GLX_LIBRARY -) - -mark_as_advanced( - GLX_INCLUDE_DIR - GLX_LIBRARY -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/modules/FindSLOP.cmake new/maim-5.8.2/modules/FindSLOP.cmake --- old/maim-5.8.0/modules/FindSLOP.cmake 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/modules/FindSLOP.cmake 2026-05-28 20:58:56.000000000 +0200 @@ -13,18 +13,11 @@ PATH_SUFFIXES /usr/include /include DOC "The SLOP include directory" ) -find_library( SLOP_LIBRARIES +find_library( SLOP_LIBRARY NAMES slopy slopy.so slop slop.so PATHS /usr/lib /lib DOC "The SLOP library" ) -FIND_PACKAGE(X11 REQUIRED) -FIND_PACKAGE(GLX REQUIRED) -list(APPEND SLOP_LIBRARIES - ${X11_LIBRARIES} - ${GLX_LIBRARY} -) - if( SLOP_INCLUDE_DIR AND SLOP_LIBRARY ) set( SLOP_FOUND 1 ) else() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/src/image.cpp new/maim-5.8.2/src/image.cpp --- old/maim-5.8.0/src/image.cpp 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/src/image.cpp 2026-05-28 20:58:56.000000000 +0200 @@ -144,41 +144,19 @@ png_destroy_write_struct(&png, &info); } -void init_buffer(jpeg_compress_struct* cinfo) {} - -/* what to do when the buffer is full; this should almost never - * happen since we allocated our buffer to be big to start with - */ -boolean empty_buffer(jpeg_compress_struct* cinfo) { - return TRUE; -} - -/* finalize the buffer and do any cleanup stuff */ -void term_buffer(jpeg_compress_struct* cinfo) {} - void ARGBImage::writeJPEG( std::ostream& streamout, int quality ) { if ( channels != 3 ) { throw new std::runtime_error( "JPEG tried to save image with more than 3 channels." ); } struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; - struct jpeg_destination_mgr dmgr; - - /* create our in-memory output buffer to hold the jpeg */ - JOCTET * out_buffer = new JOCTET[width * height *3]; - - /* here is the magic */ - dmgr.init_destination = init_buffer; - dmgr.empty_output_buffer = empty_buffer; - dmgr.term_destination = term_buffer; - dmgr.next_output_byte = out_buffer; - dmgr.free_in_buffer = width * height *3; cinfo.err = jpeg_std_error(&jerr); jpeg_create_compress(&cinfo); - /* make sure we tell it about our manager */ - cinfo.dest = &dmgr; + unsigned char* out_buffer = NULL; + unsigned long out_size = 0; + jpeg_mem_dest(&cinfo, &out_buffer, &out_size); cinfo.image_width = width; cinfo.image_height = height; @@ -200,8 +178,9 @@ } jpeg_finish_compress(&cinfo); - streamout.write( (const char*)out_buffer, cinfo.dest->next_output_byte - out_buffer ); - delete[] out_buffer; + streamout.write( (const char*)out_buffer, out_size ); + free( out_buffer ); + jpeg_destroy_compress( &cinfo ); } void ARGBImage::writeBMP( std::ostream& streamout ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/maim-5.8.0/src/main.cpp new/maim-5.8.2/src/main.cpp --- old/maim-5.8.0/src/main.cpp 2024-04-10 02:30:19.000000000 +0200 +++ new/maim-5.8.2/src/main.cpp 2026-05-28 20:58:56.000000000 +0200 @@ -522,7 +522,7 @@ } std::ostream* out; - if ( maimOptions->savepathGiven ) { + if ( maimOptions->savepathGiven && maimOptions->savepath != "-" ) { std::ofstream* file = new std::ofstream(); file->open(maimOptions->savepath.c_str()); if ( !file->is_open() ) { @@ -593,7 +593,7 @@ XDestroyImage( image ); - if ( maimOptions->savepathGiven ) { + if ( maimOptions->savepathGiven && maimOptions->savepath != "-" ) { std::ofstream* file = (std::ofstream*)out; file->close(); delete (std::ofstream*)out;
