https://buildd.debian.org/status/package.php?p=ns2&suite=sid
<https://buildd.debian.org/status/package.php?p=ns2&suite=sid>
The package fails to configure because of missing otcl:
Well it's not exactly "missing", the package is in the archive
and it was installed for the build, so the question was why
isn't the configure script finding it.
The cause is multiarchification of the otcl packaging. Lukilly
it's pretty easy to workaround from debian/rules.
Not so lukilly after doing so I get link failures :( and I
can't figure out the cause.
g++ -Wl,-export-dynamic -o ns tcp/linux/tcp_naivereno.o tcp/linux/src/tcp_cong.o tcp/linux/src/tcp_highspeed.o tcp/linux/src/tcp_bic.o tcp/linux/src/tcp_htcp.o tcp/linux/src/tcp_scalable.o tcp/linux/src/tcp_cubic.o tcp/linux/src/tcp_westwood.o tcp/linux/src/tcp_vegas.o tcp/linux/src/tcp_hybla.o tcp/linux/src/tcp_illinois.o tcp/linux/src/tcp_yeah.o tcp/linux/src/tcp_veno.o tcp/linux/src/tcp_compound.o tcp/linux/src/tcp_lp.o tcp/linux/ns-linux-c.o tcp/linux/ns-linux-param.o tools/random.o tools/rng.o tools/ranvar.o common/misc.o common/timer-handler.o common/scheduler.o common/object.o common/packet.o common/ip.o routing/route.o common/connector.o common/ttl.o trace/trace.o trace/trace-ip.o classifier/classifier.o classifier/classifier-addr.o classifier/classifier-hash.o classifier/classifier-virtual.o classifier/classifier-mcast.o classifier/classifier-bst.o classifier/classifier-mpath.o mcast/replicator.o classifier/classifier-mac.o classifier/classifier-qs.o classifier/classifier-port.o src_rtg/classifier-sr.o src_rtg/sragent.o src_rtg/hdr_src.o adc/ump.o qs/qsagent.o qs/hdr_qs.o apps/app.o apps/telnet.o tcp/tcplib-telnet.o tools/trafgen.o trace/traffictrace.o tools/pareto.o tools/expoo.o tools/cbr_traffic.o adc/tbf.o adc/resv.o adc/sa.o tcp/saack.o tools/measuremod.o adc/estimator.o adc/adc.o adc/ms-adc.o adc/timewindow-est.o adc/acto-adc.o adc/pointsample-est.o adc/salink.o adc/actp-adc.o adc/hb-adc.o adc/expavg-est.o adc/param-adc.o adc/null-estimator.o adc/adaptive-receiver.o apps/vatrcvr.o adc/consrcvr.o common/agent.o common/message.o apps/udp.o common/session-rtp.o apps/rtp.o tcp/rtcp.o common/ivs.o common/messpass.o common/tp.o common/tpm.o apps/worm.o tcp/tcp.o tcp/tcp-sink.o tcp/tcp-reno.o tcp/tcp-newreno.o tcp/tcp-vegas.o tcp/tcp-rbp.o tcp/tcp-full.o tcp/rq.o baytcp/tcp-full-bay.o baytcp/ftpc.o baytcp/ftps.o tcp/scoreboard.o tcp/scoreboard-rq.o tcp/tcp-sack1.o tcp/tcp-fack.o tcp/scoreboard1.o tcp/tcp-linux.o tcp/linux/ns-linux-util.o tcp/tcp-asym.o tcp/tcp-asym-sink.o tcp/tcp-fs.o tcp/tcp-asym-fs.o tcp/tcp-int.o tcp/chost.o tcp/tcp-session.o tcp/nilist.o sctp/sctp.o apps/sctp_app1.o sctp/sctp-timestamp.o sctp/sctp-hbAfterRto.o sctp/sctp-multipleFastRtx.o sctp/sctp-mfrHbAfterRto.o sctp/sctp-mfrTimestamp.o sctp/sctp-cmt.o sctp/sctpDebug.o dccp/dccp_sb.o dccp/dccp_opt.o dccp/dccp_ackv.o dccp/dccp_packets.o dccp/dccp.o dccp/dccp_tcplike.o dccp/dccp_tfrc.o tools/integrator.o tools/queue-monitor.o tools/flowmon.o tools/loss-monitor.o queue/queue.o queue/drop-tail.o adc/simple-intserv-sched.o queue/red.o queue/semantic-packetqueue.o queue/semantic-red.o tcp/ack-recons.o queue/sfq.o queue/fq.o queue/drr.o queue/srr.o queue/cbq.o queue/jobs.o queue/marker.o queue/demarker.o link/hackloss.o queue/errmodel.o queue/fec.o link/delay.o tcp/snoop.o gaf/gaf.o link/dynalink.o routing/rtProtoDV.o common/net-interface.o mcast/ctrMcast.o mcast/mcast_ctrl.o mcast/srm.o common/sessionhelper.o queue/delaymodel.o mcast/srm-ssm.o mcast/srm-topo.o routing/alloc-address.o routing/address.o lib/int.Vec.o lib/int.RVec.o lib/dmalloc_support.o webcache/http.o webcache/tcp-simple.o webcache/pagepool.o webcache/inval-agent.o webcache/tcpapp.o webcache/http-aux.o webcache/mcache.o webcache/webtraf.o webcache/webserver.o webcache/logweb.o empweb/empweb.o empweb/empftp.o realaudio/realaudio.o mac/lanRouter.o classifier/filter.o common/pkt-counter.o common/Decapsulator.o common/Encapsulator.o common/encap.o mac/channel.o mac/mac.o mac/ll.o mac/mac-802_11.o mac/mac-802_11Ext.o mac/mac-802_3.o mac/mac-tdma.o mac/smac.o mobile/mip.o mobile/mip-reg.o mobile/gridkeeper.o mobile/propagation.o mobile/tworayground.o mobile/nakagami.o mobile/antenna.o mobile/omni-antenna.o mobile/shadowing.o mobile/shadowing-vis.o mobile/dumb-agent.o common/bi-connector.o common/node.o common/mobilenode.o mac/arp.o mobile/god.o mobile/dem.o mobile/topography.o mobile/modulation.o queue/priqueue.o queue/dsr-priqueue.o mac/phy.o mac/wired-phy.o mac/wireless-phy.o mac/wireless-phyExt.o mac/mac-timers.o trace/cmu-trace.o mac/varp.o mac/mac-simple.o satellite/sat-hdlc.o dsdv/dsdv.o dsdv/rtable.o queue/rtqueue.o routing/rttable.o imep/imep.o imep/dest_queue.o imep/imep_api.o imep/imep_rt.o imep/rxmit_queue.o imep/imep_timers.o imep/imep_util.o imep/imep_io.o tora/tora.o tora/tora_api.o tora/tora_dest.o tora/tora_io.o tora/tora_logs.o tora/tora_neighbor.o dsr/dsragent.o dsr/hdr_sr.o dsr/mobicache.o dsr/path.o dsr/requesttable.o dsr/routecache.o dsr/add_sr.o dsr/dsr_proto.o dsr/flowstruct.o dsr/linkcache.o dsr/simplecache.o dsr/sr_forwarder.o aodv/aodv_logs.o aodv/aodv.o aodv/aodv_rtable.o aodv/aodv_rqueue.o aomdv/aomdv_logs.o aomdv/aomdv.o aomdv/aomdv_rtable.o aomdv/aomdv_rqueue.o puma/puma.o mdart/mdart_adp.o mdart/mdart_dht.o mdart/mdart_ndp.o mdart/mdart_neighbor.o mdart/mdart_queue.o mdart/mdart_table.o mdart/mdart.o common/ns-process.o satellite/satgeometry.o satellite/sathandoff.o satellite/satlink.o satellite/satnode.o satellite/satposition.o satellite/satroute.o satellite/sattrace.o rap/raplist.o rap/rap.o rap/media-app.o rap/utilities.o common/fsm.o tcp/tcp-abs.o diffusion/diffusion.o diffusion/diff_rate.o diffusion/diff_prob.o diffusion/diff_sink.o diffusion/flooding.o diffusion/omni_mcast.o diffusion/hash_table.o diffusion/routing_table.o diffusion/iflist.o tcp/tfrc.o tcp/tfrc-sink.o mobile/energy-model.o apps/ping.o tcp/tcp-rfc793edu.o queue/rio.o queue/semantic-rio.o tcp/tcp-sack-rh.o tcp/scoreboard-rh.o plm/loss-monitor-plm.o plm/cbr-traffic-PP.o linkstate/hdr-ls.o mpls/classifier-addr-mpls.o mpls/ldp.o mpls/mpls-module.o routing/rtmodule.o classifier/classifier-hier.o routing/addr-params.o nix/hdr_nv.o nix/classifier-nix.o nix/nixnode.o routealgo/rnode.o routealgo/bfs.o routealgo/rbitmap.o routealgo/rlookup.o routealgo/routealgo.o nix/nixvec.o nix/nixroute.o diffserv/dsred.o diffserv/dsredq.o diffserv/dsEdge.o diffserv/dsCore.o diffserv/dsPolicy.o diffserv/ew.o diffserv/dewp.o queue/red-pd.o queue/pi.o queue/vq.o queue/rem.o queue/gk.o pushback/rate-limit.o pushback/rate-limit-strategy.o pushback/ident-tree.o pushback/agg-spec.o pushback/logging-data-struct.o pushback/rate-estimator.o pushback/pushback-queue.o pushback/pushback.o common/parentnode.o trace/basetrace.o common/simulator.o asim/asim.o common/scheduler-map.o common/splay-scheduler.o linkstate/ls.o linkstate/rtProtoLS.o pgm/classifier-pgm.o pgm/pgm-agent.o pgm/pgm-sender.o pgm/pgm-receiver.o mcast/rcvbuf.o mcast/classifier-lms.o mcast/lms-agent.o mcast/lms-receiver.o mcast/lms-sender.o queue/delayer.o xcp/xcpq.o xcp/xcp.o xcp/xcp-end-sys.o wpan/p802_15_4csmaca.o wpan/p802_15_4fail.o wpan/p802_15_4hlist.o wpan/p802_15_4mac.o wpan/p802_15_4nam.o wpan/p802_15_4phy.o wpan/p802_15_4sscs.o wpan/p802_15_4timer.o wpan/p802_15_4trace.o wpan/p802_15_4transac.o apps/pbc.o diffusion3/lib/nr/nr.o diffusion3/lib/dr.o diffusion3/filters/diffusion/one_phase_pull.o diffusion3/filters/diffusion/two_phase_pull.o diffusion3/lib/diffapp.o diffusion3/ns/diffagent.o diffusion3/ns/diffrtg.o diffusion3/ns/difftimer.o diffusion3/filter_core/filter_core.o diffusion3/filter_core/iolog.o diffusion3/filter_core/iostats.o diffusion3/lib/main/attrs.o diffusion3/lib/main/events.o diffusion3/lib/main/iodev.o diffusion3/lib/main/iohook.o diffusion3/lib/main/timers.o diffusion3/lib/main/message.o diffusion3/lib/main/tools.o diffusion3/apps/gear_examples/gear_common.o diffusion3/apps/gear_examples/gear_receiver.o diffusion3/apps/gear_examples/gear_sender.o diffusion3/apps/rmst_examples/rmst_sink.o diffusion3/apps/rmst_examples/rmst_source.o diffusion3/apps/ping/1pp_ping_sender.o diffusion3/apps/ping/1pp_ping_receiver.o diffusion3/apps/ping/2pp_ping_sender.o diffusion3/apps/ping/2pp_ping_receiver.o diffusion3/apps/ping/ping_common.o diffusion3/apps/ping/push_receiver.o diffusion3/apps/ping/push_sender.o diffusion3/filters/gear/gear_attr.o diffusion3/filters/gear/gear.o diffusion3/filters/gear/gear_tools.o diffusion3/filters/misc/log.o diffusion3/filters/misc/srcrt.o diffusion3/filters/misc/tag.o diffusion3/filters/rmst/rmst.o diffusion3/filters/rmst/rmst_filter.o delaybox/delaybox.o packmime/packmime_HTTP.o packmime/packmime_HTTP_rng.o packmime/packmime_OL.o packmime/packmime_OL_ranvar.o packmime/packmime_ranvar.o tmix/tmix.o tmix/tmixAgent.o tmix/tmix_delaybox.o gen/version.o gen/ns_tcl.o gen/ptypes.o common/win32.o common/tclAppInit.o common/main-monolithic.o -L/usr/lib/x86_64-linux-gnu -ltclcl -L/usr/lib/x86_64-linux-gnu -lotcl -L/usr/lib -ltk8.5 -L/usr/lib -ltcl8.5 -L/usr/lib/x86_64-linux-gnu -lXext -lX11 -lnsl -lpcap -ldl -lm -lm
tools/queue-monitor.o: In function `QueueMonitor::QueueMonitor()':
queue-monitor.cc:(.text._ZN12QueueMonitorC2Ev[_ZN12QueueMonitorC5Ev]+0x202):
undefined reference to `TclObject::bind(char const*, long*)'
queue-monitor.cc:(.text._ZN12QueueMonitorC2Ev[_ZN12QueueMonitorC5Ev]+0x21b):
undefined reference to `TclObject::bind(char const*, long*)'
queue-monitor.cc:(.text._ZN12QueueMonitorC2Ev[_ZN12QueueMonitorC5Ev]+0x234):
undefined reference to `TclObject::bind(char const*, long*)'
queue-monitor.cc:(.text._ZN12QueueMonitorC2Ev[_ZN12QueueMonitorC5Ev]+0x24d):
undefined reference to `TclObject::bind(char const*, long*)'
packmime/packmime_OL.o: In function `PackMimeOpenLoop::PackMimeOpenLoop()':
packmime_OL.cc:(.text+0x85): undefined reference to `TclObject::bind(char
const*, long*)'
collect2: ld returned 1 exit status
make[1]: *** [ns] Error 1
make[1]: Leaving directory `/ns2-2.35~rc10+dfsg'
dh_auto_build: make -j1 returned exit code 2
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
debian:/ns2-2.35~rc10+dfsg#
I'm not a tcl expert but this looks like a tclcl issue to me. The
versions of tclcl installed are given below
debian:/# dpkg -l *tclcl*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
un libtclcl-dev <none> (no description available)
ii libtclcl1 1.20-6 shared library of TclCL
ii libtclcl1-dev 1.20-6 development files of TclCL
ii tclcl 1.20-6 tcl2c++ and otcldoc program from tclcl
ii tclcl-dev 1.20-6 transitional dummy package to libtclcl-dev
debian:/#
I would cc the maintainers of tclcl but after looking closer it seems they are
the same as the maintainers of ns2 anyway.
P.S. I've attatched the patch for the configure script issue.
diff -ur ns2-2.35~rc10+dfsg/debian/control ns2-2.35~rc10+dfsg.new/debian/control
--- ns2-2.35~rc10+dfsg/debian/control 2011-10-29 14:13:27.000000000 +0000
+++ ns2-2.35~rc10+dfsg.new/debian/control 2012-01-07 02:16:04.000000000 +0000
@@ -7,6 +7,7 @@
Build-Depends: debhelper (>= 7.0.50~), quilt (>= 0.46-7~), autotools-dev,
tcl-dev, tk-dev, libxext-dev, libxt-dev, xgraph, libpcap0.8-dev,
libotcl1-dev, tclcl, tclcl-dev (>=1.20~RC3-3), perl (>=5.003)
+ dpkg-dev (>= 1.16.0)
Standards-Version: 3.9.2
Vcs-git: git://git.debian.org/git/pkg-netsim/ns2.git
Vcs-Browser: http://git.debian.org/?p=pkg-netsim/ns2.git
Only in ns2-2.35~rc10+dfsg.new/debian/: ns2-doc.debhelper.log
Only in ns2-2.35~rc10+dfsg.new/debian/: ns2-examples.debhelper.log
Only in ns2-2.35~rc10+dfsg.new/debian/: ns2.debhelper.log
diff -ur ns2-2.35~rc10+dfsg/debian/rules ns2-2.35~rc10+dfsg.new/debian/rules
--- ns2-2.35~rc10+dfsg/debian/rules 2011-10-29 12:02:59.000000000 +0000
+++ ns2-2.35~rc10+dfsg.new/debian/rules 2012-01-07 01:15:58.000000000 +0000
@@ -19,6 +19,7 @@
dh_auto_clean -a
find . -name "*.o" -exec rm {} \;
find . -name ".cvsignore" -exec rm {} \;
+ rm -f config.log
override_dh_auto_install:
mkdir -p debian/tmp/usr/bin
@@ -29,3 +30,15 @@
override_dh_installchangelogs:
dh_installchangelogs CHANGES.html
+
+
+# set the --x-libraries= setting to the multiarch libdir.
+# this was the easiest way to make the configure script
+# find the multiarched otcl. I couldn't use --with-otcl=
+# because that makes unwanted assumptions about the
+# relative locations of the library and headers.
+
+DEB_HOST_MULTIARCH ?= dpkg-architecture -qDEB_HOST_MULTIARCH
+
+override_dh_auto_configure:
+ dh_auto_configure -- --x-libraries=/usr/lib/$(DEB_HOST_MULTIARCH)
\ No newline at end of file