Opened 8 years ago

Closed 8 years ago

#52503 closed defect (wontfix)

hexchat 2.12.1 has issues on tiger - and fix

Reported by: ken-cunningham-webuse Owned by: raimue (Rainer Müller)
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: tiger Cc:
Port: hexchat

Description (last modified by larryv (Lawrence Velázquez))

Tiger is not on the radar right after Sierra comes out, but at any rate, the new hexchat has a couple of easily-fixable issues to restore compatibility with Tiger.

During configure, autoconf identifies the system as accepting -fPIE, but in fact, 10.4 does not:

configure:19136: checking whether C compiler accepts -fPIE
configure:19155: /opt/local/bin/gcc-apple-4.2 -c -pipe -Os -arch i386 -funsigned-char  -fPIE -I/opt/local/include conftest.c >&5
configure:19155: $? = 0
configure:19164: result: yes

libtool: link: /opt/local/bin/gcc-apple-4.2 -pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith -Wl,-headerpad_max_install_names -arch i386 -o make-te make-te.o  -L/opt/local/lib /opt/local/lib/libintl.dylib
ld: -pie can only be used when targeting Mac OS X 10.5 or later

the only solution I can come up with is to pull it out of the Makefiles manually with a reinplace.

Secondly, backend.m still has issues on Tiger even after ionic's nice fix for 10.5-10.8 is applied. I tried this and that to fix these issues, but even when it would compile cleanly, it wouldn't link:

AutoLoad failed for: /opt/local/lib/hexchat/plugins/sysinfo.so
 dlopen(/opt/local/lib/hexchat/plugins/sysinfo.so, 10): Symbol not found: _objc_enumerationMutation
   Referenced from: /opt/local/lib/hexchat/plugins/sysinfo.so
   Expected in: dynamic lookup

So I disabled it in config.

Finally, I added a note about how to download it, until such time as another solution is found to the 'old SSL' library issue on systems ≤ 10.6. This one is just in the notes -- I didn't wrap it up in a <10.6 block or get fancy with it.

Attachments (3)

hexchat2.12.1-tiger-fix.diff (1.2 KB) - added by ken-cunningham-webuse 8 years ago.
hexchat-pie-error.main.log.gz (13.0 KB) - added by ken-cunningham-webuse 8 years ago.
hexchat.backend-m.uptime.error.main2.log.gz (20.4 KB) - added by ken-cunningham-webuse 8 years ago.

Download all attachments as: .zip

Change History (9)

Changed 8 years ago by ken-cunningham-webuse

Changed 8 years ago by ken-cunningham-webuse

Changed 8 years ago by ken-cunningham-webuse

comment:1 Changed 8 years ago by ken-cunningham-webuse

Ah - forgot to add the Port= hexchat and maintainer=raimue@… fields before I clicked. I'm sorry, and can't fix it now.

[update] The download issue applies to <= 10.7, at least.

Last edited 8 years ago by ken-cunningham-webuse (previous) (diff)

comment:2 in reply to:  description Changed 8 years ago by larryv (Lawrence Velázquez)

Description: modified (diff)
Keywords: tiger added
Owner: changed from macports-tickets@… to raimue@…
Port: hexchat added

Replying to ken.cunningham.webuse@…:

During configure, autoconf identifies the system as accepting -fPIE, but in fact, 10.4 does not:

configure:19136: checking whether C compiler accepts -fPIE
configure:19155: /opt/local/bin/gcc-apple-4.2 -c -pipe -Os -arch i386 -funsigned-char  -fPIE -I/opt/local/include conftest.c >&5
configure:19155: $? = 0
configure:19164: result: yes

libtool: link: /opt/local/bin/gcc-apple-4.2 -pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith -Wl,-headerpad_max_install_names -arch i386 -o make-te make-te.o  -L/opt/local/lib /opt/local/lib/libintl.dylib
ld: -pie can only be used when targeting Mac OS X 10.5 or later

the only solution I can come up with is to pull it out of the Makefiles manually with a reinplace.

Well, it’s checking whether the compiler accepts -fPIE, which it does. The problem is the linker. I think a better fix would be to have the configure script check the linker as well.

comment:3 Changed 8 years ago by ken-cunningham-webuse

found some more -- linker does test for PIE, I see, and finds failure

configure:19216: checking whether the linker accepts -pie
configure:19235: /opt/local/bin/gcc-apple-4.2 -o conftest -pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith -I/opt/local/include -L/opt/local/lib -Wl,-headerpad_max_install_names -arch i386  -pie conftest.c  >&5
conftest.c:44: warning: function declaration isn't a prototype
ld: -pie can only be used when targeting Mac OS X 10.5 or later
collect2: ld returned 1 exit status

and that makes it into the summary

ax_cv_check_ldflags___Wl__z_now=no
ax_cv_check_ldflags___Wl__z_relro=no
ax_cv_check_ldflags___pie=no

so the compiler accepts -fPIE, but the linker does not

CFLAGS='-pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith'
LDFLAGS='-L/opt/local/lib -Wl,-headerpad_max_install_names -arch i386'

and in the end, the link line looks like it's made up of both CFLAGS (with-fPIE) and LDFLAGS, and errors out...

:info:build /bin/sh ../../libtool  --tag=CC   --mode=link /opt/local/bin/gcc-apple-4.2  -pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith  -L/opt/local/lib -Wl,-headerpad_max_install_names -arch i386 -o make-te make-te.o  -lintl 
:info:build libtool: link: /opt/local/bin/gcc-apple-4.2 -pipe -Os -arch i386 -funsigned-char -fPIE -fPIC -Wall -Wextra -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Werror=format-security -Werror=init-self -Werror=declaration-after-statement -Werror=missing-include-dirs -Werror=implicit-function-declaration -Werror=pointer-arith -Wl,-headerpad_max_install_names -arch i386 -o make-te make-te.o  -L/opt/local/lib /opt/local/lib/libintl.dylib
:info:build ld: -pie can only be used when targeting Mac OS X 10.5 or later
:info:build collect2: ld returned 1 exit status

comment:4 Changed 8 years ago by ken-cunningham-webuse

the issue might be in this command from src/common/Makefile.in

LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
	$(AM_LDFLAGS) $(LDFLAGS) -o $@

that include the CFLAGS and AM_CFLAGS in with the link command... it ultimately is rather easier to strip out the -fPIE than repair this, though...

comment:5 Changed 8 years ago by ken-cunningham-webuse

At any rate, I don't see that I'm going to improve this patch any further than this --it works great, and it's not worth more effort. So this patch can suffice for those on Tiger who go looking for it to work, and we can close this ticket off as a 'won't fix'.

comment:6 Changed 8 years ago by raimue (Rainer Müller)

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.