diff --git a/README.md b/README.md index e81e424..7827f91 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # abiword +AbiWord is a free word processing program similar to Microsoft Word. +It is suitable for typing papers, letters, reports, memos, and so forth. + diff --git a/abiword-2.8.6-gcc-4.7.patch b/abiword-2.8.6-gcc-4.7.patch new file mode 100644 index 0000000..a88c0c7 --- /dev/null +++ b/abiword-2.8.6-gcc-4.7.patch @@ -0,0 +1,11 @@ +diff -ru abiword-2.8.6.orig/src/af/util/xp/ut_go_file.h abiword-2.8.6/src/af/util/xp/ut_go_file.h +--- abiword-2.8.6.orig/src/af/util/xp/ut_go_file.h 2009-08-27 15:27:10.000000000 +0200 ++++ abiword-2.8.6/src/af/util/xp/ut_go_file.h 2012-08-16 08:03:13.134073474 +0200 +@@ -31,7 +31,6 @@ + + #include + #include +-#include + #include + + G_BEGIN_DECLS diff --git a/abiword-2.8.6-libpng-1.5.patch b/abiword-2.8.6-libpng-1.5.patch new file mode 100644 index 0000000..9ec6ea3 --- /dev/null +++ b/abiword-2.8.6-libpng-1.5.patch @@ -0,0 +1,111 @@ +diff -up abiword-2.8.6/plugins/bmp/xp/ie_impGraphic_BMP.cpp.png15 abiword-2.8.6/plugins/bmp/xp/ie_impGraphic_BMP.cpp +--- abiword-2.8.6/plugins/bmp/xp/ie_impGraphic_BMP.cpp.png15 2012-02-27 15:39:39.258617605 -0500 ++++ abiword-2.8.6/plugins/bmp/xp/ie_impGraphic_BMP.cpp 2012-02-27 15:48:37.830936901 -0500 +@@ -191,7 +191,14 @@ UT_Error IE_ImpGraphic_BMP::_convertGrap + + /* Clean Up Memory Used */ + ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ int num_palette; ++ png_colorp palette; ++ png_get_PLTE(m_pPNG, m_pPNGInfo, &palette, &num_palette); ++ FREEP(palette); ++#else + FREEP(m_pPNGInfo->palette); ++#endif + DELETEP(pBB); + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + +@@ -313,7 +320,11 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(m_pPNG))) ++#else + if (setjmp(m_pPNG->jmpbuf)) ++#endif + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); +@@ -332,7 +343,11 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB) + { + /* Reset error handling for libpng */ ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(m_pPNG))) ++#else + if (setjmp(m_pPNG->jmpbuf)) ++#endif + { + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + return UT_ERROR; +@@ -372,7 +387,11 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB) + { + /* Reset error handling for libpng */ ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(m_pPNG))) ++#else + if (setjmp(m_pPNG->jmpbuf)) ++#endif + { + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + return UT_ERROR; +diff -up abiword-2.8.6/plugins/garble/xp/abiword-garble-png.cpp.png15 abiword-2.8.6/plugins/garble/xp/abiword-garble-png.cpp +--- abiword-2.8.6/plugins/garble/xp/abiword-garble-png.cpp.png15 2012-02-27 15:31:30.178868169 -0500 ++++ abiword-2.8.6/plugins/garble/xp/abiword-garble-png.cpp 2012-02-27 15:36:17.795368497 -0500 +@@ -79,7 +79,11 @@ bool abiword_document::garble_png( void* + png_set_strip_alpha( png_ptr ); + png_set_interlace_handling( png_ptr ); + png_set_bgr( png_ptr ); ++#if (PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4) && defined(PNG_EASY_ACCESS_SUPPORTED) ++ rowbytes = png_get_rowbytes( png_ptr, info_ptr ); ++#else + rowbytes = info_ptr->rowbytes; ++#endif + png_destroy_read_struct( &png_ptr, &info_ptr, NULL ); + } + +diff -up abiword-2.8.6/src/af/util/xp/ut_png.cpp.png15 abiword-2.8.6/src/af/util/xp/ut_png.cpp +--- abiword-2.8.6/src/af/util/xp/ut_png.cpp.png15 2012-02-27 15:11:18.599397989 -0500 ++++ abiword-2.8.6/src/af/util/xp/ut_png.cpp 2012-02-27 15:12:20.560859433 -0500 +@@ -71,7 +71,11 @@ bool UT_PNG_getDimensions(const UT_ByteB + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(png_ptr))) ++#else + if (setjmp(png_ptr->jmpbuf)) ++#endif + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_read_struct(&png_ptr, &info_ptr, static_cast(NULL)); +diff -up abiword-2.8.6/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp.png15 abiword-2.8.6/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp +--- abiword-2.8.6/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp.png15 2012-02-27 15:24:23.959572417 -0500 ++++ abiword-2.8.6/src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp 2012-02-27 15:26:42.549367943 -0500 +@@ -185,7 +185,11 @@ UT_Error IE_ImpGraphic_GdkPixbuf::import + /** needed for the stejmp context */ + UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf) + { ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(m_pPNG))) ++#else + if (setjmp(m_pPNG->jmpbuf)) ++#endif + { + DELETEP(m_pPngBB); + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); +@@ -446,7 +450,11 @@ UT_Error IE_ImpGraphic_GdkPixbuf::Initia + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ ++#if PNG_LIBPNG_VER_MAJOR >= 1 && PNG_LIBPNG_VER_MINOR >= 4 ++ if (setjmp(png_jmpbuf(m_pPNG))) ++#else + if (setjmp(m_pPNG->jmpbuf)) ++#endif + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); diff --git a/abiword-2.8.6-libwpd-0.9.patch b/abiword-2.8.6-libwpd-0.9.patch new file mode 100644 index 0000000..a3f4a47 --- /dev/null +++ b/abiword-2.8.6-libwpd-0.9.patch @@ -0,0 +1,391 @@ +--- plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (revision 29401) ++++ plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (revision 29403) +@@ -60,7 +60,7 @@ + + // Stream class + +-#include ++#include + + #include + #include +@@ -70,12 +70,7 @@ + #include + #endif + +-class AbiWordperfectInputStream : +-#ifdef HAVE_LIBWPS +- public WPSInputStream +-#else +- public WPXInputStream +-#endif ++class AbiWordperfectInputStream : public WPXInputStream + { + public: + AbiWordperfectInputStream(GsfInput *input); +@@ -86,7 +81,7 @@ + + virtual WPXInputStream * getDocumentOLEStream(const char * name); + +- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); ++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); + virtual int seek(long offset, WPX_SEEK_TYPE seekType); + virtual long tell(); + virtual bool atEOS(); +@@ -98,11 +93,7 @@ + }; + + AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : +-#ifdef HAVE_LIBWPS +- WPSInputStream(), +-#else +- WPXInputStream(true), +-#endif ++ WPXInputStream(), + m_input(input), + m_ole(NULL) + { +@@ -117,9 +108,9 @@ + g_object_unref(G_OBJECT(m_input)); + } + +-const uint8_t * AbiWordperfectInputStream::read(size_t numBytes, size_t &numBytesRead) ++const unsigned char * AbiWordperfectInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) + { +- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); ++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); + + if (buf == NULL) + numBytesRead = 0; +@@ -256,19 +247,12 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput, true); ++ WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); + + switch (confidence) + { + case WPD_CONFIDENCE_NONE: +- // libwpd > 0.7.1 reports POOR if the text file is plain text (that _could_ be a WP4x document) +- // however, we'll let the text importer handle such cases +- case WPD_CONFIDENCE_POOR: + return UT_CONFIDENCE_ZILCH; +- case WPD_CONFIDENCE_LIKELY: +- return UT_CONFIDENCE_SOSO; +- case WPD_CONFIDENCE_GOOD: +- return UT_CONFIDENCE_GOOD; + case WPD_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: +@@ -328,7 +312,7 @@ + UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPDResult error = WPDocument::parse(&gsfInput, static_cast(this)); ++ WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); + + if (error != WPD_OK) + { +@@ -381,9 +365,9 @@ + float marginLeft = 1.0f, marginRight = 1.0f; + + if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); ++ marginLeft = propList["fo:margin-left"]->getDouble(); + if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ marginRight = propList["fo:margin-right"]->getDouble(); + + if (marginLeft != m_leftPageMargin || marginRight != m_rightPageMargin /* || */ + /* marginTop != m_marginBottom || marginBottom != m_marginBottom */ ) +@@ -456,15 +440,15 @@ + float marginTop = 0.0f, marginBottom = 0.0f; + float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f; + if (propList["fo:margin-top"]) +- marginTop = propList["fo:margin-top"]->getFloat(); ++ marginTop = propList["fo:margin-top"]->getDouble(); + if (propList["fo:margin-bottom"]) +- marginBottom = propList["fo:margin-bottom"]->getFloat(); ++ marginBottom = propList["fo:margin-bottom"]->getDouble(); + if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); ++ marginLeft = propList["fo:margin-left"]->getDouble(); + if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ marginRight = propList["fo:margin-right"]->getDouble(); + if (propList["fo:text-indent"]) +- textIndent = propList["fo:text-indent"]->getFloat(); ++ textIndent = propList["fo:text-indent"]->getDouble(); + + m_topMargin = marginTop; + m_bottomMargin = marginBottom; +@@ -487,7 +471,7 @@ + + float lineSpacing = 1.0f; + if (propList["fo:line-height"]) +- lineSpacing = propList["fo:line-height"]->getFloat(); ++ lineSpacing = propList["fo:line-height"]->getDouble(); + + UT_String tmpBuffer; + UT_String_sprintf(tmpBuffer, "; margin-top:%.4fin; margin-bottom:%.4fin; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f", +@@ -504,7 +488,7 @@ + propBuffer += tmpBuffer; + if (i()["style:position"]) + { +- UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getFloat()); ++ UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble()); + propBuffer += tmpBuffer; + } + +@@ -520,10 +504,10 @@ + else // Left aligned is default + propBuffer += "/L"; + +- if (i()["style:leader-char"]) +- if (i()["style:leader-char"]->getStr() == "-") ++ if (i()["style:leader-text"]) ++ if (i()["style:leader-text"]->getStr() == "-") + propBuffer += "2"; +- else if (i()["style:leader-char"]->getStr() == "_") ++ else if (i()["style:leader-text"]->getStr() == "_") + propBuffer += "3"; + else // default to dot leader if the given leader is dot or is not supported by AbiWord + propBuffer += "1"; +@@ -586,12 +570,12 @@ + propBuffer += "subscript"; + } + +- if (propList["style:text-underline"] || propList["style:text-crossing-out"]) ++ if (propList["style:text-underline-type"] || propList["style:text-line-through-type"]) + { + propBuffer += "; text-decoration:"; +- if (propList["style:text-underline"]) ++ if (propList["style:text-underline-type"]) + propBuffer += "underline "; +- if (propList["style:text-crossing-out"]) ++ if (propList["style:text-line-through-type"]) + propBuffer += "line-through"; + + } +@@ -615,10 +599,10 @@ + propBuffer += propList["fo:color"]->getStr().cstr(); + } + +- if (propList["style:text-background-color"]) ++ if (propList["fo:background-color"]) + { + propBuffer += "; bgcolor:"; +- propBuffer += propList["style:text-background-color"]->getStr().cstr(); ++ propBuffer += propList["fo:background-color"]->getStr().cstr(); + } + + UT_DEBUGMSG(("AbiWordPerfect: Appending span format: %s\n", propBuffer.c_str())); +@@ -639,10 +623,10 @@ + int columnsCount = ((columns.count() == 0) ? 1 : columns.count()); + + // TODO: support spaceAfter +- if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); +- if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ if (propList["fo:start-indent"]) ++ marginLeft = propList["fo:start-indent"]->getDouble(); ++ if (propList["fo:end-indent"]) ++ marginRight = propList["fo:end-indent"]->getDouble(); + + if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount) + m_bSectionChanged = true; +@@ -709,9 +693,9 @@ + if (propList["style:num-format"]) + listType = propList["style:num-format"]->getStr().cstr()[0]; + if (propList["text:space-before"]) +- listLeftOffset = propList["text:space-before"]->getFloat(); ++ listLeftOffset = propList["text:space-before"]->getDouble(); + if (propList["text:min-label-width"]) +- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); ++ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); + + if (!m_pCurrentListDefinition || + m_pCurrentListDefinition->getOutlineHash() != listID || +@@ -749,9 +733,9 @@ + if (propList["libwpd:level"]) + level = propList["libwpd:level"]->getInt(); + if (propList["text:space-before"]) +- listLeftOffset = propList["text:space-before"]->getFloat(); ++ listLeftOffset = propList["text:space-before"]->getDouble(); + if (propList["text:min-label-width"]) +- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); ++ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); + + if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID) + { +@@ -871,10 +855,10 @@ + + UT_String_sprintf(tempBuffer, "margin-left:%.4fin; ", m_pCurrentListDefinition->getListLeftOffset(m_iCurrentListLevel) + + m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) +- - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); ++ - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); + propBuffer += tempBuffer; + UT_String_sprintf(tempBuffer, "text-indent:%.4fin", - m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) +- + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); ++ + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); + propBuffer += tempBuffer; + + listAttribs[attribsCount++] = PT_PROPS_ATTRIBUTE_NAME; +@@ -1263,7 +1247,7 @@ + virtual UT_Error _loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); ++ WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); + + if (error != WPS_OK) + { +@@ -1302,18 +1286,12 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput, true); ++ WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); + + switch (confidence) + { + case WPS_CONFIDENCE_NONE: + return UT_CONFIDENCE_ZILCH; +- case WPS_CONFIDENCE_POOR: +- return UT_CONFIDENCE_POOR; +- case WPS_CONFIDENCE_LIKELY: +- return UT_CONFIDENCE_SOSO; +- case WPS_CONFIDENCE_GOOD: +- return UT_CONFIDENCE_GOOD; + case WPS_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: +--- plugins/wordperfect/xp/ie_imp_WordPerfect.h (revision 29401) ++++ plugins/wordperfect/xp/ie_imp_WordPerfect.h (revision 29403) +@@ -30,13 +30,7 @@ + #define IE_IMP_WP_H + + #include +-#ifdef _WIN32 +-#define POINT WPX_POINT +-#endif + #include +-#ifdef _WIN32 +-#undef POINT +-#endif + #include "ie_imp.h" + #include "ut_string.h" + #include "ut_string_class.h" +@@ -98,7 +92,7 @@ + IE_Imp ** ppie); + }; + +-class IE_Imp_WordPerfect : public IE_Imp, public WPXHLListenerImpl ++class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface + { + public: + IE_Imp_WordPerfect(PD_Document * pDocument); +@@ -154,6 +148,21 @@ + virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} + virtual void closeTable(); + ++ virtual void definePageStyle(const WPXPropertyList&) {} ++ virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} ++ virtual void defineCharacterStyle(const WPXPropertyList&) {} ++ virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} ++ virtual void insertSpace() {} ++ virtual void insertField(const WPXString&, const WPXPropertyList&) {} ++ virtual void openComment(const WPXPropertyList&) {} ++ virtual void closeComment() {} ++ virtual void openTextBox(const WPXPropertyList&) {} ++ virtual void closeTextBox() {} ++ virtual void openFrame(const WPXPropertyList&) {} ++ virtual void closeFrame() {} ++ virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} ++ virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} ++ + + protected: + virtual UT_Error _loadFile(GsfInput * input); +--- plugins/wordperfect/plugin.m4 (revision 29401) ++++ plugins/wordperfect/plugin.m4 (revision 29403) +@@ -1,6 +1,6 @@ + +-wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" +-wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' ++wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" ++wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' + wordperfect_deps="no" + + WORDPERFECT_CFLAGS= +--- plugins/wpg/xp/ie_impGraphic_WPG.cpp (revision 29401) ++++ plugins/wpg/xp/ie_impGraphic_WPG.cpp (revision 29403) +@@ -31,11 +31,10 @@ + #include + #include + #include +-#include ++#include + #include "xap_Module.h" + + using libwpg::WPGraphics; +-using libwpg::WPGString; + + ABI_PLUGIN_DECLARE("WPG") + +@@ -48,7 +47,7 @@ + virtual bool isOLEStream(); + virtual WPXInputStream * getDocumentOLEStream(); + virtual WPXInputStream * getDocumentOLEStream(const char * name); +- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); ++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); + virtual int seek(long offset, WPX_SEEK_TYPE seekType); + virtual long tell(); + virtual bool atEOS(); +@@ -60,7 +59,7 @@ + }; + + AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : +- WPXInputStream(true), ++ WPXInputStream(), + m_input(input), + m_ole(NULL) + { +@@ -75,9 +74,9 @@ + g_object_unref(G_OBJECT(m_input)); + } + +-const uint8_t * AbiWordPerfectGraphicsInputStream::read(size_t numBytes, size_t &numBytesRead) ++const unsigned char * AbiWordPerfectGraphicsInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) + { +- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); ++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); + + if (buf == NULL) + numBytesRead = 0; +@@ -245,10 +244,10 @@ + UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) + { + AbiWordPerfectGraphicsInputStream gsfInput(input); +- WPGString svgOutput; ++ WPXString svgOutput; + if (WPGraphics::generateSVG(&gsfInput, svgOutput)) + { +- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.length(), false); ++ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); + UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); + g_object_unref(svgInput); + return result; +--- plugins/wpg/plugin.m4 (revision 29401) ++++ plugins/wpg/plugin.m4 (revision 29403) +@@ -1,5 +1,5 @@ + +-wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" ++wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" + wpg_deps="no" + + if test "$enable_wpg" != ""; then + + diff --git a/abiword-2.8.6-no-undefined.patch b/abiword-2.8.6-no-undefined.patch new file mode 100644 index 0000000..c07000e --- /dev/null +++ b/abiword-2.8.6-no-undefined.patch @@ -0,0 +1,21 @@ +diff -u -r abiword-2.8.6.orig/src/Makefile.am abiword-2.8.6/src/Makefile.am +--- abiword-2.8.6.orig/src/Makefile.am 2009-09-09 15:11:01.000000000 +0200 ++++ abiword-2.8.6/src/Makefile.am 2011-08-02 23:35:51.904761961 +0200 +@@ -107,7 +107,7 @@ + + AbiWord_LDFLAGS = \ + $(DEPS_LIBS) \ +- --no-undefined \ ++ -Wl,--no-undefined \ + -avoid-version \ + -export-dynamic \ + -headerpad_max_install_names +@@ -129,7 +129,7 @@ + + abiword_LDFLAGS = \ + $(platform_ldflags) \ +- --no-undefined \ ++ -Wl,--no-undefined \ + -avoid-version \ + -export-dynamic + diff --git a/abiword-extras-2.6.0-build_datadir.patch b/abiword-extras-2.6.0-build_datadir.patch new file mode 100644 index 0000000..444d6d0 --- /dev/null +++ b/abiword-extras-2.6.0-build_datadir.patch @@ -0,0 +1,30 @@ +diff -Nru abiword-extras-2.6.0.orig/clipart/Makefile.am abiword-extras-2.6.0/clipart/Makefile.am +--- abiword-extras-2.6.0.orig/clipart/Makefile.am 2008-03-18 23:18:48.000000000 +0100 ++++ abiword-extras-2.6.0/clipart/Makefile.am 2008-03-25 02:53:55.000000000 +0100 +@@ -1,5 +1,5 @@ + +-clipartdir = $(DESTDIR)/$(ABIWORD_EXTRAS_PKGDATADIR)/clipart ++clipartdir = $(ABIWORD_EXTRAS_PKGDATADIR)/clipart + clipart_DATA = \ + book.png \ + chip.png \ +diff -Nru abiword-extras-2.6.0.orig/dictionary/Makefile.am abiword-extras-2.6.0/dictionary/Makefile.am +--- abiword-extras-2.6.0.orig/dictionary/Makefile.am 2008-03-18 23:18:47.000000000 +0100 ++++ abiword-extras-2.6.0/dictionary/Makefile.am 2008-03-25 02:54:04.000000000 +0100 +@@ -1,5 +1,5 @@ + +-dictionarydir = $(DESTDIR)/$(ABIWORD_EXTRAS_PKGDATADIR)/dictionary ++dictionarydir = $(ABIWORD_EXTRAS_PKGDATADIR)/dictionary + + if BIGENDIAN + hash = BigEndian32.american.hash +diff -Nru abiword-extras-2.6.0.orig/templates/Makefile.am abiword-extras-2.6.0/templates/Makefile.am +--- abiword-extras-2.6.0.orig/templates/Makefile.am 2008-03-18 23:18:49.000000000 +0100 ++++ abiword-extras-2.6.0/templates/Makefile.am 2008-03-25 02:54:15.000000000 +0100 +@@ -1,5 +1,5 @@ + +-templatesdir = $(DESTDIR)/$(ABIWORD_EXTRAS_PKGDATADIR)/templates ++templatesdir = $(ABIWORD_EXTRAS_PKGDATADIR)/templates + templates_DATA = \ + A4.awt \ + Business-Letter.awt \ diff --git a/abiword.mime b/abiword.mime new file mode 100644 index 0000000..011bf4d --- /dev/null +++ b/abiword.mime @@ -0,0 +1,3 @@ +application/x-abiword + ext: abw + diff --git a/abiword.spec b/abiword.spec new file mode 100644 index 0000000..93b4910 --- /dev/null +++ b/abiword.spec @@ -0,0 +1,283 @@ +%define majversion %(echo %version | cut -d. -f 1-2) + +Name: abiword +Version: 3.0.0 +Release: 2mamba +Summary: A free word processing program +Group: Graphical Desktop/Applications/Office +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://www.abisource.com/ +Source0: http://www.abisource.com/downloads/abiword/%{version}/source/%{name}-%{version}.tar.gz +Source1: http://www.abisource.com/downloads/abiword/%{version}/source/%{name}-docs-%{version}.tar.gz +#Source2: http://www.abisource.com/downloads/abiword/%{version}/source/%{name}-extras-%{version}.tar.gz +#Source3: http://www.abisource.com/downloads/abiword/%{version}/source/%{name}-plugins-%{version}.tar.gz +Source4: abiword.mime +Patch0: abiword-extras-2.6.0-build_datadir.patch +Patch1: abiword-2.8.6-gcc-4.7.patch +Patch2: abiword-2.8.6-libwpd-0.9.patch +Patch3: abiword-2.8.6-libpng-1.5.patch +Patch4: abiword-2.8.6-no-undefined.patch +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: GConf-devel +BuildRequires: glibc-devel +BuildRequires: libatk-devel +BuildRequires: libbzip2-devel +BuildRequires: libcairo-devel +BuildRequires: libcroco-devel +BuildRequires: libdbus-devel +BuildRequires: libdbus-glib-devel +BuildRequires: libelf-devel +BuildRequires: libenchant-devel +BuildRequires: libexpat-devel +BuildRequires: libffi-devel +BuildRequires: libfontconfig-devel +BuildRequires: libfreetype-devel +BuildRequires: libfribidi-devel +BuildRequires: libgcc +BuildRequires: libgdk-pixbuf-devel +BuildRequires: libGL-devel +BuildRequires: libglib-devel +BuildRequires: libgoffice-devel +BuildRequires: libgraphite2-devel +BuildRequires: libgsf-devel +BuildRequires: libgtk2-devel +BuildRequires: libharfbuzz-devel +BuildRequires: libjpeg-devel +BuildRequires: liblzma-devel +BuildRequires: libpango-devel +BuildRequires: libpcre-devel +BuildRequires: libpixman-devel +BuildRequires: libpng-devel +BuildRequires: libpthread-stubs-devel +BuildRequires: librsvg-devel +BuildRequires: libselinux-devel +BuildRequires: libstdc++6-devel +BuildRequires: libwv-devel +BuildRequires: libX11-devel +BuildRequires: libXau-devel +BuildRequires: libxcb-devel +BuildRequires: libXdmcp-devel +BuildRequires: libxml2-devel +BuildRequires: libXrender-devel +BuildRequires: libz-devel +BuildRequires: ORBit2-devel +BuildRequires: udev-devel +## AUTOBUILDREQ-END +BuildRequires: aspell-devel >= 0.60.2 +BuildRequires: desktop-file-utils >= 0.10 +BuildRequires: libots >= 0.4.2 +BuildRequires: libaiksaurus >= 1.2.1 +BuildRequires: valgrind-devel +BuildRequires: ImageMagick +BuildRequires: libboost-devel +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +AbiWord is a free word processing program similar to Microsoft Word. +It is suitable for typing papers, letters, reports, memos, and so forth. + +%package devel +Summary: Development package for AbiWord +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +AbiWord is a free word processing program similar to Microsoft Word. +It is suitable for typing papers, letters, reports, memos, and so forth. + +This package provides files needed for development. + +%prep +%setup -q %{name}-%{version} -a1 +# -a2 -a3 +#cd abiword-extras-%{version} +#%patch0 -p1 +#cd .. +#%patch1 -p1 +#%patch2 -p0 +#%patch3 -p1 +#%patch4 -p1 + +%build +autoreconf --force --install +%configure \ + --with-libxml2 \ + --enable-printing \ + --enable-gnomevfs \ + --enable-gnomeui \ + --enable-libabiword \ + --enable-shared \ + --without-evolution-data-server \ + --enable-plugins + +# FIXME: enable-libabiword does not work with 2.6.0, check again with later releases +# --enable-libabiword \ +# --enable-shared + +%make + +#cd abiword-plugins-%{version} + +#% configure \ +# --prefix=%{_datadir}/AbiSuite \ +# --enable-babelfish \ +# --enable-wikipedia \ +# --enable-freetranslation \ +# --enable-bz2abw \ +# --enable-gdkpixbuf \ +# --with-abiword=.. +#% make ABIWORD=`pwd`/../src/wp/main/unix/abiword + +#cd ../abiword-extras-%{version} +#./autogen.sh +#% configure --with-abiword=.. +#%make ABIWORD=`pwd`/../src/wp/main/unix/abiword + +#cd abiword-docs-%{version} +#% configure --with-abiword=.. +#% make ABIWORD=`pwd`/../src/wp/main/unix/abiword + +%install +[ "%{buildroot}" != / ] && rm -rf %{buildroot} +%makeinstall +#% makeinstall -C abiword-plugins-%{version} +#% makeinstall -C abiword-extras-%{version} +#% makeinstall -C abiword-docs-%{version} + +# install the mime files +install -D -m644 %{S:4} \ + %{buildroot}%{_datadir}/mime-info/%{name}.mime + +%clean +[ "%{buildroot}" != / ] && rm -rf %{buildroot} + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root) +%{_bindir}/* +%dir %{_datadir}/abiword-%{majversion} +%{_datadir}/abiword-%{majversion}/* +%{_datadir}/applications/abiword.desktop +%{_datadir}/dbus-1/services/org.freedesktop.Telepathy.Client.AbiCollab.service +%{_datadir}/telepathy/clients/AbiCollab.client +%{_datadir}/icons/* +%{_datadir}/mime-info/abiword.mime +#%{_datadir}/mime-info/abiword.keys +%{_libdir}/libabiword-%{majversion}.so +%{_libdir}/abiword-%{majversion}/plugins/*.so +%{_libdir}/abiword-%{majversion}/plugins/*.la +%{_mandir}/man1/abiword.1* + +%files devel +%defattr(-,root,root) +%{_includedir}/abiword-%{majversion}/abiwidget.h +%{_includedir}/abiword-%{majversion}/libabiword.h +%{_includedir}/abiword-%{majversion}/xap_UnixTableWidget.h +#%{_libdir}/abiword-%{majversion}/plugins/opendocument.a +#%{_libdir}/libabiword-%{majversion}.a +%{_libdir}/libabiword-%{majversion}.la +%{_libdir}/pkgconfig/abiword-%{majversion}.pc + +%changelog +* Mon May 05 2014 Silvan Calarco 3.0.0-2mamba +- rebuilt with --enable-plugins + +* Sun Dec 01 2013 Automatic Build System 3.0.0-1mamba +- automatic version update by autodist + +* Mon Dec 10 2012 Silvan Calarco 2.8.6-4mamba +- rebuilt with libwv 1.2.9 + +* Thu Aug 16 2012 Silvan Calarco 2.8.6-3mamba +- rebuilt with libgsf 1.14.23 + +* Thu Dec 16 2010 Automatic Build System 2.8.6-2mamba +- automatic rebuild by autodist + +* Mon Jun 14 2010 Automatic Build System 2.8.6-1mamba +- automatic update to 2.8.6 by autodist + +* Mon May 31 2010 Automatic Build System 2.8.5-1mamba +- automatic update to 2.8.5 by autodist + +* Thu Apr 15 2010 Automatic Build System 2.8.4-1mamba +- automatic update to 2.8.4 by autodist + +* Sat Apr 03 2010 Automatic Build System 2.8.3-1mamba +- automatic update to 2.8.3 by autodist + +* Sat Feb 13 2010 Automatic Build System 2.8.2-1mamba +- automatic update to 2.8.2 by autodist + +* Sat Oct 31 2009 Automatic Build System 2.8.1-1mamba +- update to 2.8.1 + +* Fri May 08 2009 Automatic Build System 2.6.8-2mamba +- automatic rebuild by autodist + +* Tue Mar 10 2009 Silvan Calarco 2.6.8-1mamba +- automatic update to 2.6.8 by autodist + +* Sun Mar 08 2009 Silvan Calarco 2.6.7-1mamba +- automatic update to 2.6.7 by autodist + +* Tue Jan 13 2009 Silvan Calarco 2.6.6-2mamba +- rebuilt against libwv 1.2.4 + +* Sun Jan 11 2009 Silvan Calarco 2.6.6-1mamba +- automatic update to 2.6.6 by autodist + +* Tue Nov 25 2008 Silvan Calarco 2.6.5-1mamba +- automatic update to 2.6.5 by autodist + +* Mon Jul 21 2008 gil 2.6.4-1mamba +- update to 2.6.4 + +* Mon Jun 02 2008 Silvan Calarco 2.6.3-1mamba +- update to 2.6.3 + +* Wed Mar 19 2008 Silvan Calarco 2.6.0-1mamba +- update to 2.6.0 +- updated package maintainer + +* Mon Nov 06 2006 Davide Madrisan 2.4.6-1qilnx +- update to version 2.4.6 by autospec + +* Tue Jul 04 2006 Davide Madrisan 2.4.5-2qilnx +- updated post and postun scripts + +* Sun Jul 02 2006 Davide Madrisan 2.4.5-1qilnx +- update to version 2.4.5 by autospec +- executes gdk-pixbuf-query-loaders in %%post and %%postun scripts + +* Thu Apr 13 2006 Davide Madrisan 2.4.4-1qilnx +- update to version 2.4.4 by autospec + +* Wed Feb 22 2006 Davide Madrisan 2.4.2-1qilnx +- new desktop file stolen from kappfinder archive +- own %{_libdir}/AbiWord-%{majversion} directory +- cleanups and fixes on specfile +- added some missing build requirements +- plugins moved to main package and devel package removed + +* Tue Nov 22 2005 Alessandro Ramazzina 2.4.1-1qilnx +- update to version 2.4.1 by autospec. +- CAN-2005-2972: Fix several stack-based buffer overflows in the RTF importer + +* Tue Oct 04 2005 Alessandro Ramazzina 2.4.0-1qilnx +- update to version 2.4.0 by autospec + +* Wed Aug 10 2005 Alessandro Ramazzina 2.2.8-3qilnx +- changed the system menu entry from %{_datadir}/applnk/Utilites to + %{_datadir}/applnk/Applications + +* Wed Aug 10 2005 Alessandro Ramazzina 2.2.8-2qilnx +- removed %%post and %%postun entries. + +* Wed Jul 27 2005 Alessandro Ramazzina 2.2.8-1qilnx +- package created by autospec