ports/140073: silc-irssi-plugin crashes upon joining any channel

Nathaniel Filardo nwf at cs.jhu.edu
Thu Oct 29 09:30:03 UTC 2009


>Number:         140073
>Category:       ports
>Synopsis:       silc-irssi-plugin crashes upon joining any channel
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct 29 09:30:02 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Nathaniel Filardo
>Release:        9.0-CURRENT
>Organization:
>Environment:
FreeBSD nwf 9.0-CURRENT FreeBSD 9.0-CURRENT #11: Mon Oct 19 22:08:50 EDT 2009     root at hydra.priv.oc.ietfng.org:/systank/obj/systank/src/sys/NWFKERN  sparc64

>Description:
This looks like http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=522080 .
>How-To-Repeat:
Build irssi-silc-plugin and the current irssi port.  Load silc, attempt to join channel, observe sparks.
>Fix:
The Debian guys wrote a custom build system to solve this problem, which I have pushed in some form or another to work on the version in ports (i.e., currently 1.1.8).

Using the attached Makefile.override and Makefile.override.PL (and gmake, sorry), my notes from this process say to ...

Run config, extract, configure as usual via the ports system.
Enter the work directory.

(cd lib; make)

## apps/irssi/src/silc/core/silc-expandos.c needs to be patched to include silcdefs.h
## apps/irssi/src/silc/core/silc-core.c needs to be patched to include glib/goption.h

gmake -f Makefile.override apps/irssi/src/fe-common/silc/libfe_silc.{so,a}
gmake -f Makefile.override apps/irssi/src/silc/core/libsilc_core.{so,a}

cp Makefile.override.PL apps/irssi/src/perl/silc/Makefile.PL
gmake -f Makefile.override build-perl

# This builds but I'm not sure what to do with it... trying "make install" in 
# apps/irssi/src/perl/silc/ tries to rebuild things and that's a bad idea.

# Manually copy the silc libraries over
cp lib/.libs/libsilc*.so /usr/local/lib/

# Manually copy the irssi libraries over
cp apps/irssi/src/fe-common/silc/libfe_silc.so /usr/local/lib/irssi/modules
cp apps/irssi/src/silc/core/libsilc_core.so /usr/local/lib/irssi/modules

