Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Mar 2004 21:00:14 +0100 (CET)
From:      Dimitry Andric <dimitry@andric.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/64310: audio/tclmidi port doesn't compile on 5.x
Message-ID:  <20040315200014.421EE22864@tensor.xs4all.nl>
Resent-Message-ID: <200403152000.i2FK0YGs064605@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         64310
>Category:       ports
>Synopsis:       audio/tclmidi port doesn't compile on 5.x
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Mar 15 12:00:34 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Dimitry Andric
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
n/a
>Environment:
System: FreeBSD tensor.xs4all.nl 5.2-CURRENT FreeBSD 5.2-CURRENT #0: Thu Mar 11 18:44:55 CET 2004 dim@vfbsd5.dim:/usr/obj/usr/src/sys/TENSOR i386
>Description:
The audio/tclmidi port doesn't compile on 5.x-CURRENT, due to usage of an
old-style C++ header, strstream.h.  (Note that it compiles fine on 4.9-STABLE,
but I didn't test any earlier FreeBSD versions.)
>How-To-Repeat:
Uncomment the BROKEN part of audio/tclmidi's Makefile and try to build the port.
This will fail with errors about strstream.h missing.
>Fix:
I cooked up this patch, which adds a placeholder strstream.h file in the
workdir, and patches some of the Makefile.in's to use the workdir in their
include path.

I'm not entirely sure if the EXTRA_PATCHES in an OSVERSION-if is the right way
to do this, but it does work... Although you'll get a lot of warnings during
building about the usage of the old-style headers.

Rewriting this port to use ISO C++ would maybe be better, but will make the diff
a lot larger.  Also, the tclmidi program doesn't really seem to be actively
maintained anyway.

diff -urNd tclmidi/Makefile tclmidi.dim/Makefile
--- tclmidi/Makefile	Sun Mar  7 22:59:35 2004
+++ tclmidi.dim/Makefile	Mon Mar 15 20:36:56 2004
@@ -36,7 +36,10 @@
 .include <bsd.port.pre.mk>
 
 .if ${OSVERSION} >= 502000
-BROKEN=		"Does not compile"
+EXTRA_PATCHES=	${PATCHDIR}/smf.patch ${PATCHDIR}/song.patch
+
+post-extract:
+	@${CP} -f ${FILESDIR}/strstream.h ${WRKSRC}
 .endif
 
 post-install:
diff -urNd tclmidi/files/smf.patch tclmidi.dim/files/smf.patch
--- tclmidi/files/smf.patch	Thu Jan  1 01:00:00 1970
+++ tclmidi.dim/files/smf.patch	Mon Mar 15 20:31:51 2004
@@ -0,0 +1,12 @@
+--- smf/Makefile.in.orig	Thu Oct 10 05:32:53 1996
++++ smf/Makefile.in	Mon Mar 15 16:30:42 2004
+@@ -14,7 +14,8 @@
+ VPATH = @srcdir@
+ 
+ CFLAGS = @CFLAGS@ @DEFS@
+-CC_SWITCHES = @CFLAGS@ @DEFS@ -I${TCL_GENERIC_DIR} ${SHLIB_CFLAGS}
++CC_SWITCHES = @CFLAGS@ @DEFS@ -I${TCL_GENERIC_DIR} ${SHLIB_CFLAGS} \
++    -I$(srcdir)/../smf -I$(srcdir)/../song -I$(srcdir)/.. -I$(srcdir)
+ 
+ SMFFILES = SMFUtils.o SMFHead.o SMFTrack.o
+ SMFFILES_SRC = SMFUtils.cxx SMFHead.cxx SMFTrack.cxx
diff -urNd tclmidi/files/song.patch tclmidi.dim/files/song.patch
--- tclmidi/files/song.patch	Thu Jan  1 01:00:00 1970
+++ tclmidi.dim/files/song.patch	Mon Mar 15 20:31:51 2004
@@ -0,0 +1,11 @@
+--- song/Makefile.in.orig	Thu Oct 10 05:32:55 1996
++++ song/Makefile.in	Mon Mar 15 16:39:34 2004
+@@ -15,7 +15,7 @@
+ 
+ CFLAGS = @CFLAGS@ @DEFS@
+ CC_SWITCHES = @CFLAGS@ @DEFS@ -I${TCL_GENERIC_DIR} ${SHLIB_CFLAGS} \
+-    -I$(srcdir)/../events -I$(srcdir)/../rb -I$(srcdir)/../smf -I$(srcdir)
++    -I$(srcdir)/../events -I$(srcdir)/../rb -I$(srcdir)/../smf -I$(srcdir)/.. -I$(srcdir)
+ 
+ SONGFILES = EvntTree.o Song.o
+ SONGFILES_SRC = EvntTree.cxx Song.cxx
diff -urNd tclmidi/files/strstream.h tclmidi.dim/files/strstream.h
--- tclmidi/files/strstream.h	Thu Jan  1 01:00:00 1970
+++ tclmidi.dim/files/strstream.h	Mon Mar 15 20:31:51 2004
@@ -0,0 +1,44 @@
+// Copyright (C) 2004 Free Software Foundation, Inc.
+//
+// This file is NOT an official part of the GNU ISO C++ Library.  This
+// library is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#ifndef _CPP_BACKWARD_STRSTREAM_H
+#define _CPP_BACKWARD_STRSTREAM_H 1
+
+// Backward warning isn't needed here, you'll get it from strstream anyway.
+//#include "backward_warning.h"
+#include <strstream>
+
+using std::strstreambuf;
+using std::istrstream;
+using std::ostrstream;
+using std::strstream;
+
+#endif
+
+// Local Variables:
+// mode:C++
+// End:
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040315200014.421EE22864>