Opened 8 months ago

Closed 8 months ago

#68313 closed defect (fixed)

vorbis-tools @1.4.2: opportunistic use of opusfile

Reported by: RobK88 Owned by: RobK88
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: Cc: RobK88
Port: vorbis-tools

Description (last modified by RobK88)

I am unable to upgrade the +universal variant of vorbis-tools to version 1.4.2 on High Sierra -- Undefined symbols for architecture i386.

P.S. I am able to build the non-universal x86_64 version of vorbis-tools.

See the attached main.log or below for the errors:

bash-3.2$ port installed vorbis-tools
The following ports are currently installed:
  vorbis-tools @1.4.0_2+universal
bash-3.2$ 
bash-3.2$ sudo port clean vorbis-tools
--->  Cleaning vorbis-tools
bash-3.2$ 
bash-3.2$ sudo port -v upgrade vorbis-tools
--->  Computing dependencies for vorbis-tools.
--->  Fetching archive for vorbis-tools

etc..
etc..

4 warnings generated.
  CC       vorbis_comments.o
  CC       opus_format.o
  CC       vgfilter.o
  CCLD     ogg123
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd and library file /System/Library/Frameworks//CoreFoundation.framework/CoreFoundation are out of sync. Falling back to library file for linking.
ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
ld: warning: ignoring file /opt/local/lib/libopusfile.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libopusfile.dylib
Undefined symbols for architecture i386:
  "_op_bitrate", referenced from:
      _opf_statistics in opus_format.o
  "_op_bitrate_instant", referenced from:
      _opf_statistics in opus_format.o
  "_op_free", referenced from:
      _opf_cleanup in opus_format.o
  "_op_head", referenced from:
      _opf_read in opus_format.o
  "_op_open_callbacks", referenced from:
      _opf_init in opus_format.o
  "_op_pcm_seek", referenced from:
      _opf_seek in opus_format.o
  "_op_pcm_tell", referenced from:
      _opf_seek in opus_format.o
      _opf_statistics in opus_format.o
  "_op_pcm_total", referenced from:
      _opf_statistics in opus_format.o
  "_op_read", referenced from:
      _opf_read in opus_format.o
  "_op_tags", referenced from:
      _opf_read in opus_format.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ogg123] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_vorbis-tools/vorbis-tools/work/vorbis-tools-1.4.2/ogg123'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_vorbis-tools/vorbis-tools/work/vorbis-tools-1.4.2'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_vorbis-tools/vorbis-tools/work/vorbis-tools-1.4.2'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_vorbis-tools/vorbis-tools/work/vorbis-tools-1.4.2" && /usr/bin/make -j2 -w all 
Exit code: 2
Error: Failed to build vorbis-tools: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_audio_vorbis-tools/vorbis-tools/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
bash-3.2$

Attachments (2)

main.log (69.9 KB) - added by RobK88 8 months ago.
CHANGES (6.1 KB) - added by RobK88 8 months ago.

Download all attachments as: .zip

Change History (17)

Changed 8 months ago by RobK88

Attachment: main.log added

comment:1 Changed 8 months ago by RobK88

Summary: vorbis-tools @1.4.2 - Unable to upgrade +unversal variant - Undefined symbols for architecture i386vorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386

comment:2 Changed 8 months ago by RobK88

Description: modified (diff)

comment:3 Changed 8 months ago by RobK88

Description: modified (diff)

comment:4 Changed 8 months ago by RobK88

Summary: vorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386vorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386 - The i386 architecture is deprecated for macOS

comment:5 Changed 8 months ago by RobK88

Description: modified (diff)
Summary: vorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386 - The i386 architecture is deprecated for macOSvorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386

comment:6 Changed 8 months ago by RobK88

hmmm.. I do not understand why the compiler is throwing this warning message --

ld: warning: ignoring file /opt/local/lib/libopusfile.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libopusfile.dylib

libvorbis is installed with the +universal variant.

bash-3.2$ port installed libvorbis
The following ports are currently installed:
  libvorbis @1.3.7_0+universal (active)
bash-3.2

comment:7 Changed 8 months ago by ryandesign (Ryan Carsten Schmidt)

Summary: vorbis-tools @1.4.2 - Unable to upgrade +universal variant - Undefined symbols for architecture i386vorbis-tools @1.4.2: opportunistic use of opusfile

Sounds like vorbis-tools might need a dependendy on opusfile:

:info:configure checking for opusfile >= 0.2... yes
:info:configure checking OPUSFILE_CFLAGS... -I/opt/local/include/opus
:info:configure checking OPUSFILE_LIBS... -L/opt/local/lib -lopusfile
% port provides /opt/local/lib/libopusfile.dylib
/opt/local/lib/libopusfile.dylib is provided by: opusfile

Is opusfile installed with the universal variant?

comment:8 Changed 8 months ago by RobK88

