Opened 9 years ago

Last modified 7 months ago

#48792 new defect

dvdisaster: build failure OS X 10.7 Intel Mac

Reported by: RobK88 Owned by: mklein-de (Michael Klein)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc:
Port: dvdisaster

Description

dvdisaster fails to build on Mac Pro running 10.7 Lion. See attached log.

Attachments (3)

main.log (110.3 KB) - added by RobK88 9 years ago.
main-clang-16.log (495.9 KB) - added by RobK88 7 months ago.
main.log using clang-16
main-clang-9-latest.log (484.7 KB) - added by RobK88 7 months ago.
main.log using clang-9.0

Download all attachments as: .zip

Change History (9)

Changed 9 years ago by RobK88

Attachment: main.log added

comment:1 Changed 9 years ago by mf2k (Frank Schima)

Cc: michael.klein@… removed
Owner: changed from macports-tickets@… to michael.klein@…

comment:2 Changed 2 years ago by RobK88

I know this ticket is over 6 years old.

But I was finally found the fix to this bug. The default compiler in Lion is just too old to compile the source code for dvdisaster. But dvdisaster compiles just fine on Lion using clang-9.0. I am sure other more modern compilers will also work. But I did not test them.

bash-3.2$ sudo port clean dvdisaster
--->  Cleaning dvdisaster
bash-3.2$ sudo port install  dvdisaster configure.compiler=macports-clang-9.0
--->  Computing dependencies for dvdisaster
--->  Fetching distfiles for dvdisaster
--->  Verifying checksums for dvdisaster
--->  Extracting dvdisaster
--->  Applying patches to dvdisaster
--->  Configuring dvdisaster
--->  Building dvdisaster                                
--->  Staging dvdisaster into destroot                   
--->  Installing dvdisaster @0.72.3_0                    
--->  Activating dvdisaster @0.72.3_0
--->  Cleaning dvdisaster
--->  Scanning binaries for linking errors
--->  No broken files found.                             
--->  No broken ports found.
bash-3.2$ 
bash-3.2$ dvdisaster --version

dvdisaster version 0.72 (pl3) build 5
Last edited 2 years ago by RobK88 (previous) (diff)

comment:3 Changed 7 months ago by RobK88

As noted above, dvdisaster will build just fine on Lion using clang-9.0. But it will NOT build using clang-15 or clang-16. See attached main-clang-16.log.

In particular, one sees:

Compiling: codec.c
2 warnings generated.
make: *** read jobs pipe: Resource temporarily unavailable.  Stop.
make: *** Waiting for unfinished jobs....
Compiling: decimate.c
codec.c:184:7: error: call to undeclared library function 'memcpy' with type 'void *(void *, const void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      memcpy(tile_db[idx], new_tile, sizeof(tile));
      ^
codec.c:184:7: note: include the header <string.h> or explicitly provide a declaration for 'memcpy'
codec.c:328:47: error: call to undeclared library function 'strerror' with type 'char *(int)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      Stop("Write error in bz2 library: %s\n",strerror(errno));
                                              ^
codec.c:328:47: note: include the header <string.h> or explicitly provide a declaration for 'strerror'
2 warnings generated.
codec.c:401:26: error: call to undeclared library function 'strlen' with type 'unsigned long (const char *)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      unsigned int len = strlen(pi->name);
                         ^
codec.c:401:26: note: include the header <string.h> or explicitly provide a declaration for 'strlen'
codec.c:518:7: error: call to undeclared library function 'strncmp' with type 'int (const char *, const char *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   if(strncmp(header, ".pngpack", 8))
      ^
codec.c:518:7: note: include the header <string.h> or explicitly provide a declaration for 'strncmp'
codec.c:698:8: error: call to undeclared library function 'memcmp' with type 'int (const void *, const void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   if(!memcmp(pi->checksum, checksum, 16))
       ^
