Bug 185696 - textproc/sdcv: Fix build with clang
Summary: textproc/sdcv: Fix build with clang
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-01-12 18:40 UTC by tkato432
Modified: 2014-01-19 14:30 UTC (History)
0 users

See Also:


Attachments
file.diff (8.28 KB, patch)
2014-01-12 18:40 UTC, tkato432
no flags Details | Diff
textproc_sdcv.diff (7.73 KB, patch)
2014-01-17 15:58 UTC, tkato432
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description tkato432 2014-01-12 18:40:01 UTC
- Fix build with clang

New file:
files/patch-src__lib__lib.cpp
files/patch-src__lib__mapfile.hpp
files/patch-src__libwrapper.cpp
files/patch-src__readline.cpp
files/patch-src__sdcv.cpp
files/patch-src__utils.cpp
Comment 1 tkato432 2014-01-17 15:58:05 UTC
Remake of the patch against current tree.
Comment 2 Martin Wilke freebsd_committer freebsd_triage 2014-01-19 14:26:49 UTC
State Changed
From-To: open->closed

Committed. Thanks!
Comment 3 dfilter service freebsd_committer freebsd_triage 2014-01-19 14:28:45 UTC
Author: miwi
Date: Sun Jan 19 14:28:36 2014
New Revision: 340306
URL: http://svnweb.freebsd.org/changeset/ports/340306
QAT: https://qat.redports.org/buildarchive/r340306/

Log:
  - Fix build with clang
  
  PR:		185696
  Submitted by:	ports fury

Added:
  head/textproc/sdcv/files/patch-src__lib__lib.cpp   (contents, props changed)
  head/textproc/sdcv/files/patch-src__lib__mapfile.hpp   (contents, props changed)
  head/textproc/sdcv/files/patch-src__libwrapper.cpp   (contents, props changed)
  head/textproc/sdcv/files/patch-src__readline.cpp   (contents, props changed)
  head/textproc/sdcv/files/patch-src__sdcv.cpp   (contents, props changed)
  head/textproc/sdcv/files/patch-src__utils.cpp   (contents, props changed)
Modified:
  head/textproc/sdcv/Makefile
  head/textproc/sdcv/pkg-plist   (contents, props changed)

Modified: head/textproc/sdcv/Makefile
==============================================================================
--- head/textproc/sdcv/Makefile	Sun Jan 19 14:25:38 2014	(r340305)
+++ head/textproc/sdcv/Makefile	Sun Jan 19 14:28:36 2014	(r340306)
@@ -10,33 +10,33 @@ MASTER_SITES=	SF
 MAINTAINER=	ports@FreeBSD.org
 COMMENT=	Text-based utility for work with dictionaries in StarDict's format
 
-OPTIONS_DEFINE=	NLS
+LICENSE=	GPLv2 # (or later)
 
 USE_BZIP2=	yes
-GNU_CONFIGURE=	yes
-USE_AUTOTOOLS=	libtool
+USES=		gettext pkgconfig readline
 USE_GNOME=	glib20
-USES=		pkgconfig iconv
+USE_AUTOTOOLS=	libtoolize aclocal automake autoconf
+LIBTOOLIZE_ARGS=--copy --force
+ACLOCAL_ARGS=	--automake-acdir=${ACLOCAL_DIR} -I m4
+AUTOMAKE_ARGS=	--add-missing --copy
+
 SUB_FILES=	pkg-message
 