You are right!! vorbis-tools depends on opusfile. The following needs to be added to the portfile for vorbis-tools:

depends_lib   port: opusfile

I only had the regular non-universal x86-64 build of opusfile installed.

I installed the +universal variant for opusfile and now the +universal variant for vorbis-tools builds. See below:

bash-3.2$ port installed opusfile
The following ports are currently installed:
  opusfile @0.12_1 (active)
bash-3.2$
bash-3.2$  
bash-3.2$ sudo port install opusfile +universal
Password:
--->  Fetching archive for libopus
--->  Attempting to fetch libopus-1.4_0+universal.darwin_17.i386-x86_64.tbz2 from http://packages.macports.org/libopus
--->  Attempting to fetch libopus-1.4_0+universal.darwin_17.i386-x86_64.tbz2.rmd160 from http://packages.macports.org/libopus
--->  Installing libopus @1.4_0+universal
--->  Cleaning libopus
--->  Deactivating libopus @1.4_0
--->  Cleaning libopus
--->  Activating libopus @1.4_0+universal
--->  Cleaning libopus
--->  Computing dependencies for opusfile
--->  Fetching archive for opusfile
--->  Attempting to fetch opusfile-0.12_1+universal.darwin_17.i386-x86_64.tbz2 from http://packages.macports.org/opusfile
--->  Attempting to fetch opusfile-0.12_1+universal.darwin_17.i386-x86_64.tbz2 from http://ywg.ca.packages.macports.org/mirror/macports/packages/opusfile
--->  Attempting to fetch opusfile-0.12_1+universal.darwin_17.i386-x86_64.tbz2 from http://mirror.fcix.net/macports/packages/opusfile
--->  Fetching distfiles for opusfile
--->  Attempting to fetch opusfile-0.12.tar.gz from http://distfiles.macports.org/opusfile
--->  Verifying checksums for opusfile
--->  Extracting opusfile
--->  Configuring opusfile
--->  Building opusfile                                  
--->  Staging opusfile into destroot                     
--->  Installing opusfile @0.12_1+universal
--->  Deactivating opusfile @0.12_1
--->  Cleaning opusfile
--->  Activating opusfile @0.12_1+universal
--->  Cleaning opusfile
--->  Scanning binaries for linking errors
--->  No broken files found.                             
--->  No broken ports found.
bash-3.2$ 
bash-3.2$ 
bash-3.2$ port installed vorbis-tools
The following ports are currently installed:
  vorbis-tools @1.4.0_2+universal
bash-3.2$ 
bash-3.2$ sudo port upgrade vorbis-tools
--->  Computing dependencies for vorbis-tools
--->  Fetching archive for vorbis-tools
--->  Attempting to fetch vorbis-tools-1.4.2_0+universal.darwin_17.i386-x86_64.tbz2 from http://packages.macports.org/vorbis-tools
--->  Attempting to fetch vorbis-tools-1.4.2_0+universal.darwin_17.i386-x86_64.tbz2 from http://ywg.ca.packages.macports.org/mirror/macports/packages/vorbis-tools
--->  Attempting to fetch vorbis-tools-1.4.2_0+universal.darwin_17.i386-x86_64.tbz2 from http://mirror.fcix.net/macports/packages/vorbis-tools
--->  Fetching distfiles for vorbis-tools
--->  Verifying checksums for vorbis-tools
--->  Extracting vorbis-tools
--->  Applying patches to vorbis-tools
--->  Configuring vorbis-tools
Warning: Configuration logfiles contain indications of -Wimplicit-function-declaration; check that features were not accidentally disabled:
  _NL_LOCALE_NAME: found in vorbis-tools-1.4.2/config.log
--->  Building vorbis-tools
--->  Staging vorbis-tools into destroot                 
--->  Installing vorbis-tools @1.4.2_0+universal         
--->  Cleaning vorbis-tools
--->  Computing dependencies for vorbis-tools
--->  Activating vorbis-tools @1.4.2_0+universal
--->  Cleaning vorbis-tools
--->  Scanning binaries for linking errors
--->  No broken files found.                             
--->  No broken ports found.
bash-3.2$ 
bash-3.2$ port installed vorbis-tools
The following ports are currently installed:
  vorbis-tools @1.4.0_2+universal
  vorbis-tools @1.4.2_0+universal (active)
bash-3.2$
Last edited 8 months ago by RobK88 (previous) (diff)

comment:9 Changed 8 months ago by RobK88

Cc: RobK88 added

comment:10 Changed 8 months ago by jmroot (Joshua Root)

If flac and speex are variants, surely opus should be too.

comment:11 Changed 8 months ago by RobK88

