#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 12 months ago.
CHANGES (6.1 KB) - added by RobK88 12 months ago.

Download all attachments as: .zip

Change History (17)

Changed 12 months ago by RobK88

Attachment: main.log added

comment:1 Changed 12 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 12 months ago by RobK88

Description: modified (diff)

comment:3 Changed 12 months ago by RobK88

Description: modified (diff)

comment:4 Changed 12 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 12 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 12 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 12 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 12 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 12 months ago by RobK88 (previous) (diff)

comment:9 Changed 12 months ago by RobK88

Cc: RobK88 added

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

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

comment:11 Changed 12 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 12 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 12 months ago by RobK88 (previous) (diff)

Changed 12 months ago by RobK88

Attachment: CHANGES added

comment:13 Changed 12 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.

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$
Version 0, edited 12 months ago by RobK88 (next)

comment:14 Changed 12 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 12 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.