-NLS_USES=	gettext
-NLS_CPPFLAGS=	-I${LOCALBASE}/include
-NLS_LDFLAGS=	-L${LOCALBASE}/lib
-NLS_CONFIGURE_ENABLE=	nls
+CPPFLAGS+=	-I${LOCALBASE}/include
+LDFLAGS+=	-L${LOCALBASE}/lib
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}/share|g' \
-		${WRKSRC}/doc/sdcv.1
-	@${REINPLACE_CMD} -e '1425 s, install-data,,' \
-		${WRKSRC}/po/Makefile.in.in
-	@${REINPLACE_CMD} -e 's, getopt.h,,g' ${WRKSRC}/src/Makefile.in
-	@${REINPLACE_CMD} -e '146 s|()|(int, char * const [], const char *)|g' \
-		${WRKSRC}/src/getopt.h
-	@${REINPLACE_CMD} -e '516 s|sizeof|(guint32)sizeof|g' \
-		${WRKSRC}/src/lib/lib.cpp
-	@${REINPLACE_CMD} -e 's|/usr/share|${PREFIX}/share|g' \
-		${WRKSRC}/src/sdcv.cpp
-	@${REINPLACE_CMD} -e 's,@mandir@/uk,@mandir@,' \
-		${WRKSRC}/doc/uk/Makefile.in
+.for i in doc/sdcv.1 src/sdcv.cpp
+	@${REINPLACE_CMD} -e \
+		's|/usr/share|${PREFIX}/share|' ${WRKSRC}/${i}
+.endfor
+	@${REINPLACE_CMD} -e \
+		's|@mandir@/uk|@mandir@|' ${WRKSRC}/doc/uk/Makefile.am
+	@${REINPLACE_CMD} -e \
+		's|getopt1.c getopt.h||' ${WRKSRC}/src/Makefile.am
+
+pre-configure:
+	@${RM} -f ${WRKSRC}/m4/gettext.m4
+	@${RM} -f ${WRKSRC}/src/getopt.h
 
 .include <bsd.port.mk>