# At this point it works to load silc and join channels...
# and doesn't crash (!) but this clearly is far from ideal as far as
# "getting it right".
# In any case, if somebody wants to clean this up, here it is.

Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	Makefile.override
#	Makefile.override.PL
#
echo x - Makefile.override
sed 's/^X//' >Makefile.override << 'a204fbcd70c823ed3acf8e56d040f028'
X
XLDFLAGS = -L$(CURDIR)/lib/.libs
XCFLAGS = \
X	-g \
X	-W -ggdb -Wall \
X	-I/usr/local/include/irssi \
X	-I/usr/local/include/irssi/src \
X	-I/usr/local/include/irssi/src/core \
X	-I/usr/local/include/irssi/src/fe-common/core \
X	-Iapps/irssi/src \
X	-I$(SILC_CORE_DIR) \
X	-Iincludes \
X	-I. \
X	$(addprefix -I,$(shell echo lib/silc* )) \
X	-fPIC \
X	-DUOFF_T_LONG -DHAVE_CONFIG_H=1 -DSILC_PLUGIN=1 \
X	-DPACKAGE=\"silc-client\" -DVERSION=\"$(VERSION)\" \
X	$(shell pkg-config --cflags glib-2.0) \
X
XPERL_INC = \
X	-I/usr/local/include/irssi \
X	-I/usr/local/include/irssi/src \
X	-I/usr/local/include/irssi/src/core \
X	-I/usr/local/include/irssi/src/fe-common/core \
X	-I$(CURDIR)/includes \
X	$(addprefix -I$(CURDIR)/,$(shell echo lib/silc* )) \
X	-I$(CURDIR)/apps/irssi/src \
X	-I$(CURDIR)/$(SILC_CORE_DIR)
XPERL_CFLAGS = \
X	-DUOFF_T_LONG -DSILC_PLUGIN=1 -DHAVE_PL_PERL \
X	$(shell pkg-config --cflags glib-2.0)
X
XSILC_CORE_DIR = apps/irssi/src/silc/core
XSILC_CORE_LIB = silc_core
XSILC_CORE_SRCS = \
X	clientutil.c \
X	silc-channels.c \
X	silc-core.c \
X	silc-nicklist.c \
X	silc-queries.c \
X	silc-servers.c \
X	silc-expandos.c \
X	silc-servers-reconnect.c \
X	silc-lag.c \
X	silc-chatnets.c \
X	silc-cmdqueue.c \
X	client_ops.c
XSILC_CORE_OBJS = $(addprefix $(SILC_CORE_DIR)/,$(subst .c,.o,$(SILC_CORE_SRCS)))
XSILC_CORE_LIBS = -lsilc -lsilcclient $(shell pkg-config --libs glib-2.0)
X
XFE_SILC_DIR = apps/irssi/src/fe-common/silc
XFE_SILC_LIB = fe_silc
XFE_SILC_SRCS = \
X	fe-common-silc.c \
X	fe-silc-channels.c \
X	fe-silc-messages.c \
X	fe-silc-queries.c \
X	fe-silcnet.c \
X	module-formats.c \
X	silc-modules.c
XFE_SILC_OBJS = $(addprefix $(FE_SILC_DIR)/,$(subst .c,.o,$(FE_SILC_SRCS)))
XFE_SILC_LIBS = $(shell pkg-config --libs glib-2.0)
X
X$(SILC_CORE_DIR)/lib$(SILC_CORE_LIB).a: $(SILC_CORE_OBJS)
X	$(AR) -rsc $@ $^ 
X
X$(SILC_CORE_DIR)/lib$(SILC_CORE_LIB).so: $(SILC_CORE_OBJS)
X	$(CC) -o $@ $^ $(LDFLAGS) -shared $(SILC_CORE_LIBS)
X
X$(FE_SILC_DIR)/lib$(FE_SILC_LIB).a: $(FE_SILC_OBJS)
X	$(AR) -rsc $@ $^
X
X$(FE_SILC_DIR)/lib$(FE_SILC_LIB).so: $(FE_SILC_OBJS)
X	$(CC) -o $@ $^ $(LDFLAGS) -shared $(SILC_CORE_LIBS)
X
Xapps/irssi/src/%.o: apps/irssi/src/%.c
X	$(CC) -o $@ -c $(CFLAGS) $<
X
Xbuild-perl:
X	cp $(CURDIR)/apps/irssi/src/perl/silc/Makefile.override.PL $(CURDIR)/apps/irssi/src/perl/silc/Makefile.PL
X	(cd $(CURDIR)/apps/irssi/src/perl/silc && \
X	 perl Makefile.PL \
X		INSTALLDIRS=vendor \
X		INC="$(PERL_INC)" CCFLAGS="$(PERL_CFLAGS)" && \
X	 $(MAKE))
X
Xbuild: build-perl $(SILC_CORE_DIR)/lib$(SILC_CORE_LIB).so $(FE_SILC_DIR)/lib$(FE_SILC_LIB).so
a204fbcd70c823ed3acf8e56d040f028
echo x - Makefile.override.PL
sed 's/^X//' >Makefile.override.PL << '4a31f55c742d5b8e817f60f4e00ffb1d'
Xuse ExtUtils::MakeMaker;
X
Xsub MY::post_constants {
X	'include ../../../Makefile.defines_int';
X}
X
XWriteMakefile('NAME' => 'Irssi::Silc',
X	      'LIBS' => '',
X	      'OBJECT' => '$(O_FILES)',
X	      'TYPEMAPS' => ['../common/typemap'],
X	      'VERSION_FROM' => './Silc.pm');
4a31f55c742d5b8e817f60f4e00ffb1d
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list