libcdio-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libcdio-help] Does libcdio can work with macOS (Mac OS X)?


From: Rocky Bernstein
Subject: Re: [Libcdio-help] Does libcdio can work with macOS (Mac OS X)?
Date: Fri, 15 Sep 2017 07:23:55 -0400

Ok. I now see what's going on. You are using the last release from about a year ago, while I was looking at the current git sources which I believe cover High Sierra. So there are now a couple of possible solutions.

So one possible solution is to build from git. Another is to change

darwin[6-9].*|darwin1[0-6].*)

to 

darwin[6-9].*|darwin1[0-7].*)

in your configure script so it convers High Sierra.

The linker errors you get is because the shell code underneath sets up additional OSX libraries needed. So changing config.h isn't sufficient. You also need that
setup to add libraries. 


On Fri, Sep 15, 2017 at 7:02 AM, 桃源老師 <address@hidden> wrote:
Hello Rocky-san,

Thanks for reply...

> 2017/09/15 午後6:35、Rocky Bernstein <address@hidden>のメール:
>
> For now probably the simplest thing to do is go into the file config.h that configure generates and change the line
>
> /* #undef HAVE_DARWIN_CDROM */
>
> to
>
> #define HAVE_DARWIN_CDROM 1
>
> And then run make again. If that works, let me know.

If I configure with --disable-shared option, and edit config.h as you mentioned, make fails with the following:

  CCLD     cd-drive
Undefined symbols for architecture x86_64:
  "_CFDataGetBytes", referenced from:
      _read_toc_osx in libcdio.a(osx.o)
  "_CFDataGetLength", referenced from:
      _read_toc_osx in libcdio.a(osx.o)
  "_CFDictionaryGetValue", referenced from:
      _get_discmode_osx in libcdio.a(osx.o)
      _get_drive_cap_osx in libcdio.a(osx.o)
      _get_hwinfo_osx in libcdio.a(osx.o)
      _read_toc_osx in libcdio.a(osx.o)
  "_CFDictionarySetValue", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
  "_CFNumberGetValue", referenced from:
      _get_drive_cap_osx in libcdio.a(osx.o)
  "_CFRelease", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _get_discmode_osx in libcdio.a(osx.o)
      _get_hwinfo_osx in libcdio.a(osx.o)
      _read_toc_osx in libcdio.a(osx.o)
  "_CFStringGetCString", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _get_discmode_osx in libcdio.a(osx.o)
      _get_hwinfo_osx in libcdio.a(osx.o)
  "_IOBSDNameMatching", referenced from:
      _cdio_open_osx in libcdio.a(osx.o)
  "_IODestroyPlugInInterface", referenced from:
      __free_osx in libcdio.a(osx.o)
  "_IOIteratorNext", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _cdio_open_osx in libcdio.a(osx.o)
      _ProbeStorageDevices in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
  "_IOMasterPort", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _ProbeStorageDevices in libcdio.a(osx.o)
  "_IOObjectConformsTo", referenced from:
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _cdio_open_osx in libcdio.a(osx.o)
  "_IOObjectRelease", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _cdio_open_osx in libcdio.a(osx.o)
      __free_osx in libcdio.a(osx.o)
      _get_drive_cap_osx in libcdio.a(osx.o)
      _ProbeStorageDevices in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
      ...
  "_IORegistryEntryCreateCFProperties", referenced from:
      _get_discmode_osx in libcdio.a(osx.o)
      _get_drive_cap_osx in libcdio.a(osx.o)
      _get_hwinfo_osx in libcdio.a(osx.o)
      _read_toc_osx in libcdio.a(osx.o)
  "_IORegistryEntryCreateCFProperty", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
  "_IORegistryEntryGetParentIterator", referenced from:
      _cdio_open_osx in libcdio.a(osx.o)
  "_IORegistryEntryGetPath", referenced from:
      _cdio_open_osx in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
  "_IOServiceGetMatchingServices", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _cdio_open_osx in libcdio.a(osx.o)
      _ProbeStorageDevices in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
  "_IOServiceMatching", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _ProbeStorageDevices in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
  "_IOServiceRequestProbe", referenced from:
      _ProbeStorageDevices in libcdio.a(osx.o)
  "___CFConstantStringClassReference", referenced from:
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      CFString in libcdio.a(osx.o)
      ...
  "_check", referenced from:
      _get_drive_service_osx in libcdio.a(osx.o)
  "_kCFAllocatorDefault", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _get_discmode_osx in libcdio.a(osx.o)
      _get_drive_cap_osx in libcdio.a(osx.o)
      _get_hwinfo_osx in libcdio.a(osx.o)
      _read_toc_osx in libcdio.a(osx.o)
  "_kCFBooleanTrue", referenced from:
      _cdio_get_devices_osx in libcdio.a(osx.o)
      _cdio_get_default_device_osx in libcdio.a(osx.o)
  "_kIOMasterPortDefault", referenced from:
      _cdio_get_default_device_osx in libcdio.a(osx.o)
      _cdio_open_osx in libcdio.a(osx.o)
      _get_drive_service_osx in libcdio.a(osx.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [cd-drive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

If I configure with out --disable-shared option, and edit config.h as you mentioned, make success but make check all fails.

../../test-driver: line 107: 95031 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: abs_path
../../test-driver: line 107: 95050 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: bincue
../../test-driver: line 107: 95069 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: cdda
../../test-driver: line 107: 95088 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: cdrdao
../../test-driver: line 107: 95107 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: freebsd
../../test-driver: line 107: 95126 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: gnu_linux
../../test-driver: line 107: 95145 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: logger
../../test-driver: line 107: 95164 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: mmc_read
../../test-driver: line 107: 95183 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: mmc_write
../../test-driver: line 107: 95202 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: nrg
../../test-driver: line 107: 95221 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: osx
../../test-driver: line 107: 95240 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: realpath
../../test-driver: line 107: 95259 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: solaris
../../test-driver: line 107: 95278 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: track
../../test-driver: line 107: 95297 Abort trap: 6           "$@" > $log_file 2>&1
FAIL: win32
============================================================================
Testsuite summary for libcdio 0.94
============================================================================
# TOTAL: 15
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  15
# XPASS: 0
# ERROR: 0
============================================================================
See test/driver/test-suite.log
Please report to https://savannah.gnu.org/bugs/?group=libcdio
============================================================================

> Although it is true that generally libcdio only adds drivers that have been known to check out, when I look at the shell code that is supposed to allow or disallow macos, the relevant code in configure is:
>
> case $host_os in
>      aix*)
>        ## Don't use AIX driver until starts to really work
>        ## cd_drivers="${cd_drivers}, AIX"
>        ## AC_DEFINE([HAVE_AIX_CDROM], [1],
>        ##     [Define 1 if you have AIX CD-ROM support])
>        ;;
>      darwin[6-9].*|darwin[1-9][0-9].*)
>        for ac_header in IOKit/IOKitLib.h CoreFoundation/CFBase.h
>
> And it looks to me that this should match "darwin17.0.0" but apparently it doesn't .

