1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-18 00:10:04 +00:00

audio/p5-Ogg-Vorbis-Header: unbreak the port's build against Clang 16

write_vorbis() must return an integer, but was returning &PL_sv_undef
in several places vs. zero in other error paths.  Follow the original*
implementation and replace those with zeros as well.

To make hunting potential compiler-related bugs easier in the future,
respect ${CC} and mute one harmless but particularly annoying warning
which clutters the build log way more than does any good.

*) https://www.perlmonks.org/?node_id=200588
This commit is contained in:
Alexey Dokuchaev 2023-09-24 09:24:30 +00:00
parent d4ae0918a3
commit 082c2a3364
3 changed files with 69 additions and 5 deletions

View File

@ -5,18 +5,16 @@ MASTER_SITES= CPAN
PKGNAMEPREFIX= p5-
MAINTAINER= perl@FreeBSD.org
COMMENT= Manipulate / fetch info from Ogg-Vorbis audio files
COMMENT= Fetch/manipulate information from Ogg-Vorbis audio files
WWW= https://metacpan.org/release/Ogg-Vorbis-Header
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/LICENSE.GPL
BROKEN_FreeBSD_14= fails to compile: incompatible pointer to integer conversion returning 'SV *' (aka 'struct sv *')
BUILD_DEPENDS= ${RUN_DEPENDS}
LIB_DEPENDS= libogg.so:audio/libogg \
libvorbis.so:audio/libvorbis
RUN_DEPENDS= p5-Inline>=0:devel/p5-Inline \
RUN_DEPENDS= p5-Inline>=0.44:devel/p5-Inline \
p5-Inline-C>=0:devel/p5-Inline-C
USES= perl5

View File

@ -0,0 +1,66 @@
--- lib/Ogg/Vorbis/Header.pm.orig 2021-01-04 13:38:15 UTC
+++ lib/Ogg/Vorbis/Header.pm
@@ -7,8 +7,9 @@ use warnings;
our $VERSION = '0.11';
use Inline C => 'DATA',
+ CC => $ENV{CC},
+ CCFLAGSEX => '-Wno-compound-token-split-by-macro',
LIBS => '-logg -lvorbis -lvorbisfile',
- INC => '-I/inc',
AUTO_INCLUDE => '#include "inc/vcedit.h"',
AUTO_INCLUDE => '#include "inc/vcedit.c"',
VERSION => '0.11',
@@ -476,14 +477,14 @@ int write_vorbis (SV *obj)
if ((fd = fopen(inpath, "rb")) == NULL) {
perror("Error opening file in Ogg::Vorbis::Header::write\n");
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
if ((fd2 = fopen(outpath, "w+b")) == NULL) {
perror("Error opening temp file in Ogg::Vorbis::Header::write\n");
fclose(fd);
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
/* Setup the state and comments structs */
@@ -494,7 +495,7 @@ int write_vorbis (SV *obj)
fclose(fd2);
unlink(outpath);
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
vc = vcedit_comments(state);
@@ -526,7 +527,7 @@ int write_vorbis (SV *obj)
vcedit_clear(state);
unlink(outpath);
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
fclose(fd);
@@ -536,7 +537,7 @@ int write_vorbis (SV *obj)
perror("Error copying tempfile in Ogg::Vorbis::Header::add_comment\n");
unlink(outpath);
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
if ((fd2 = fopen(inpath, "wb")) == NULL) {
@@ -544,7 +545,7 @@ int write_vorbis (SV *obj)
fclose(fd);
unlink(outpath);
free(outpath);
- return &PL_sv_undef;
+ return 0;
}
while ((bytes = fread(buffer, 1, BUFFSIZE, fd)) > 0)

View File

@ -1 +1 @@
Fetch/manipulate from Ogg-Vorbis audio files.
Perl module to fetch and manipulate information from Ogg-Vorbis audio files.