codec.c:698:8: note: include the header <string.h> or explicitly provide a declaration for 'memcmp'
5 errors generated.
gmake[1]: *** [Makefile:87: codec.o] Error 1
gmake[1]: *** Waiting for unfinished jobs....
Compiling: md5.c
decimate.c:34:15: error: call to undeclared library function 'strlen' with type 'unsigned long (const char *)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   char tname[strlen(thumb_dir)+strlen(name)+2];
              ^
decimate.c:34:15: note: include the header <string.h> or explicitly provide a declaration for 'strlen'
decimate.c:50:4: error: call to undeclared library function 'memcpy' with type 'void *(void *, const void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   memcpy(thumb, pi, sizeof(Image));
   ^
decimate.c:50:4: note: include the header <string.h> or explicitly provide a declaration for 'memcpy'
2 errors generated.
gmake[1]: *** [Makefile:87: decimate.o] Error 1
md5.c:162:25: warning: 'memset' call operates on objects of type 'struct MD5Context' while the size is based on a different type 'struct MD5Context *' [-Wsizeof-pointer-memaccess]
        memset(ctx, 0, sizeof (ctx));   /* In case it's sensitive */
               ~~~             ^~~
md5.c:162:25: note: did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?
        memset(ctx, 0, sizeof (ctx));   /* In case it's sensitive */
                               ^~~
1 warning generated.
Unpacking images (may take a while) ... /opt/local/bin/bash: line 1: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_sysutils_dvdisaster/dvdisaster/work/dvdisaster-0.72.3/tools/pngpack: No such file or directory
common de en ru - done
2 warnings generated.
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_sysutils_dvdisaster/dvdisaster/work/dvdisaster-0.72.3'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_sysutils_dvdisaster/dvdisaster/work/dvdisaster-0.72.3" && /usr/bin/make -j4 -w all CC=/opt/local/bin/clang-mp-16 
Exit code: 2
Error: Failed to build dvdisaster: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_sysutils_dvdisaster/dvdisaster/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug.
Error: Processing of port dvdisaster failed

Changed 7 months ago by RobK88

Attachment: main-clang-16.log added

main.log using clang-16

comment:4 Changed 7 months ago by RobK88

Hmm. Sometimes but not always I can build dvdisaster using clang-9.0. (And yes I always run sudo port clean dvdisaster beforehand).

To see a failed build using clang-9.0, see the attached main-clang-9-latest.log

If you want to install dvdisaster, you may need to run the following commands multiple times until it successfully builds and installs:

bash-3.2$ sudo port clean dvdisaster
--->  Cleaning dvdisaster
bash-3.2$ sudo port install  dvdisaster configure.compiler=macports-clang-9.0
Last edited 7 months ago by RobK88 (previous) (diff)

Changed 7 months ago by RobK88

Attachment: main-clang-9-latest.log added

main.log using clang-9.0

comment:5 in reply to:  4 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Replying to RobK88:

As noted above, dvdisaster will build just fine on Lion using clang-9.0. But it will NOT build using clang-15 or clang-16. See attached main-clang-16.log.

It also won't build with Xcode 12 clang or later. It needs WimplicitFunctionDeclaration fixes.

Replying to RobK88:

Hmm. Sometimes but not always I can build dvdisaster using clang-9.0. (And yes I always run sudo port clean dvdisaster beforehand).

To see a failed build using clang-9.0, see the attached main-clang-9-latest.log

If you want to install dvdisaster, you may need to run the following commands multiple times until it successfully builds and installs:

Sounds like it could be a parallel build issue, in which case the port could indicate use_parallel_build no, and until then, you could add build.jobs=1 on the command line.

comment:6 Changed 7 months ago by RobK88

Ryan -- Many thanks for the feedback and the link to https://trac.macports.org/wiki/WimplicitFunctionDeclaration. Now I understand why ports with WimplictFunctionDeclaration issues will not build in Macports using Xcode 12 or later. So it looks like dvdisaster will not build on Silicon Macs either.

Note: See TracTickets for help on using tickets.