#43751: masscan is not UsingTheRightCompiler nor -arch flags nor does it have a universal variant ---------------------------+----------------------- Reporter: ryandesign@… | Owner: jul_bsd@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.3.99 Resolution: | Keywords: Port: masscan | ---------------------------+----------------------- Comment (by ryandesign@…): Replying to [comment:1 jul_bsd@…]:
Could you document what is needed for universal variant as I can't test it. Ony doc I see
https://guide.macports.org/chunked/reference.phases.html#reference.phases.co... [[br]]
wiki:howto/buildUniversal [[br]] just add a variant w -arch i386 -arch x86_64 ? configure.universal_cflags? nothing for m32/m64?
I can't really document it because it varies for each port; each build system is different. MacPorts automatically handles standard build systems like autoconf (default), cmake (using the cmake portgroup) and xcode (xcode portgroup). But because masscan uses a handmade Makefile, it's up to you to figure out where exactly the `-arch` flags need to be specified, and how best to insert them. Note that you need to use `-arch` flags for all builds, not just universal ones. Use the `[get_canonical_archflags]` procedure to get them. Define an empty universal variant before the first line where you invoke this procedure. You can see an example of this pattern in the ascii port, and a slightly different way of doing it in the dcraw port. The method used in dcraw (including the `-arch` flags in CC) works well for build systems that don't give you easily-modifiable variables; masscan gives you FLAGS2, but if you also need to munge LIBS, then using CC instead might be simpler. But see if it works without munging LIBS, since LIBS is supposed to be for libraries that are linked with, not other flags.
do every port need to have an universal variant?
That would be ideal. Every port that compiles software, that is. Some ports just install text files (and specify "supported_archs noarch"), so universal isn't applicable to those.
How masscan is not using right compiler? arg, just hardcoded CC=gcc, switch to ${configure.cc}
Yes, that's the problem. Consider setting CC in build.args instead of using reinplaces; again, see ascii and dcraw for examples.
patch proposal joined. but +universal failed to build on {{{ ld: warning: ignoring file /opt/local/lib/libpcap.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libpcap.dylib }}} it seems libpcap is not universal ...
MacPorts automatically ensures dependencies are built universal if you build a port universal. However masscan does not declare any dependencies. So you've just proved that masscan needs a library dependency on libpcap. -- Ticket URL: <https://trac.macports.org/ticket/43751#comment:2> MacPorts <http://www.macports.org/> Ports system for OS X