Opus is supposed to be the new codec that replaces both vorbis and speex for new applications. (see https://en.wikipedia.org/wiki/Opus_(audio_format) )

Does it really make sense to make opus a variant for vorbis-tools?

comment:12 Changed 8 months ago by RobK88

Attached is the CHANGELOG for vorbis-tools. It looks like ogg123 added support opus files in version 1.4.1 of vorbis-tools. No wonder, the updated port (from version 1.4.0 to version 1.4.2) for vorbis-tools failed. The github website has no mention of opus. You need to look at the CHANGELOG.

Last edited 8 months ago by RobK88 (previous) (diff)

Changed 8 months ago by RobK88

Attachment: CHANGES added

comment:13 Changed 8 months ago by RobK88

P.S. It does not look like there is an easy way to create an +opus variant for vorbis-tools. To create variants for +speex and +flac, the portfile used the --without-speex and --without-flac configure flags. But I do not see an --without-opus configure flag. See below.

It is probably best to just include opus audio support with all installations of vorbis-tools.

rob$ ./configure --help
`configure' configures vorbis-tools 1.4.2 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/vorbis-tools]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-silent-rules   less verbose build output (undo: "make V=1")
  --disable-silent-rules  verbose build output (undo: "make V=0")
  --disable-maintainer-mode
                          disable make rules and dependencies not useful (and
                          sometimes confusing) to the casual installer
  --enable-dependency-tracking
                          do not reject slow dependency extractors
  --disable-dependency-tracking
                          speeds up one-time build
  --enable-shared[=PKGS]  build shared libraries [default=yes]
  --enable-static[=PKGS]  build static libraries [default=yes]
  --enable-fast-install[=PKGS]
                          optimize for fast installation [default=yes]
  --disable-libtool-lock  avoid locking (might break parallel builds)
  --disable-nls           do not use Native Language Support
  --enable-threads={posix|solaris|pth|win32}
                          specify multithreading API
  --disable-threads       build without multithread safety
  --disable-rpath         do not hardcode runtime library paths
  --disable-largefile     omit support for large files
  --disable-ogg123   Skip building ogg123
  --disable-oggdec   Skip building oggdec
  --disable-oggenc   Skip building oggenc
  --disable-ogginfo  Skip building ogginfo
  --disable-vcut     Skip building vcut
  --disable-vorbiscomment   Skip building vorbiscomment
  --disable-oggtest       Do not try to compile and run a test Ogg program
  --disable-vorbistest    Do not try to compile and run a test Vorbis program
  --disable-curltest       Do not try to compile and run a test libcurl program

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                          both]
  --with-aix-soname=aix|svr4|both
                          shared library versioning (aka "SONAME") variant to
                          provide on AIX, [default=aix].
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
                          compiler's sysroot if not specified).
  --with-gnu-ld           assume the C compiler uses GNU ld default=no
  --with-libpth-prefix[=DIR]  search for libpth in DIR/include and DIR/lib
  --without-libpth-prefix     don't search for libpth in includedir and libdir
  --with-libiconv-prefix=DIR  search for libiconv in DIR/include and DIR/lib
  --with-included-gettext use the GNU gettext library included here
  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
  --without-libintl-prefix     don't search for libintl in includedir and libdir
  --without-flac     Do not compile FLAC support
  --without-speex    Do not compile Speex support
  --without-kate     Do not compile Kate support
  --with-ogg=PFX          Prefix where libogg is installed (optional)
  --with-ogg-libraries=DIR
                          Directory where libogg library is installed
                          (optional)
  --with-ogg-includes=DIR Directory where libogg header files are installed
                          (optional)
  --with-vorbis=PFX       Prefix where libvorbis is installed (optional)
  --with-vorbis-libraries=DIR
                          Directory where libvorbis library is installed
                          (optional)
  --with-vorbis-includes=DIR
                          Directory where libvorbis header files are installed
                          (optional)
  --with-curl=PFX   Prefix where libcurl is installed (optional)
  --with-curl-libraries=DIR   Directory where libcurl library is installed (optional)
  --with-curl-includes=DIR   Directory where libcurl header files are installed (optional)

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  LT_SYS_LIBRARY_PATH
              User-defined run-time library search path.
  CPP         C preprocessor

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to <vorbis-dev@xiph.org>.
Grinchs-Mac-Pro-2:vorbis-tools-1.4.2 rob$
Last edited 8 months ago by RobK88 (previous) (diff)

comment:14 Changed 8 months ago by RobK88

I have submitted a Pull Request (PR) to fix the +universal build.

See https://github.com/macports/macports-ports/pull/20700

I did not add a new variant for opus. As stated above, the developer did not create a config option for opus. This make sense since opus is supposed to be the replacement for vorbis ogg audio files and speex audio files.

comment:15 Changed 8 months ago by RobK88

Owner: set to RobK88
Resolution: fixed
Status: newclosed

In 51969ad961c38a8b4a202524ded57afd32b88495/macports-ports (master):

vorbis-tools: add missing dependency

  • Add missing dependency port:opusfile
  • Change depends_lib to depends_lib-append
  • Bump revision number

CLOSES: #68313

Note: See TracTickets for help on using tickets.