Opened 4 months ago

Last modified 2 months ago

#62276 assigned defect

optool @0.1: error: expected ';' after top level declarator

Reported by: RobK88 Owned by: raimue (Rainer Müller)
Priority: Normal Milestone:
Component: ports Version: 2.6.4
Keywords: lion Cc:
Port: optool

Description

optool fails to build on Lion. main.log is attached.

Grinchs-Mac-Pro:~ grinch$ sudo port clean optool
--->  Cleaning optool

Grinchs-Mac-Pro:~ grinch$ sudo port install optool
--->  Fetching distfiles for optool
--->  Verifying checksums for optool
--->  Extracting optool
--->  Applying patches to optool
--->  Configuring optool
--->  Building optool
Error: Failed to build optool: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_optool/optool/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port optool failed

Attachments (1)

main.log (313.7 KB) - added by RobK88 4 months ago.
main.log

Download all attachments as: .zip

Change History (9)

Changed 4 months ago by RobK88

Attachment: main.log added

main.log

comment:1 Changed 4 months ago by ryandesign (Ryan Schmidt)

Cc: raimue@… removed
Keywords: lion added; Lion removed
Owner: set to raimue
Status: newassigned
Summary: optool Fails to Build on Lionoptool @0.1: error: expected ';' after top level declarator

The first error in the log is:

optool/defines.h:68:22: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
typedef NS_ENUM(int, OPError) {
                     ^~~~~~~
optool/defines.h:68:9: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
typedef NS_ENUM(int, OPError) {
~~~~~~~ ^
optool/defines.h:68:30: error: expected ';' after top level declarator
typedef NS_ENUM(int, OPError) {
                             ^
                             ;
2 warnings and 1 error generated.

I'm aware that NS_ENUM is a "new" compiler feature, but I don't know how new. Presumably the version of clang available on Lion is not new enough. optool 0.1 was released in 2014 which is several years after Lion.

Rainer hasn't been interested lately in working on issues only affecting older systems, but if a solution can be found, he usually accepts it.

The developers of optool have a precompiled binary available on their site; you could see if that works.

comment:2 Changed 4 months ago by RobK88

Thanks Ryan. Unfortunately, the precompiled binary for optool from the developer's website just crashes on Lion.

Clang-9.0 etc is available on Lion. Perhaps, I can try to compile optool using a different compiler. Please let me know how I can easily try doing that.

Thanks.

comment:3 Changed 4 months ago by Wowfunhappy (Jonathan)

A newer version of clang would probably be able to compile it. The problem is running it. I have previously tried compiling optool on Mavericks (outside Macports; default Clang), with 10.7 specified as a minimum target. It builds fine, but it doesn't actually run on 10.7.

I too would love to have this working on Lion, but unfortunately it's likely in need of a real patch.

comment:4 Changed 4 months ago by RobK88

Hmm. Well I couldn't get it to build on Lion with clang 9.0 either

Here is the result:

sudo port clean optool
sudo port -v install optool configure.compiler=macports-clang-9.0

blah blah blah....

** BUILD FAILED **


The following build commands failed:
	CompileC build/optool.build/Release/optool.build/Objects-normal/x86_64/headers.o optool/headers.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
	CompileC build/optool.build/Release/optool.build/Objects-normal/x86_64/operations.o optool/operations.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
	CompileC build/optool.build/Release/optool.build/Objects-normal/x86_64/main.o optool/main.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(3 failures)
Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_optool/optool/work/optool-0.1" && /usr/bin/xcodebuild  -alltargets -configuration Deployment build INSTALL_PATH=/Applications/MacPorts  OBJROOT="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_optool/optool/work/optool-0.1/build/" SYMROOT="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_optool/optool/work/optool-0.1/build/" MACOSX_DEPLOYMENT_TARGET=10.7 ARCHS=x86_64 SDKROOT="" CLANG_CXX_LIBRARY="libc++" 
Exit code: 65
Error: Failed to build optool: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_sysutils_optool/optool/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port optool failed
Last edited 4 months ago by RobK88 (previous) (diff)

comment:5 Changed 2 months ago by RobK88

I can confirm that optool still will not build on Lion. I tried various compilers with no success.

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

comment:7 Changed 2 months ago by RobK88

I just synced. And now optool does build and install on Lion!

Many thanks Ken for the fix!

comment:8 Changed 2 months ago by RobK88

P.S. I have been using "optool" to remove code signatures from Mac binaries so I can modify them. But I have found that the "unsign" tool from steakknife on Githib works better.

"Unsign" compiles easily on Lion and Mtn Lion. I suspect it will also compile on later versions of Mac OS X too.

Unfortunately, unsign is not in Macports. But it would be easy to create a portfile for it.

See https://github.com/steakknife/unsign

Note: See TracTickets for help on using tickets.