#50713: unRAR 5.2.7 does nor build on Mac OS X 10.6.8, Snow Leopard, because "‘mprintf’ was not declared in this scope" ------------------------------+-------------------------------- Reporter: Peter_Dyballa@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.4 Resolution: | Keywords: Port: unrar | ------------------------------+-------------------------------- Comment (by Peter_Dyballa@…): After applying the suggested patch compilation stops again here: {{{ /usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c unpack.cpp volume.cpp: In function ‘bool MergeArchive(Archive&, ComprDataIO*, bool, wchar)’: volume.cpp:123: error: ‘mprintf’ was not declared in this scope make: *** [volume.o] Error 1 make: *** Waiting for unfinished jobs.... list.cpp: In function ‘void ListArchive(CommandData*)’: list.cpp:41: error: ‘mprintf’ was not declared in this scope list.cpp:84: error: ‘mprintf’ was not declared in this scope list.cpp:127: error: ‘mprintf’ was not declared in this scope list.cpp:134: error: ‘mprintf’ was not declared in this scope list.cpp:141: error: ‘mprintf’ was not declared in this scope list.cpp:144: error: ‘mprintf’ was not declared in this scope list.cpp:162: error: ‘mprintf’ was not declared in this scope list.cpp:180: error: ‘mprintf’ was not declared in this scope list.cpp:182: error: ‘mprintf’ was not declared in this scope list.cpp: In function ‘void ListFileHeader(Archive&, FileHeader&, bool&, bool, bool, bool)’: list.cpp:199: error: ‘mprintf’ was not declared in this scope list.cpp:207: error: ‘mprintf’ was not declared in this scope list.cpp:212: error: ‘mprintf’ was not declared in this scope list.cpp:249: error: ‘mprintf’ was not declared in this scope list.cpp:388: error: ‘mprintf’ was not declared in this scope make: *** [list.o] Error 1 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_unrar/libunrar/work/unrar' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_unrar/libunrar/work/unrar" && /usr/bin/make -j8 -w lib -f makefile CXX="/usr/bin/llvm-g++-4.2" DESTDIR=/opt/local CXXFLAGS="-Os -DSILENT -DGUI -fPIC -arch x86_64 " LDFLAGS="-L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64 " Exit code: 2 Error: org.macports.build for port libunrar returned: command execution failed }}} After patching these errors come up: {{{ /usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c filestr.cpp cmddata.cpp: In member function ‘void CommandData::ProcessSwitch(const wchar*)’: cmddata.cpp:410: error: ‘eprintf’ was not declared in this scope cmddata.cpp:643: error: ‘eprintf’ was not declared in this scope cmddata.cpp: In member function ‘void CommandData::BadSwitch(const wchar*)’: cmddata.cpp:900: error: ‘mprintf’ was not declared in this scope list.cpp: In function ‘void ListArchive(CommandData*)’: list.cpp:41: error: ‘mprintf’ was not declared in this scope /usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c recvol.cpp list.cpp:84: error: ‘mprintf’ was not declared in this scope list.cpp:127: error: ‘mprintf’ was not declared in this scope list.cpp:134: error: ‘mprintf’ was not declared in this scope list.cpp:141: error: ‘mprintf’ was not declared in this scope list.cpp:144: error: ‘mprintf’ was not declared in this scope list.cpp:162: error: ‘mprintf’ was not declared in this scope list.cpp:180: error: ‘mprintf’ was not declared in this scope list.cpp:182: error: ‘mprintf’ was not declared in this scope list.cpp: In function ‘void ListFileHeader(Archive&, FileHeader&, bool&, bool, bool, bool)’: list.cpp:199: error: ‘mprintf’ was not declared in this scope list.cpp:207: error: ‘mprintf’ was not declared in this scope list.cpp:212: error: ‘mprintf’ was not declared in this scope list.cpp:249: error: ‘mprintf’ was not declared in this scope list.cpp:388: error: ‘mprintf’ was not declared in this scope make: *** [cmddata.o] Error 1 make: *** Waiting for unfinished jobs.... make: *** [list.o] Error 1 In file included from recvol.cpp:3: recvol3.cpp: In member function ‘bool RecVolumes3::Restore(RAROptions*, const wchar*, bool)’: recvol3.cpp:379: error: ‘LastPercent’ was not declared in this scope In file included from recvol.cpp:4: recvol5.cpp: In member function ‘bool RecVolumes5::Restore(RAROptions*, const wchar*, bool)’: recvol5.cpp:390: error: ‘LastPercent’ was not declared in this scope make: *** [recvol.o] Error 1 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_unrar/libunrar/work/unrar' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_archivers_unrar/libunrar/work/unrar" && /usr/bin/make -j8 -w lib -f makefile CXX="/usr/bin/llvm-g++-4.2" DESTDIR=/opt/local CXXFLAGS="-Os -DSILENT -DGUI -fPIC -arch x86_64 " LDFLAGS="-L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64 " Exit code: 2 Error: org.macports.build for port libunrar returned: command execution failed }}} The function eprintf is also #define'd in consio.hpp, so let's try the same patch! Which leads to: {{{ /usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c rs.cpp In file included from recvol.cpp:3: recvol3.cpp: In member function ‘bool RecVolumes3::Restore(RAROptions*, const wchar*, bool)’: recvol3.cpp:379: error: ‘LastPercent’ was not declared in this scope In file included from recvol.cpp:4: recvol5.cpp: In member function ‘bool RecVolumes5::Restore(RAROptions*, const wchar*, bool)’: recvol5.cpp:390: error: ‘LastPercent’ was not declared in this scope /usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c scantree.cpp make: *** [recvol.o] Error 1 }}} `rdwrfn.hpp` seems to have its declaration. The same patch seems to be needed for this: {{{ usr/bin/llvm-g++-4.2 -Os -DSILENT -DGUI -fPIC -arch x86_64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP -DRARDLL -c qopen.cpp In file included from recvol.cpp:3: recvol3.cpp: In member function ‘bool RecVolumes3::Restore(RAROptions*, const wchar*, bool)’: recvol3.cpp:379: error: ‘LastPercent’ was not declared in this scope In file included from recvol.cpp:4: recvol5.cpp: In member function ‘bool RecVolumes5::Restore(RAROptions*, const wchar*, bool)’: recvol5.cpp:391: error: ‘LastPercent’ was not declared in this scope make: *** [recvol.o] Error 1 }}} but it fails, because the actual cause are these lines: {{{ 343 #ifndef GUI 344 int LastPercent=-1; 345 mprintf(L" "); 346 #endif }}} and the compile command with `CXXFLAGS="-Os -DSILENT -DGUI -fPIC -arch x86_64"`. So we need to put the line {{{ 344 int LastPercent=-1; }}} outside of the `#ifndef GUI` clause? Well, I tried that, and unRAR compiled. I only do not know whether this is correct… All patch files, including that for Portfile will be attached! -- Ticket URL: <https://trac.macports.org/ticket/50713#comment:1> MacPorts <https://www.macports.org/> Ports system for OS X