Skip to content

Commit

Permalink
audio/p5-Ogg-Vorbis-Header: unbreak the port's build against Clang 16
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Alexey Dokuchaev authored and Alexey Dokuchaev committed Sep 24, 2023
1 parent d4ae091 commit 082c2a3
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 5 deletions.
6 changes: 2 additions & 4 deletions audio/p5-Ogg-Vorbis-Header/Makefile
Expand Up @@ -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
Expand Down
66 changes: 66 additions & 0 deletions audio/p5-Ogg-Vorbis-Header/files/patch-lib_Ogg_Vorbis_Header.pm
@@ -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)
2 changes: 1 addition & 1 deletion audio/p5-Ogg-Vorbis-Header/pkg-descr
@@ -1 +1 @@
Fetch/manipulate from Ogg-Vorbis audio files.
Perl module to fetch and manipulate information from Ogg-Vorbis audio files.

0 comments on commit 082c2a3

Please sign in to comment.