Nop, The relevant code in configure is bellow:
So I thought that your configure support upto darwin 16.x.

case $host_os in
     aix*)
       ## Don't use AIX driver until starts to really work
       ## cd_drivers="${cd_drivers}, AIX"
       ## AC_DEFINE([HAVE_AIX_CDROM], [1],
       ##     [Define 1 if you have AIX CD-ROM support])
       ;;
     darwin[6-9].*|darwin1[0-6].*)
       for ac_header in IOKit/IOKitLib.h CoreFoundation/CFBase.h

> Here is the code I tried:
>
> set -xv
> host_os=darwin17.0.0
> case $host_os in
>      aix*)
>        ## Don't use AIX driver until starts to really work
>        ## cd_drivers="${cd_drivers}, AIX"
>        ## AC_DEFINE([HAVE_AIX_CDROM], [1],
>        ##     [Define 1 if you have AIX CD-ROM support])
>        ;;
>      darwin[6-9].*|darwin[1-9][0-9].*)
>        echo "good"
>        ;;
>      *)
>        echo "Nope"
> esac
> set +xv
>
> If you were to run this code, do you get "good". If is host_os set to darwin17.0.0 ?

I copied and pasted this code block to a file named test.sh and get the result as follows:

$ sh test.sh
host_os=darwin17.0.0
+ host_os=darwin17.0.0
case $host_os in
     aix*)
       ## Don't use AIX driver until starts to really work
       ## cd_drivers="${cd_drivers}, AIX"
       ## AC_DEFINE([HAVE_AIX_CDROM], [1],
       ##     [Define 1 if you have AIX CD-ROM support])
       ;;
     darwin[6-9].*|darwin[1-9][0-9].*)
         echo "good"
         ;;
     *)
         echo "Nope"
esac
+ case $host_os in
+ echo good
good
set +xv
+ set +xv

Tried to paste configure script, it output same and stopped with syntax error....

Hope that my reply would be a part of help to solve the problem...


Best Regards,


// Miya aka. TougenRoushi


_______________________________________________
Libcdio-help mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/libcdio-help



reply via email to

[Prev in Thread] Current Thread [Next in Thread]