Opened 12 years ago

Closed 12 years ago

#37505 closed defect (fixed)

blt: build fails with tcl 8.6

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: markd@…
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: haspatch Cc: howarth@…
Port: blt

Description

https://build.macports.org/builders/buildports-snowleopard-x86_64/builds/13450/steps/compile/logs/stdio

/usr/bin/gcc-4.2 -c -Wall -pipe -O3 -fno-common -arch x86_64   -I. -I.  -I/opt/local/include bltVecMath.c
bltVecMath.c: In function ‘MathError’:
bltVecMath.c:767: error: ‘Tcl_Interp’ has no member named ‘result’
bltVecMath.c:774: error: ‘Tcl_Interp’ has no member named ‘result’
bltVecMath.c:780: error: ‘Tcl_Interp’ has no member named ‘result’
bltVecMath.c:789: error: ‘Tcl_Interp’ has no member named ‘result’
make[1]: *** [bltVecMath.o] Error 1

blt needs a revbump also once this is fixed, to rebuild with the 8.6 libs.

Attachments (7)

blt.diff (581 bytes) - added by ryandesign (Ryan Carsten Schmidt) 12 years ago.
main.log (168.3 KB) - added by ryandesign (Ryan Carsten Schmidt) 12 years ago.
successful_main.log (229.4 KB) - added by howarth@… 12 years ago.
successful main log for build of blt against tcl/tk 8.6
patch-tk8.6 (781 bytes) - added by howarth@… 12 years ago.
patch for tk 8.6 changes to blt
patch-library-Makefile.in (566 bytes) - added by howarth@… 12 years ago.
add DESTROOT change to patch-library-Makefile.in patch
patch-man-Makefile.in (300 bytes) - added by howarth@… 12 years ago.
new patch-man-Makefile.in patch to add DESTROOT change
Portfile.diff (3.7 KB) - added by howarth@… 12 years ago.
Portfile.diff with pre-activate block to handle files installed outside of destrroot by previous packaging

Download all attachments as: .zip

Change History (19)

Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: blt.diff added

comment:1 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

This patch gets past this error but then fails at:

Undefined symbols for architecture x86_64:
  "_TkCopyAndGlobalEval", referenced from:
      _ButtonWidgetCmd in libBLT.a(tkButton.o)
ld: symbol(s) not found for architecture x86_64

comment:2 Changed 12 years ago by jmroot (Joshua Root)

Duplicate #37532 has a patch for this second problem.

comment:3 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Keywords: haspatch added

comment:4 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: howarth@… added

With the patch from #37532 blt builds successfully, but staging fails. First, everything is recompiled during the destroot phase, which wastes time, and I'm not sure why it does that. Then, it installs everything in src into the destroot, but then tries to install everything in library directly, bypassing destroot, which of course fails with a permission error.

make[1]: Leaving directory `/opt/local/var/macports/build/_Users_rschmidt_macports_dports_x11_blt/blt/work/blt2.4z/src'
(cd library; /usr/bin/make install)
make[1]: Entering directory `/opt/local/var/macports/build/_Users_rschmidt_macports_dports_x11_blt/blt/work/blt2.4z/library'
rm -f pkgIndex.tcl
sed -e 's/%VERSION%/2.4/' ./pkgIndex.tcl.in | \
	sed -e 's/%LIB_PREFIX%/lib/' | \
	sed -e 's;%LIB_DIR%;/opt/local/lib;' > pkgIndex.tcl
for i in dd-color.tcl dd-file.tcl dd-number.tcl dd-text.tcl tclIndex ; do \
	    /usr/bin/install -c -m 644 ./dd_protocols/$i \
			/opt/local/lib/blt2.4/dd_protocols ; \
	done 
install: /opt/local/lib/blt2.4/dd_protocols/dd-color.tcl: Operation not permitted
install: /opt/local/lib/blt2.4/dd_protocols/dd-file.tcl: Operation not permitted
install: /opt/local/lib/blt2.4/dd_protocols/dd-number.tcl: Operation not permitted
install: /opt/local/lib/blt2.4/dd_protocols/dd-text.tcl: Operation not permitted
install: /opt/local/lib/blt2.4/dd_protocols/tclIndex: Operation not permitted
make[1]: *** [install] Error 71

Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log added

comment:5 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Jack, does blt install successfully for you with the patch you added to #37532? If so, we need to figure out what's different between your machine and mine and why it won't install on mine.

comment:6 in reply to:  5 Changed 12 years ago by howarth@…

How are you building blt under MacPorts? I am only using 'sudo port -d install blt'. Are you using some additional options?

comment:7 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

That's what I'm doing as well. Could you attach the main.log from your successful build? If you haven't already, you'll need to set "keeplogs yes" in macports.conf, or install with the -k flag.

Changed 12 years ago by howarth@…

Attachment: successful_main.log added

successful main log for build of blt against tcl/tk 8.6

comment:8 Changed 12 years ago by howarth@…

There are a couple additional errors in the current blt packaging...

1) the blt build isn't parallel safe (see fink packaging)
2) the library/Makefile.in and man/Makefile.in aren't patched to add DESTROOT

Changed 12 years ago by howarth@…

Attachment: patch-tk8.6 added

patch for tk 8.6 changes to blt

Changed 12 years ago by howarth@…

Attachment: patch-library-Makefile.in added

add DESTROOT change to patch-library-Makefile.in patch

Changed 12 years ago by howarth@…

Attachment: patch-man-Makefile.in added

new patch-man-Makefile.in patch to add DESTROOT change

comment:9 Changed 12 years ago by howarth@…

The newly attached Portfile.diff, revised patch-library-Makefile.in patch, new patch-man-Makefile.in and patch-tk8.6 should solve the install issues.
Note that if you have installed the previous blt, you will run into previously unpackaged man page files from blt that that have to be manually removed.

comment:10 in reply to:  9 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to howarth@…:

The newly attached Portfile.diff, revised patch-library-Makefile.in patch, new patch-man-Makefile.in and patch-tk8.6 should solve the install issues.

Thanks, I'll check it out.

Note that if you have installed the previous blt, you will run into previously unpackaged man page files from blt that that have to be manually removed.

If so, we'll need to fix that in the port, by deleting the offending files in a pre-activate block. The lisaem port has an example of how this can be done.

Changed 12 years ago by howarth@…

Attachment: Portfile.diff added

Portfile.diff with pre-activate block to handle files installed outside of destrroot by previous packaging

comment:11 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

I have this almost ready.

comment:12 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

Sorry, I didn't realize you had attached a revised patch. (Trac does not send email notifications for new attachments.) I had already fixed this a different way locally, with just a single loop that iterates over all files to remove, based on the list of files I found on my system. In addition, I fixed the location where the manpages were installed. In so doing, I realized that blt is trying to install two manpages that tk already installs. One of them—busy.n—appears to describe the same functionality, so I deleted blt's version of it since it's older. The other—bitmap.n—appears to describe different functionality, so I renamed blt's version to blt-bitmap.n.

It's all committed in r101438. Thanks.

Note: See TracTickets for help on using tickets.