3 Commits

Author SHA256 Message Date
0a1cf04982 Accepting request 1191627 from multimedia:libs
OBS-URL: https://build.opensuse.org/request/show/1191627
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libcdio?expand=0&rev=52
2024-08-07 04:10:04 +00:00
d12f13041f Accepting request 1191596 from home:fkastl:gcc14
- Amend the last changelog entry to explicitly mention the new
  c99.patch file

OBS-URL: https://build.opensuse.org/request/show/1191596
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/libcdio?expand=0&rev=76
2024-08-05 09:09:27 +00:00
d98b010a27 Accepting request 1190935 from home:fkastl:gcc14
- Add a patch fixing implicit declaration of a function error so
  that the 32bit version of this package can be built with GCC 14.

If the request is ok, please forward it to factory soon so that it
is ready when the default compiler is switched.

OBS-URL: https://build.opensuse.org/request/show/1190935
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/libcdio?expand=0&rev=75
2024-08-01 12:32:54 +00:00
5 changed files with 103 additions and 2 deletions

87
c99.patch Normal file
View File

@@ -0,0 +1,87 @@
From 79a15b760e0b5e81b29953acada3a963c3f8eba9 Mon Sep 17 00:00:00 2001
From: Alfred Wingate <parona@protonmail.com>
Date: Mon, 20 May 2024 22:02:08 +0300
Subject: [PATCH] Do not use LFS shims, rely on _FILE_OFFSET_BITS=64
See https://savannah.gnu.org/bugs/?65751 and https://bugs.gentoo.org/918988
Setting _FILE_OFFSET_BITS=64 is enough to get the LFS interface,
using LFS shims is unnecessary on 64-bit systems and they may
not be available on 32-bit systems on glibc.
Signed-off-by: Alfred Wingate <parona@protonmail.com>
---
configure.ac | 8 ++++----
lib/driver/_cdio_generic.c | 12 +-----------
lib/driver/_cdio_stdio.c | 6 +-----
3 files changed, 6 insertions(+), 20 deletions(-)
diff --git a/configure.ac b/configure.ac
index 0399a718..5ea300fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -547,10 +547,10 @@ AC_DEFINE_UNQUOTED(LIBCDIO_SOURCE_PATH, "$LIBCDIO_SOURCE_PATH",
[Full path to libcdio top_sourcedir.])
AC_SUBST(LIBCDIO_SOURCE_PATH)
-AC_CHECK_FUNCS( [chdir drand48 fseeko fseeko64 ftruncate geteuid getgid \
- getuid getpwuid gettimeofday lseek64 lstat memcpy memset mkstemp rand \
- seteuid setegid snprintf setenv strndup unsetenv tzset sleep \
- _stati64 usleep vsnprintf readlink realpath gmtime_r localtime_r] )
+AC_CHECK_FUNCS( [chdir drand48 fseeko ftruncate geteuid getgid getuid \
+ getpwuid gettimeofday lstat memcpy memset mkstemp rand seteuid \
+ setegid snprintf setenv strndup unsetenv tzset sleep _stati64 \
+ usleep vsnprintf readlink realpath gmtime_r localtime_r] )
# check for timegm() support
AC_CHECK_FUNC(timegm, AC_DEFINE(HAVE_TIMEGM,1,
diff --git a/lib/driver/_cdio_generic.c b/lib/driver/_cdio_generic.c
index 4a7fcadf..f5c8c402 100644
--- a/lib/driver/_cdio_generic.c
+++ b/lib/driver/_cdio_generic.c
@@ -55,16 +55,6 @@
#define PATH_MAX 4096
#endif
-/* If available and LFS is enabled, try to use lseek64 */
-#if defined(HAVE_LSEEK64) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-#if defined(_MSC_VER)
-#include <io.h>
-#endif
-#define CDIO_LSEEK lseek64
-#else
-#define CDIO_LSEEK lseek
-#endif
-
/*!
Eject media -- there's nothing to do here. We always return -2.
Should we also free resources?
@@ -170,7 +160,7 @@ off_t
cdio_generic_lseek (void *user_data, off_t offset, int whence)
{
generic_img_private_t *p_env = user_data;
- return CDIO_LSEEK(p_env->fd, offset, whence);
+ return lseek(p_env->fd, offset, whence);
}
/*!
diff --git a/lib/driver/_cdio_stdio.c b/lib/driver/_cdio_stdio.c
index 1d46b156..c26a35d0 100644
--- a/lib/driver/_cdio_stdio.c
+++ b/lib/driver/_cdio_stdio.c
@@ -47,11 +47,7 @@
#include "_cdio_stdio.h"
#include "cdio_assert.h"
-/* On 32 bit platforms, fseek can only access streams of 2 GB or less.
- Prefer fseeko/fseeko64, that take a 64 bit offset when LFS is enabled */
-#if defined(HAVE_FSEEKO64) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
-#define CDIO_FSEEK fseeko64
-#elif defined(HAVE_FSEEKO)
+#if defined(HAVE_FSEEKO)
#define CDIO_FSEEK fseeko
#else
#define CDIO_FSEEK fseek
--
2.45.1

View File

@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Aug 1 09:26:39 UTC 2024 - Filip Kastl <filip.kastl@suse.com>
- Add c99.patch fixing implicit declaration of a function error so
that the 32bit version of this package can be built with GCC 14.
-------------------------------------------------------------------
Thu Feb 29 15:42:28 UTC 2024 - pgajdos@suse.com

View File

@@ -28,6 +28,7 @@ Source0: https://ftp.gnu.org/gnu/libcdio/libcdio-%{version}.tar.bz2
Source1: https://ftp.gnu.org/gnu/libcdio/libcdio-%{version}.tar.bz2.sig
Source2: libcdio.keyring
Source4: baselibs.conf
Patch0: c99.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: help2man

View File

@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Aug 1 09:17:31 UTC 2024 - Filip Kastl <filip.kastl@suse.com>
- Add c99.patch fixing implicit declaration of a function error so
that the 32bit version of this package can be built with GCC 14.
-------------------------------------------------------------------
Thu Feb 29 15:42:28 UTC 2024 - pgajdos@suse.com

View File

@@ -33,6 +33,7 @@ Source1: https://ftp.gnu.org/gnu/libcdio/%{name}-%{version}.tar.bz2.sig
Source2: %{name}.keyring
Source3: baselibs.conf
Patch0: fix-undefined-behavior-in-readlink.patch
Patch1: c99.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: help2man
@@ -43,7 +44,7 @@ BuildRequires: pkgconfig
BuildRequires: popt-devel
BuildRequires: pkgconfig(libcddb)
Requires(post): %{install_info_prereq}
Requires(preun):%{install_info_prereq}
Requires(preun): %{install_info_prereq}
%description
The libcdio package contains libraries for CD-ROM and CD image
@@ -105,7 +106,7 @@ Requires: %{iso9660_name} = %{version}
Requires: %{iso9660pp_name} = %{version}
Requires: %{udf_name} = %{version}
Requires(post): %{install_info_prereq}
Requires(preun):%{install_info_prereq}
Requires(preun): %{install_info_prereq}
%description devel
The libcdio package contains libraries for CD-ROM and CD image