Added: head/textproc/sdcv/files/patch-src__lib__lib.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__lib__lib.cpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,27 @@
+--- src/lib/lib.cpp.orig
++++ src/lib/lib.cpp
+@@ -496,9 +496,13 @@
+ 		entries[i].keystr=p;
+ 		len=strlen(p);
+ 		p+=len+1;
+-		entries[i].off=g_ntohl(*reinterpret_cast<guint32 *>(p));
++        /*
++         * Can not use typecasting here, because *data does not have
++         * to be alligned and unalligned access fails on some architectures.
++         */
++		entries[i].off=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3];
+ 		p+=sizeof(guint32);
+-		entries[i].size=g_ntohl(*reinterpret_cast<guint32 *>(p));
++		entries[i].size=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3];
+ 		p+=sizeof(guint32);
+ 	}
+ }
+@@ -513,7 +517,7 @@
+ {
+ 	fseek(idxfile, wordoffset[page_idx], SEEK_SET);
+ 	guint32 page_size=wordoffset[page_idx+1]-wordoffset[page_idx];
+-	fread(wordentry_buf, std::min(sizeof(wordentry_buf), page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255.
++	fread(wordentry_buf, std::min(sizeof(wordentry_buf), (size_t)page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255.
+ 	return wordentry_buf;
+ }
+ 

Added: head/textproc/sdcv/files/patch-src__lib__mapfile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__lib__mapfile.hpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,12 @@
+--- src/lib/mapfile.hpp.orig
++++ src/lib/mapfile.hpp
+@@ -5,6 +5,9 @@
+ #  include "config.h"
+ #endif
+ 
++#include <cstdlib>
++#include <unistd.h>
++
+ #ifdef HAVE_MMAP
+ #  include <sys/types.h>
+ #  include <fcntl.h>

Added: head/textproc/sdcv/files/patch-src__libwrapper.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__libwrapper.cpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,50 @@
+--- src/libwrapper.cpp.orig
++++ src/libwrapper.cpp
+@@ -24,6 +24,7 @@
+ 
+ #include <glib/gi18n.h>
+ #include <map>
++#include <cstring>
+ 
+ #include "utils.hpp"
+ 
+@@ -117,7 +118,6 @@
+ 		switch (*p++) {
+ 		case 'm':
+ 		case 'l': //need more work...
+-		case 'g':
+ 			sec_size = strlen(p);
+ 			if (sec_size) {
+ 				res+="\n";
+@@ -127,6 +127,7 @@
+ 			}
+ 			sec_size++;
+ 			break;
++		case 'g':
+ 		case 'x':
+ 			sec_size = strlen(p);
+ 			if (sec_size) {
+@@ -208,6 +209,15 @@
+ 
+ void Library::LookupData(const string &str, TSearchResultList& res_list)
+ {
++#if defined(_LIBCPP_VERSION)
++	std::vector<std::vector<gchar *> > drl(ndicts());
++	if (!Libs::LookupData(str.c_str(), &drl[0]))
++		return;
++	for (int idict=0; idict<ndicts(); ++idict)
++		for (gchar *res : drl[idict]) {
++			SimpleLookup(res, res_list);
++			g_free(res);
++#else
+ 	std::vector<gchar *> drl[ndicts()];
+ 	if (!Libs::LookupData(str.c_str(), drl))
+ 		return;
+@@ -215,6 +225,7 @@
+ 		for (std::vector<gchar *>::size_type j=0; j<drl[idict].size(); ++j) {
+ 			SimpleLookup(drl[idict][j], res_list);
+ 			g_free(drl[idict][j]);
++#endif
+ 		}
+ }
+ 

Added: head/textproc/sdcv/files/patch-src__readline.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__readline.cpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,10 @@
+--- src/readline.cpp.orig
++++ src/readline.cpp
+@@ -23,6 +23,7 @@
+ #endif
+ 
+ #include <cstdio>
++#include <cstdlib>
+ #ifdef WITH_READLINE
+ #  include <readline/readline.h>
+ #  include <readline/history.h>

Added: head/textproc/sdcv/files/patch-src__sdcv.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__sdcv.cpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,15 @@
+--- src/sdcv.cpp.orig
++++ src/sdcv.cpp
+@@ -161,7 +161,11 @@
+ 
+ 	strlist_t dicts_dir_list;
+ 
+-	dicts_dir_list.push_back(std::string(g_get_home_dir())+G_DIR_SEPARATOR+
++	const char *homedir = g_getenv ("HOME");
++	if (!homedir)
++		homedir = g_get_home_dir ();
++
++	dicts_dir_list.push_back(std::string(homedir)+G_DIR_SEPARATOR+
+ 				 ".stardict"+G_DIR_SEPARATOR+"dic");
+ 	dicts_dir_list.push_back(data_dir);   
+ 

Added: head/textproc/sdcv/files/patch-src__utils.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/textproc/sdcv/files/patch-src__utils.cpp	Sun Jan 19 14:28:36 2014	(r340306)
@@ -0,0 +1,11 @@
+--- src/utils.cpp.orig
++++ src/utils.cpp
+@@ -22,6 +22,8 @@
+ #  include "config.h"
+ #endif
+ 
++#include <cstdio>
++#include <cstdlib>
+ #include <glib.h>
+ #include <glib/gi18n.h>
+ 

Modified: head/textproc/sdcv/pkg-plist
==============================================================================
--- head/textproc/sdcv/pkg-plist	Sun Jan 19 14:25:38 2014	(r340305)
+++ head/textproc/sdcv/pkg-plist	Sun Jan 19 14:28:36 2014	(r340306)
@@ -1,7 +1,7 @@
 bin/sdcv
 man/man1/sdcv.1.gz
-%%NLS%%share/locale/ru/LC_MESSAGES/sdcv.mo
-%%NLS%%share/locale/sk/LC_MESSAGES/sdcv.mo
-%%NLS%%share/locale/uk/LC_MESSAGES/sdcv.mo
-%%NLS%%share/locale/zh_CN/LC_MESSAGES/sdcv.mo
-%%NLS%%share/locale/zh_TW/LC_MESSAGES/sdcv.mo
+share/locale/ru/LC_MESSAGES/sdcv.mo
+share/locale/sk/LC_MESSAGES/sdcv.mo
+share/locale/uk/LC_MESSAGES/sdcv.mo
+share/locale/zh_CN/LC_MESSAGES/sdcv.mo
+share/locale/zh_TW/LC_MESSAGES/sdcv.mo
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"