Tcl's channel system will use Expect's input handler (ExpInputProc in exp_chan.c) so verify whether ExpInputProc is even being called. The input handler basically just does a read() which should return immediately IF the pty has been properly configured. Pty misconfiguration is the most likely issue for a new port since every OS loves to have its own pty variant. Verify that configure is choosing the right implementation. If there is no right implementation, might require a comparison of other's...
I'm not doing expect maintenance any more but I can offer some advice: The reasons to include Tcl's internal headers were largely for the Tcl debugger (not an essential tool - can simply be deleted) and to use Expect as a standalone C library (skip it - it's not needed to run Expect). Regarding the use of "open" as a function, Expect itself calls the system open(). Expect does not have its own open().
It was a choice made for efficiency rather than elegance, sorry. It didn't seem worth...
You can complain about the design but it's not a bug. That behavior is documented....