diff options
author | Paul de Vrieze <pauldv@gentoo.org> | 2004-01-11 13:40:46 +0000 |
---|---|---|
committer | Paul de Vrieze <pauldv@gentoo.org> | 2004-01-11 13:40:46 +0000 |
commit | 1fbaebc8a09c1d223fe088a78ac2dae4edeea142 (patch) | |
tree | 8f306a8d3021962ab941e23324614056898f8353 /app-office | |
parent | fixed motif dep (diff) | |
download | gentoo-2-1fbaebc8a09c1d223fe088a78ac2dae4edeea142.tar.gz gentoo-2-1fbaebc8a09c1d223fe088a78ac2dae4edeea142.tar.bz2 gentoo-2-1fbaebc8a09c1d223fe088a78ac2dae4edeea142.zip |
New version, committing for suka <suka@t0.or.at>, it has a number of improvements too
Diffstat (limited to 'app-office')
-rw-r--r-- | app-office/openoffice-ximian/ChangeLog | 18 | ||||
-rw-r--r-- | app-office/openoffice-ximian/Manifest | 25 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/1.1.0/norecent.patch | 11 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/1.1.0/recent-files.diff | 1099 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/digest-openoffice-ximian-1.1.48 | 3 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/drawing.desktop | 53 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/presentation.desktop | 53 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/spreadsheet.desktop | 54 | ||||
-rw-r--r-- | app-office/openoffice-ximian/files/textdoc.desktop | 54 | ||||
-rw-r--r-- | app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild | 633 |
10 files changed, 1986 insertions, 17 deletions
diff --git a/app-office/openoffice-ximian/ChangeLog b/app-office/openoffice-ximian/ChangeLog index 3924b4fc1c0a..9f8c9c1ed9d5 100644 --- a/app-office/openoffice-ximian/ChangeLog +++ b/app-office/openoffice-ximian/ChangeLog @@ -1,6 +1,20 @@ # ChangeLog for app-office/openoffice-ximian -# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-office/openoffice-ximian/ChangeLog,v 1.8 2003/12/26 04:18:29 seemant Exp $ +# Copyright 2000-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-office/openoffice-ximian/ChangeLog,v 1.9 2004/01/11 13:40:46 pauldv Exp $ + +*openoffice-ximian-1.1.48 (11 Jan 2004) + + 11 Jan 2004; Paul de Vrieze <pauldv@gentoo.org> openoffice-ximian-1.1.48.ebuild: + Committing for suka@t0.or.at: + *) The desktop files are now provided in the Files-Dir, as Ximian + creates them now in their own build process (which we dont use) + *) There are two new patches, which I had to add, because one of the Ximian-patches breaks the build. + *) KDE menu entries are now created + *) The ebuild is now depending on <app-arch/tar-1.13.92 to bypass the + tar-problems + *) Installed Freetype is now used + *) ATM I have not optionalized to use the system-db, as it seemed to + break things for me *openoffice-ximian-1.1.47.3 (25 Dec 2003) diff --git a/app-office/openoffice-ximian/Manifest b/app-office/openoffice-ximian/Manifest index 8a8c2c79c2ff..ae0167bd2aa4 100644 --- a/app-office/openoffice-ximian/Manifest +++ b/app-office/openoffice-ximian/Manifest @@ -1,18 +1,13 @@ -MD5 829041ef5297811d60cb8ba8349ccdac openoffice-ximian-1.1.0-r1.ebuild 18407 -MD5 1ec97d738c2ba40fe390d7af1fccdd87 openoffice-ximian-1.1.46.ebuild 18469 -MD5 592c92dafe7dee9f8fca13422f76628e ChangeLog 1561 -MD5 f3942f82433bf5ae16461240cbcc4984 metadata.xml 300 -MD5 f7fab855281d6deb95f3b25c87345508 openoffice-ximian-1.1.0.ebuild 19444 -MD5 d5388f5c0f400531795b31fd21d3c95b openoffice-ximian-1.1.47.3.ebuild 18716 -MD5 7d38c4970f229bab1ff5870d4491a2d8 files/digest-openoffice-ximian-1.1.0-r1 212 -MD5 fb82903d8a93d90ebbc14639d4f97f98 files/digest-openoffice-ximian-1.1.47.3 215 -MD5 06b11dad767b42f319fd60d1c369619e files/digest-openoffice-ximian-1.1.0 212 -MD5 0a7f30e95eac54db54a2be02603f2036 files/digest-openoffice-ximian-1.1.46 213 -MD5 fa0af18a5e8a31bf68e0cdbb2f0e4981 files/1.1.0/fixed-gcc.patch 644 +MD5 c501f93bfb1bf392883c643c1b1e70b5 openoffice-ximian-1.1.48.ebuild 19109 +MD5 f0de3fac5fcb75c45346444d17cca718 files/drawing.desktop 1653 +MD5 61809b2d86430fb760a3545a0d27cbb6 files/presentation.desktop 1941 +MD5 4834c6f3d1bac4ab5567ba499c3a584e files/spreadsheet.desktop 1709 +MD5 4657a820e8c5914e37383fa3e014ab38 files/textdoc.desktop 1969 +MD5 d11b4df7d0187e8e25b4dab3b757fb96 files/digest-openoffice-ximian-1.1.48 213 MD5 9caea43966f68ba0f3d7c364c9a01b89 files/1.1.0/ooffice-wrapper-1.3 8964 -MD5 7499a81bad1959834a0e6f995200e3e8 files/1.1.0/openoffice-1.1.0-linux-2.6-fix.patch 603 MD5 7992a51f23c05fdc0b3c422c171f637a files/1.1.0/config.patch 502 -MD5 35644fff64e993d64c44a56383263186 files/1.1.0/oo_1.1-nptl.patch 538 -MD5 028fbe21a2c72ae662729ed63a72cd80 files/1.1.0/solar_segfix.patch 577 -MD5 7978a9c1f590a83622b8040ee83197a4 files/1.1.0/nptl.patch 1285 MD5 57dffa4a9df0ca77ebcca05122634d9e files/1.1.0/newstlportfix.patch 10867 +MD5 7978a9c1f590a83622b8040ee83197a4 files/1.1.0/nptl.patch 1285 +MD5 7499a81bad1959834a0e6f995200e3e8 files/1.1.0/openoffice-1.1.0-linux-2.6-fix.patch 603 +MD5 69dd8ede53660b273282a69d33dd9344 files/1.1.0/recent-files.diff 27513 +MD5 edd482c8105467c1a9aac0a5f7d85f33 files/1.1.0/norecent.patch 314 diff --git a/app-office/openoffice-ximian/files/1.1.0/norecent.patch b/app-office/openoffice-ximian/files/1.1.0/norecent.patch new file mode 100644 index 000000000000..210f719672ef --- /dev/null +++ b/app-office/openoffice-ximian/files/1.1.0/norecent.patch @@ -0,0 +1,11 @@ +--- apply.orig 2004-01-08 12:54:42.880898904 +0100 ++++ apply 2004-01-08 12:54:42.881898752 +0100 +@@ -278,9 +278,6 @@ + user-desktop-install.diff + + [ Misc ] +-# Add support for the freedesktop.org ~/.recently-used spec. +-recent-files.diff +- + # stop the user having to fight ooimpress constantly + capitalization.diff diff --git a/app-office/openoffice-ximian/files/1.1.0/recent-files.diff b/app-office/openoffice-ximian/files/1.1.0/recent-files.diff new file mode 100644 index 000000000000..da7ca16e276e --- /dev/null +++ b/app-office/openoffice-ximian/files/1.1.0/recent-files.diff @@ -0,0 +1,1099 @@ +--- svtools/prj/build.lst.orig 2003-06-05 22:23:34.000000000 -0500 ++++ svtools/prj/build.lst 2003-06-05 22:23:42.000000000 -0500 +@@ -1,4 +1,4 @@ +-st svtools : offuh toolkit ucbhelper unotools jpeg NULL ++st svtools : offuh toolkit ucbhelper unotools jpeg expat NULL + st svtools usr1 - all st_mkout NULL + st svtools\inc get - all st_inc NULL + st svtools\inc\sane get - all st_incsa NULL +--- svtools/inc/historyoptions.hxx.orig 2003-06-05 22:25:11.000000000 -0500 ++++ svtools/inc/historyoptions.hxx 2003-06-05 22:26:05.000000000 -0500 +@@ -239,6 +239,7 @@ + @param "eHistory" select right history. + @param "sURL" URL to save in history + @param "sFilter" filter name to save in history ++ @param "sMimeType" MIME type of the URL; used only for ePICKLIST. + @param "sTitle" document title to save in history + @param "sPassword" password to save in history + @return - +@@ -249,6 +250,7 @@ + void AppendItem( EHistoryType eHistory , + const ::rtl::OUString& sURL , + const ::rtl::OUString& sFilter , ++ const ::rtl::OUString& sMimeType , + const ::rtl::OUString& sTitle , + const ::rtl::OUString& sPassword ); + +--- svtools/source/config/historyoptions.cxx.orig 2003-06-05 22:26:20.000000000 -0500 ++++ svtools/source/config/historyoptions.cxx 2003-06-05 23:12:47.000000000 -0500 +@@ -95,6 +95,8 @@ + #include <algorithm> + #endif + ++#include "recent-files.hxx" ++ + //_________________________________________________________________________________________________________________ + // namespaces + //_________________________________________________________________________________________________________________ +@@ -403,8 +405,10 @@ + sal_uInt32 nPosition = FIXPROPERTYCOUNT; // step over first three readed size values! but count begins at 0! + // Get names/values for picklist. + // 4 subkeys for every item! ++ sal_uInt32 nItem; ++#if 0 + OUString sName; +- for( sal_uInt32 nItem=0; nItem<nPicklistCount; ++nItem ) ++ for( nItem=0; nItem<nPicklistCount; ++nItem ) + { + seqValues[nPosition] >>= aItem.sURL ; + ++nPosition; +@@ -416,6 +420,26 @@ + ++nPosition; + m_aPicklist.push_back( aItem ); + } ++#endif ++ /* The user may already have a pick list from OOo, so we have to skip over it --- we now fetch the list from GNOME */ ++ nPosition += nPicklistCount * 4; ++ ++ ::svt::RecentFileItem *items; ++ int nItems; ++ int i; ++ ++ ::svt::recentFilesGetList (&items, &nItems); ++ ++ aItem.sFilter = OUString ("", 0, RTL_TEXTENCODING_ASCII_US); ++ aItem.sPassword = OUString ("", 0, RTL_TEXTENCODING_ASCII_US); ++ ++ for (i = 0; i < nItems; i++) { ++ aItem.sURL = OUString(items[i].uri); ++ aItem.sTitle = OUString (items[i].uri); /* We don't have a title, so just use the filename */ ++ m_aPicklist.push_back (aItem); ++ } ++ ++ ::svt::recentFilesFree (items, nItems); + + // Attention: Don't reset nPosition here! + +@@ -506,9 +530,11 @@ + OUString sNode ; + Sequence< PropertyValue > seqPropertyValues( 4 ) ; + ++ sal_uInt32 nItem; ++#if 0 + // Copy picklist entries to save-list! + sal_uInt32 nPicklistCount = m_aPicklist.size(); +- for( sal_uInt32 nItem=0; nItem<nPicklistCount; ++nItem ) ++ for( nItem=0; nItem<nPicklistCount; ++nItem ) + { + aItem = m_aPicklist[nItem]; + sNode = PROPERTYNAME_PICKLIST + PATHDELIMITER + FIXP + OUString::valueOf( (sal_Int32)nItem ) + PATHDELIMITER; +@@ -523,7 +549,7 @@ + + SetSetProperties( PROPERTYNAME_PICKLIST, seqPropertyValues ); + } +- ++#endif + // Copy URL-list entries to save-list! + sal_uInt32 nHistoryCount = m_aHistory.size(); + for( nItem=0; nItem<nHistoryCount; ++nItem ) +@@ -909,11 +935,15 @@ + void SvtHistoryOptions::AppendItem( EHistoryType eHistory , + const OUString& sURL , + const OUString& sFilter , ++ const OUString& sMimeType , + const OUString& sTitle , + const OUString& sPassword ) + { + MutexGuard aGuard( GetOwnStaticMutex() ); +- m_pDataContainer->AppendItem( eHistory, sURL, sFilter, sTitle, sPassword ); ++ ++ if (eHistory == ePICKLIST) ++ ::svt::recentFilesAddItem (sURL.pData, sMimeType.pData); ++ m_pDataContainer->AppendItem( eHistory, sURL, sFilter, sTitle, sPassword ); + } + + //***************************************************************************************************************** +--- sfx2/source/appl/newhelp.cxx.orig 2003-06-05 22:34:06.000000000 -0500 ++++ sfx2/source/appl/newhelp.cxx 2003-06-05 22:35:03.000000000 -0500 +@@ -1383,7 +1383,7 @@ + { + String aTitle = GetEntry(i); + String* pURL = (String*)(ULONG)GetEntryData(i); +- aHistOpt.AppendItem( eHELPBOOKMARKS, rtl::OUString( *pURL ), sEmpty, rtl::OUString( aTitle ), sEmpty ); ++ aHistOpt.AppendItem( eHELPBOOKMARKS, rtl::OUString( *pURL ), sEmpty, sEmpty, rtl::OUString( aTitle ), sEmpty ); + delete pURL; + } + } +--- sfx2/source/appl/sfxpicklist.cxx.orig 2003-04-11 10:54:18.000000000 -0500 ++++ sfx2/source/appl/sfxpicklist.cxx 2003-06-05 22:46:10.000000000 -0500 +@@ -461,6 +461,7 @@ + SvtHistoryOptions().AppendItem( eHISTORY, + aURL.GetURLNoPass( INetURLObject::NO_DECODE ), + aFilter, ++ ::rtl::OUString(), + aTitle, + SfxStringEncode( aURL.GetPass() ) ); + } +@@ -497,17 +498,21 @@ + + ::rtl::OUString aTitle = pDocSh->GetTitle(SFX_TITLE_PICKLIST); + ::rtl::OUString aFilter; ++ ::rtl::OUString aMimeType; + + INetURLObject aURL( pMed->GetOrigURL() ); + const SfxFilter* pFilter = pMed->GetOrigFilter(); + +- if ( pFilter ) ++ if ( pFilter ) { + aFilter = pFilter->GetFilterName(); ++ aMimeType = pFilter->GetMimeType(); ++ } + + // add to svtool history options + SvtHistoryOptions().AppendItem( ePICKLIST, + aURL.GetURLNoPass( INetURLObject::NO_DECODE ), + aFilter, ++ aMimeType, + aTitle, + SfxStringEncode( aURL.GetPass() ) ); + +--- sd/source/ui/dlg/dlgass.cxx.orig 2003-06-05 23:00:04.000000000 -0500 ++++ sd/source/ui/dlg/dlgass.cxx 2003-06-05 23:05:19.000000000 -0500 +@@ -186,6 +186,12 @@ + #include <sfx2/filedlghelper.hxx> + #endif + ++#include <com/sun/star/system/XSystemShellExecute.hpp> ++#include <com/sun/star/document/XTypeDetection.hpp> ++#include <com/sun/star/util/URL.hpp> ++#include <com/sun/star/util/XURLTransformer.hpp> ++#include <sfx2/fcontnr.hxx> ++ + #include "sdpage.hxx" + #include "helpids.h" + #include "assclass.hxx" +@@ -198,6 +204,8 @@ + + using namespace ::com::sun::star; + using namespace ::sd; ++using namespace ::com::sun::star::uno; ++using namespace ::com::sun::star::system; + + + void InterpolateFixedBitmap( FixedBitmap * pBitmap ) +@@ -774,7 +782,38 @@ + m_pWindow = NULL; + } + ++/* Queries the name of the filter that we can use to open a file */ ++static const String & ++getFilterNameForFile (rtl_uString *uri) ++{ ++ Reference< ::com::sun::star::document::XTypeDetection > type_detection ( ++ ::comphelper::getProcessServiceFactory ()->createInstance ( ++ ::rtl::OUString::createFromAscii ("com.sun.star.comp.framework.TypeDetection" )), ++ UNO_QUERY ); + ++ if (!type_detection.is()) ++ return; ++ ++ ::com::sun::star::util::URL url; ++ ::rtl::OUString type_name; ++ ++ url.Complete = uri; ++ ++ Reference < ::com::sun::star::util::XURLTransformer > trans ( ++ ::comphelper::getProcessServiceFactory ()->createInstance ( ++ ::rtl::OUString::createFromAscii ("com.sun.star.util.URLTransformer" )), ++ UNO_QUERY); ++ ++ trans->parseStrict (url); ++ ++ type_name = type_detection->queryTypeByURL (url.Main); ++ SfxFilterMatcher &filter_matcher = SFX_APP ()->GetFilterMatcher (); ++ const SfxFilter *filter = filter_matcher.GetFilter4EA (type_name); ++ if (!filter) ++ return String (); ++ ++ return filter->GetFilterName (); ++} + + + void AssistentDlgImpl::ScanDocmenu (void) +@@ -808,6 +847,10 @@ + else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_PASSWORD) + aPropertySet[nProperty].Value >>= sPassword; + ++ sFilter = rtl::OUString (getFilterNameForFile (sURL.pData).GetBuffer ()); ++ if (sFilter.getLength () == 0) ++ continue; ++ + // If the entry is an impress file then insert it into the + // history list and the list box. + uno::Any aFilterPropSet = xFilterFactory->getByName( sFilter ); +--- svtools/source/config/recent-files.hxx 2003-01-30 04:24:37.000000000 -0600 ++++ svtools/source/config/recent-files.hxx 2003-06-05 23:10:17.000000000 -0500 +@@ -0,0 +1,30 @@ ++#ifndef RECENT_FILES_HXX ++#define RECENT_FILES_HXX ++ ++#ifndef _RTL_USTRING_ ++#include <rtl/ustring.h> ++#endif ++ ++#include <time.h> ++ ++namespace svt { ++ ++/* A recent file item */ ++struct RecentFileItem { ++ rtl_uString *uri; /* URI of the file */ ++ rtl_uString *mimeType; /* MIME type */ ++ time_t timestamp; /* Timestamp for when the item was added */ ++}; ++ ++/* Queries the list of recent file items for OpenOffice.org */ ++void recentFilesGetList (RecentFileItem **items, int *nItems); ++ ++/* Frees an array of RecentFileItem structures */ ++void recentFilesFree (RecentFileItem *items, int nItems); ++ ++/* Adds an item to the list of recent file items */ ++void recentFilesAddItem (rtl_uString *uri, const rtl_uString *mimeType); ++ ++}; ++ ++#endif +--- svtools/source/config/recent-files.cxx 2003-12-07 18:35:03.000000000 +0530 ++++ svtools/source/config/recent-files.cxx 2003-12-10 14:07:51.000000000 +0530 +@@ -0,0 +1,801 @@ ++#include <stdio.h> ++#include <string.h> ++#include <time.h> ++#include <unistd.h> ++#include <sys/file.h> ++#include <tools/string.hxx> ++#include "expat/xmlparse.h" ++#include "recent-files.hxx" ++ ++#include <rtl/ustring.hxx> ++#include <osl/security.hxx> ++#ifndef _OSL_THREAD_H_ ++#include <osl/thread.h> ++#endif ++ ++#ifndef _CONFIG_HXX ++#include <tools/config.hxx> ++#endif ++ ++ ++#include <list> ++#include <functional> ++ ++using namespace osl; ++using namespace rtl; ++using namespace ::std; ++ ++namespace svt { ++ ++/* ++ example: ++<?xml version="1.0"?> ++<RecentFiles> ++ <RecentItem> ++ <URI>file:///home/federico/gedit.txt</URI> ++ <Mime-Type>text/plain</Mime-Type> ++ <Timestamp>1046485966</Timestamp> ++ <Groups> ++ <Group>gedit</Group> ++ </Groups> ++ </RecentItem> ++ <RecentItem> ++ <URI>file:///home/federico/gedit-2.2.0.tar.bz2</URI> ++ <Mime-Type>application/x-bzip</Mime-Type> ++ <Timestamp>1046209851</Timestamp> ++ <Private/> ++ <Groups> ++ </Groups> ++ </RecentItem> ++</RecentFiles> ++*/ ++ ++/* Name of the standard ~/.recently-used file */ ++#define RECENT_FILE_NAME ".recently-used" ++ ++/* Items without a MIME type get assigned this by default */ ++#define APPLICATION_OCTET_STREAM "application/octet-stream" ++ ++/* Buffer size for reading ~/.recently-used */ ++#define BUFFER_SIZE 16384 ++ ++/* Maximum number of entries to keep before pruning */ ++#define MAX_ITEMS 20 ++ ++/* The group we use for OO.o files */ ++#define GROUP_OPENOFFICE_ORG "OpenOffice.org" ++ ++/* Tags we understand in the ~/.recently-used XML */ ++#define TAG_RECENT_FILES "RecentFiles" ++#define TAG_RECENT_ITEM "RecentItem" ++#define TAG_URI "URI" ++#define TAG_MIME_TYPE "Mime-Type" ++#define TAG_TIMESTAMP "Timestamp" ++#define TAG_PRIVATE "Private" ++#define TAG_GROUPS "Groups" ++#define TAG_GROUP "Group" ++ ++ typedef list<OString> StringList; ++/* Recent item as parsed from the file */ ++class Item { ++public: ++ OString uri; ++ OString mimeType; ++ ++ time_t timestamp; ++ bool isPrivate; ++ StringList groups; ++ ++ Item() ++ { ++ timestamp = -1; ++ isPrivate = false; ++ } ++ ~Item() ++ { ++ if (!(groups.empty())) ++ groups.clear(); ++ } ++}; ++ ++/* Parser state */ ++enum State { ++ STATE_BEGIN, /* No elements read yet */ ++ STATE_RECENT_FILES, /* Inside the toplevel RecentFiles element */ ++ STATE_RECENT_ITEM, /* Inside RecentItem */ ++ STATE_URI, /* Inside URI */ ++ STATE_MIME_TYPE, /* Inside Mime-Type */ ++ STATE_TIMESTAMP, /* Inside Timestamp */ ++ STATE_PRIVATE, /* Inside Private */ ++ STATE_GROUPS, /* Inside Groups */ ++ STATE_GROUP, /* Inside Group */ ++ STATE_END, /* Finished parsing the toplevel element */ ++ STATE_ERROR /* Bad XML */ ++}; ++ ++ typedef list<Item*> ItemList; ++ ++/* XML parsing context */ ++struct ParseContext { ++ ItemList items; ++ ++ State state; ++}; ++ ++/* Computes the name of the ~/.recent-files file */ ++static OString ++getRecentFilename (void) ++{ ++ OUString ustrHomeDir; ++ oslSecurity aSec = osl_getCurrentSecurity(); ++ osl_getHomeDir( aSec, &ustrHomeDir.pData ); ++ osl_freeSecurityHandle( aSec ); ++ OString strHomeUrl, strHomeDir; ++ ++ static OString strFileUrlPrefix("file://"); ++ if (ustrHomeDir.convertToString(&strHomeUrl, osl_getThreadTextEncoding(), OUSTRING_TO_OSTRING_CVTFLAGS)) ++ { ++ if (strHomeUrl.indexOf(strFileUrlPrefix) == 0) ++ { ++ strHomeDir = strHomeUrl.copy(strFileUrlPrefix.getLength()); ++ } ++ } ++ ++ return strHomeDir.concat("/").concat(RECENT_FILE_NAME); ++} ++ ++/* Creates a new item in the context as a result of entering a RecentItem element */ ++static void ++startRecentItem (ParseContext *context) ++{ ++ Item *item; ++ ++ item = new Item(); ++ context->items.push_front(item); ++} ++ ++/* Terminates a RecentItem element by ensuring that the basic properties of the ++ * current are fulfilled. If the URI is empty, removes the item from the ++ * context. ++ */ ++static void ++endRecentItem (ParseContext *context) ++{ ++ Item *item; ++ ++ assert (!(context->items.empty())); ++ item = *(context->items.begin()); ++ ++ if (0 == item->uri.getLength()) { ++ delete item; ++ context->items.pop_front(); ++ return; ++ } ++ ++ if (0 == item->mimeType.getLength()) ++ item->mimeType = APPLICATION_OCTET_STREAM; ++ ++ if (item->timestamp == -1) ++ item->timestamp = time (NULL); ++} ++ ++/* Handles entering a Private element */ ++static void ++startPrivate (ParseContext *context) ++{ ++ Item *item; ++ ++ assert (!(context->items.empty())); ++ item = *(context->items.begin()); ++ ++ item->isPrivate = true; ++} ++ ++/* Start element handler for the parser */ ++static void ++startElementCb (void *data, const XML_Char *name, const XML_Char **attributes) ++{ ++ ParseContext *context; ++ ++ context = data; ++ ++ if (context->state == STATE_ERROR || context->state == STATE_END) ++ return; ++ ++ switch (context->state) { ++ case STATE_BEGIN: ++ if (strcmp (name, TAG_RECENT_FILES) == 0) ++ context->state = STATE_RECENT_FILES; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_RECENT_FILES: ++ if (strcmp (name, TAG_RECENT_ITEM) == 0) { ++ startRecentItem (context); ++ context->state = STATE_RECENT_ITEM; ++ } else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_RECENT_ITEM: ++ if (strcmp (name, TAG_URI) == 0) ++ context->state = STATE_URI; ++ else if (strcmp (name, TAG_MIME_TYPE) == 0) ++ context->state = STATE_MIME_TYPE; ++ else if (strcmp (name, TAG_TIMESTAMP) == 0) ++ context->state = STATE_TIMESTAMP; ++ else if (strcmp (name, TAG_PRIVATE) == 0) { ++ startPrivate (context); ++ context->state = STATE_PRIVATE; ++ } else if (strcmp (name, TAG_GROUPS) == 0) ++ context->state = STATE_GROUPS; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_URI: ++ case STATE_MIME_TYPE: ++ case STATE_TIMESTAMP: ++ case STATE_PRIVATE: ++ case STATE_GROUP: ++ case STATE_END: ++ case STATE_ERROR: ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_GROUPS: ++ if (strcmp (name, TAG_GROUP) == 0) ++ context->state = STATE_GROUP; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ default: ++ assert(0); ++ } ++} ++ ++/* End element handler for the parser */ ++static void ++endElementCb (void *data, const XML_Char *name) ++{ ++ ParseContext *context; ++ ++ context = data; ++ ++ switch (context->state) { ++ case STATE_RECENT_FILES: ++ if (strcmp (name, TAG_RECENT_FILES) == 0) ++ context->state = STATE_END; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_RECENT_ITEM: ++ if (strcmp (name, TAG_RECENT_ITEM) == 0) { ++ endRecentItem (context); ++ context->state = STATE_RECENT_FILES; ++ } else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_URI: ++ if (strcmp (name, TAG_URI) == 0) ++ context->state = STATE_RECENT_ITEM; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_MIME_TYPE: ++ if (strcmp (name, TAG_MIME_TYPE) == 0) ++ context->state = STATE_RECENT_ITEM; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_TIMESTAMP: ++ if (strcmp (name, TAG_TIMESTAMP) == 0) ++ context->state = STATE_RECENT_ITEM; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_PRIVATE: ++ if (strcmp (name, TAG_PRIVATE) == 0) { ++ startPrivate (context); /* I don't know if expat calls the start or end element handler for <foo/> */ ++ context->state = STATE_RECENT_ITEM; ++ } else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_GROUPS: ++ if (strcmp (name, TAG_GROUPS) == 0) ++ context->state = STATE_RECENT_ITEM; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_GROUP: ++ if (strcmp (name, TAG_GROUP) == 0) ++ context->state = STATE_GROUPS; ++ else ++ context->state = STATE_ERROR; ++ break; ++ ++ case STATE_BEGIN: ++ case STATE_END: ++ case STATE_ERROR: ++ context->state = STATE_ERROR; ++ break; ++ ++ default: ++ assert(0); ++ } ++} ++ ++/* Sets the timestamp field of an Item */ ++static void ++setTimestamp (Item *item, const char *s, int len) ++{ ++ char *dup; ++ long t; ++ ++ dup = strndup (s, len); ++ if (sscanf (dup, "%ld", &t) != 1) ++ item->timestamp = -1; ++ else ++ item->timestamp = t; ++ ++ free (dup); ++} ++ ++// binary predicate object type ++struct CompareWithLength : public binary_function<OString, OString,bool> ++{ ++public: ++ bool operator()(const OString& str1, const OString& str2) const ++ { ++ return (0 == str2.compareTo(str1, str2.getLength())); ++ } ++}; ++ ++/* Adds a group to an item */ ++static void ++addGroup (Item *item, const char *s, int len) ++{ ++ ++ StringList::iterator i = ::std::find_if(item->groups.begin(), item->groups.end(), ::std::bind2nd(CompareWithLength(), OString(s,len))); ++ if (i != item->groups.end()) ++ return; ++ ++ item->groups.push_front(OString(s, len)); ++} ++ ++/* Handler for character data between tags */ ++static void ++characterDataCb (void *data, const XML_Char *s, int len) ++{ ++ ParseContext *context; ++ Item *item; ++ ++ context = data; ++ item = !(context->items.empty()) ? *(context->items.begin()) : NULL; ++ ++ switch (context->state) { ++ case STATE_URI: ++ { ++ OString tempStr(s, len); ++ item->uri = tempStr; ++ } ++ break; ++ ++ case STATE_MIME_TYPE: ++ { ++ OString tempStr(s, len); ++ item->mimeType = tempStr; ++ } ++ break; ++ ++ case STATE_TIMESTAMP: ++ setTimestamp (item, s, len); ++ break; ++ ++ case STATE_GROUP: ++ addGroup (item, s, len); ++ break; ++ ++ case STATE_BEGIN: ++ case STATE_RECENT_FILES: ++ case STATE_RECENT_ITEM: ++ case STATE_PRIVATE: ++ case STATE_GROUPS: ++ case STATE_END: ++ case STATE_ERROR: ++ /* Ignore character data that may appear elsewhere */ ++ break; ++ ++ default: ++ assert(0); ++ } ++} ++ ++/* Creates an XML parser for .recent-files */ ++static XML_Parser ++createParser (ParseContext *context) ++{ ++ XML_Parser parser; ++ ++ parser = XML_ParserCreate (NULL); ++ if (!parser) ++ return NULL; ++ ++ XML_SetUserData (parser, context); ++ XML_SetElementHandler (parser, startElementCb, endElementCb); ++ XML_SetCharacterDataHandler (parser, characterDataCb); ++ ++ return parser; ++} ++ ++/* Binary predicate class - Compares items by timestamps so as to sort them in DECREASING order */ ++class CompareTimestamps : binary_function<Item*, Item*, bool> ++{ ++public: ++ bool operator()(const Item* pItem1, const Item* pItem2) const ++ { ++ time_t ta, tb; ++ ++ ta = pItem1->timestamp; ++ ++ tb = pItem2->timestamp; ++ ++ return (ta > tb); ++ } ++}; ++ ++/* Returns whether an item has a certain group */ ++static bool ++hasGroup (Item *item, const char *group) ++{ ++ StringList::iterator i = find(item->groups.begin(), item->groups.end(), OString(group)); ++ return (i != item->groups.end()); ++} ++ ++/* Removes the oldest items from the context */ ++static void ++trimOldItems (ParseContext *context) ++{ ++ int i; ++ ++ i = 0; ++ ItemList::iterator l = context->items.begin(); ++ ItemList::iterator next; ++ ++ while (l != context->items.end()) { ++ Item *item; ++ ++ item = *l; ++ next = (++l)--; ++ ++ if (hasGroup (item, GROUP_OPENOFFICE_ORG)) { ++ i++; ++ ++ if (i > MAX_ITEMS) { ++ delete item; ++ context->items.erase(l); ++ } ++ } ++ ++ l = next; ++ } ++} ++ ++/* Parses the file and fills in the context */ ++static void ++parse (FILE *file, ParseContext *context) ++{ ++ XML_Parser parser; ++ char buf[BUFFER_SIZE]; ++ ++ context->state = STATE_BEGIN; ++ ++ parser = createParser (context); ++ ++ if (!parser) ++ return; ++ ++ while (1) { ++ int len; ++ int eof; ++ ++ len = fread (buf, 1, sizeof (buf), file); ++ if (ferror (file)) ++ break; ++ ++ eof = feof (file); ++ ++ if (!XML_Parse (parser, buf, len, eof)) { ++ context->state = STATE_ERROR; ++ break; ++ } ++ ++ if (eof) ++ break; ++ } ++ ++ if (!(context->items.empty())) ++ endRecentItem (context); /* Finish it off for if we terminated prematurely on error */ ++ ++ XML_ParserFree (parser); ++ ++ context->items.sort(CompareTimestamps()); ++ trimOldItems (context); ++} ++ ++/* Frees the contents of a parse context */ ++static void ++freeContext(ParseContext *context) ++{ ++ for (ItemList::iterator l = context->items.begin(); l != context->items.end(); l++) { ++ Item *item; ++ ++ item = *l; ++ delete item; ++ } ++ ++ context->items.clear(); ++} ++ ++/* Converts our items into exported structures */ ++static void ++convertItems (ParseContext *context, RecentFileItem **items, int *nItems) ++{ ++ int i; ++ ++ /* Count items with the OpenOffice.org group */ ++ ++ *nItems = 0; ++ for (ItemList::iterator l = context->items.begin(); l != context->items.end(); l++) { ++ Item *item; ++ ++ item = *l; ++ if (hasGroup (item, GROUP_OPENOFFICE_ORG)) ++ (*nItems)++; ++ } ++ ++ if (*nItems == 0) ++ return; ++ ++ /* Add only the items we want */ ++ ++ *items = malloc (sizeof(RecentFileItem) * *nItems); ++ ++ i = 0; ++ ++ for (l = context->items.begin(); l != context->items.end(); l++) { ++ Item *item; ++ ++ item = *l; ++ ++ if (hasGroup (item, GROUP_OPENOFFICE_ORG)) { ++ RecentFileItem *rfi; ++ ++ rfi = (*items) + i; ++ ++ rfi->uri = NULL; ++ rtl_string2UString (&rfi->uri, item->uri, strlen (item->uri), RTL_TEXTENCODING_UTF8, 0); ++ rfi->mimeType = NULL; ++ rtl_string2UString (&rfi->mimeType, item->mimeType, strlen (item->mimeType), RTL_TEXTENCODING_UTF8, 0); ++ ++ rfi->timestamp = item->timestamp; ++ ++ i++; ++ } ++ } ++} ++ ++/* Opens ~/.recent-files and locks it. If something fails, returns NULL. */ ++ ++static FILE * ++openAndLock (void) ++{ ++ char *filename; ++ FILE *file; ++ int fd; ++ // ParseContext context; ++ ++ filename = getRecentFilename ().getStr(); ++ ++ file = fopen (filename, "r+"); ++ ++ if (!file) ++ return NULL; ++ ++ fd = fileno (file); ++ if (lockf (fd, F_LOCK, 0) != 0) { ++ fclose (file); ++ return NULL; ++ } ++ ++ return file; ++} ++ ++/* Unlocks ~/.recent-files and closes it. */ ++static void ++unlockAndClose (FILE *file) ++{ ++ int fd; ++ ++ fd = fileno (file); ++ lockf (fd, F_ULOCK, 0); ++ fclose (file); ++} ++ ++/** ++ * recentFilesGetList: ++ * @items: Return value; pointer to an array of items. Should be freed with recentFilesFree(). ++ * @nItems: Return value; number of items returned. ++ * ++ * Queries the list of GNOME recent file items. ++ **/ ++void ++recentFilesGetList (RecentFileItem **items, int *nItems) ++{ ++ FILE *file; ++ ParseContext context; ++ ++ *items = NULL; ++ *nItems = 0; ++ ++ file = openAndLock (); ++ if (!file) ++ return; ++ ++ parse (file, &context); ++ ++ unlockAndClose (file); ++ ++ convertItems (&context, items, nItems); ++ freeContext (&context); ++} ++ ++/* Writes the ~/.recent-files file */ ++static void ++writeXml (FILE *file, ParseContext *context) ++{ ++ ++ fputs ("<?xml version=\"1.0\"?>\n" ++ "<" TAG_RECENT_FILES ">\n", ++ file); ++ ++ for (ItemList::iterator l = context->items.begin(); l != context->items.end(); l++) { ++ Item *item; ++ ++ item = *l; ++ ++ fputs (" <" TAG_RECENT_ITEM ">\n", file); ++ fprintf (file, ++ " <" TAG_URI ">%s</" TAG_URI ">\n" ++ " <" TAG_MIME_TYPE ">%s</" TAG_MIME_TYPE ">\n" ++ " <" TAG_TIMESTAMP ">%ld</" TAG_TIMESTAMP ">\n" ++ "%s" ++ " <" TAG_GROUPS ">\n", ++ item->uri.getStr(), ++ item->mimeType.getStr(), ++ (long) item->timestamp, ++ item->isPrivate ? " <" TAG_PRIVATE "/>\n" : ""); ++ ++ StringList::iterator gl; ++ for (gl = item->groups.begin(); gl != item->groups.end(); gl++) { ++ const char *group; ++ ++ group = (*gl).getStr(); ++ fprintf (file, ++ " <" TAG_GROUP ">%s</" TAG_GROUP ">\n", ++ group); ++ } ++ ++ fputs (" </" TAG_GROUPS ">\n" ++ " </" TAG_RECENT_ITEM ">\n", ++ file); ++ } ++ ++ fputs ("</" TAG_RECENT_FILES ">\n", file); ++} ++ ++/** ++ * recentFilesFree: ++ * @items: Array of items. ++ * @nItems: Number of items in the array. ++ * ++ * Frees an array of #RecentFileItem structures as returned by recentFilesGetList(). ++ **/ ++void ++recentFilesFree (RecentFileItem *items, int nItems) ++{ ++ int i; ++ ++ for (i = 0; i < nItems; i++) { ++ rtl_uString_release (items[i].uri); ++ rtl_uString_release (items[i].mimeType); ++ } ++ ++ free (items); ++} ++ ++/** ++ * recentFilesAddItem: ++ * @uri: URI to add. ++ * @mimeType: MIME type of the item. ++ * ++ * Adds an item to GNOME's recent files list. Automatically adds the "OpenOffice.org" group. ++ **/ ++void ++recentFilesAddItem (rtl_uString *uri, const rtl_uString *mimeType) ++{ ++ FILE *file; ++ ParseContext context; ++ bool alreadyExists; ++ int fd; ++ rtl_String *uriString; ++ rtl_String *mimeTypeString; ++ ++ file = openAndLock (); ++ if (!file) ++ return; ++ ++ parse (file, &context); ++ ++ alreadyExists = false; ++ ++ uriString = NULL; ++ mimeTypeString = NULL; ++ rtl_uString2String (&uriString, uri->buffer, uri->length, RTL_TEXTENCODING_UTF8, 0); ++ rtl_uString2String (&mimeTypeString, mimeType->buffer, mimeType->length, RTL_TEXTENCODING_UTF8, 0); ++ ++ for (ItemList::iterator l = context.items.begin(); l != context.items.end(); l++) { ++ Item *item; ++ ++ item = *l; ++ if (strcmp (item->uri, uriString->buffer) == 0) { ++ free (item->mimeType); ++ item->mimeType = strdup (mimeTypeString->buffer); ++ item->timestamp = time (NULL); ++ alreadyExists = true; ++ break; ++ } ++ } ++ ++ if (!alreadyExists) { ++ Item *item; ++ ++ item = new Item(); ++ item->uri = strdup (uriString->buffer); ++ item->mimeType = strdup (mimeTypeString->buffer); ++ item->timestamp = time (NULL); ++ item->isPrivate = false; ++ item->groups.push_front(GROUP_OPENOFFICE_ORG); ++ ++ context.items.push_front(item); ++ } ++ ++ rtl_string_release (uriString); ++ rtl_string_release (mimeTypeString); ++ ++ fd = fileno (file); ++ ++ /* FIXME: perhaps we should do a write to a temporary file, then do an atomic rename() */ ++ ++ rewind (file); ++ if (ftruncate (fd, 0) != 0) ++ goto out; ++ ++ writeXml (file, &context); ++ ++out: ++ ++ unlockAndClose (file); ++ freeContext (&context); ++} ++ ++}; +--- svtools/source/config/makefile.mk.orig 2003-12-07 18:35:03.000000000 +0530 ++++ svtools/source/config/makefile.mk 2003-12-10 14:07:51.000000000 +0530 +@@ -107,7 +107,12 @@ + $(SLO)$/accessibilityoptions.obj \ + $(SLO)$/cmdoptions.obj \ + $(SLO)$/extendedsecurityoptions.obj \ +- $(SLO)$/sourceviewconfig.obj ++ $(SLO)$/sourceviewconfig.obj \ ++ $(SLO)$/recent-files.obj ++ ++.IF "$(GUI)"=="UNX" ++CFLAGS+=-Wall ++.ENDIF + + EXCEPTIONSFILES = \ + $(SLO)$/accelcfg.obj \ +--- svtools/util/makefile.mk.orig 2003-12-07 18:34:32.000000000 +0530 ++++ svtools/util/makefile.mk 2003-12-10 14:08:21.000000000 +0530 +@@ -240,6 +240,10 @@ + $(VOSLIB) \ + $(SALLIB) + ++.IF "$(GUI)"=="UNX" ++SHL2STDLIBS+= $(EXPATASCII3RDLIB) ++.ENDIF ++ + .IF "$(GUI)"=="WNT" + SHL2STDLIBS+= \ + uwinapi.lib \ diff --git a/app-office/openoffice-ximian/files/digest-openoffice-ximian-1.1.48 b/app-office/openoffice-ximian/files/digest-openoffice-ximian-1.1.48 new file mode 100644 index 000000000000..559338a6ca25 --- /dev/null +++ b/app-office/openoffice-ximian/files/digest-openoffice-ximian-1.1.48 @@ -0,0 +1,3 @@ +MD5 bec8b41089ebdad2831f3c456973ad4e OOo_1.1.0_source.tar.bz2 189164050 +MD5 52360f73525499372b16f5922805b439 ooo-build-1.1.48.tar.gz 1071420 +MD5 6baa8cb0a8df8486eb8148abb0e7d237 ooo-icons-OOO_1_1-7.tar.gz 1497318 diff --git a/app-office/openoffice-ximian/files/drawing.desktop b/app-office/openoffice-ximian/files/drawing.desktop new file mode 100644 index 000000000000..6fbcfef9392e --- /dev/null +++ b/app-office/openoffice-ximian/files/drawing.desktop @@ -0,0 +1,53 @@ +[Desktop Entry] +Name=Drawing +Name[az]=Rəsm +Name[ca]=Dibuix +Name[cs]=Kreslení +Name[da]=Tegneprogram +Name[de]=Zeichnung +Name[es]=Dibujo +Name[fr]=Dessin +Name[hr]=Crtanje +Name[ms]=Lukisan +Name[nl]=Tekenen +Name[no]=Tegning +Name[pl]=Rysunek +Name[pt]=Drawing +Name[sq]=Vizatim +Name[sr]=Цртање +Name[sr@Latn]=Crtanje +Name[sv]=Teckning +Name[vi]=Drawing +Name[wa]=Dessinaedje +Name[zh_CN]=画图工具 +Name[zh_TW]=繪圖 +Comment=OpenOffice.org drawing package +Comment[az]=OpenOffice.org rəsm çəkmə paketi +Comment[ca]=Paquet de dibuix d'OpenOffice.org +Comment[cs]=Kreslicí balík OpenOffice.org +Comment[da]=OpenOffice.org-tegnepakke +Comment[de]=OpenOffice.org Zeichnungspaket +Comment[es]=Paquete de dibujo de OpenOffice.org +Comment[fr]=Dessin OpenOffice.org +Comment[hr]=OpenOffice.org paket za crtanje +Comment[ms]=Pakej lukisan OpenOffice.org +Comment[nl]=OpenOffice.org tekenpakket +Comment[no]=OpenOffice.org tegneprogram +Comment[pl]=Rysunek OpenOffice.org +Comment[pt]=Pacote de desenho OpenOffice.org +Comment[sq]=Paketa për vizatimet në OpenOffice.org +Comment[sr]=Пакет за цртање из Отворене канцеларије +Comment[sr@Latn]=Paket za crtanje iz Otvorene kancelarije +Comment[sv]=OpenOffice.org-teckningspaket +Comment[vi]=Gói OpenOffice.org Drawing +Comment[wa]=Programe di dessinaedje d' OpenOffice.org +Comment[zh_CN]=OpenOffice.org 画图工具包 +Comment[zh_TW]=OpenOffice.org 繪圖軟體 +TryExec=oodraw +Exec=oodraw +Icon=ximian-openoffice-draw.png +Terminal=false +Type=Application +Categories=GNOME;Application;Office;X-Ximian-Main; +X-GNOME-Bugzilla-Bugzilla=Ximian +X-GNOME-Bugzilla-Product=OpenOffice.org Ximian Edition diff --git a/app-office/openoffice-ximian/files/presentation.desktop b/app-office/openoffice-ximian/files/presentation.desktop new file mode 100644 index 000000000000..ea5c8bfbf8ab --- /dev/null +++ b/app-office/openoffice-ximian/files/presentation.desktop @@ -0,0 +1,53 @@ +[Desktop Entry] +Name=Presentation +Name[az]=Təqdimat +Name[ca]=Presentació +Name[cs]=Prezentace +Name[da]=Præsentation +Name[de]=Präsentation +Name[es]=Presentación +Name[fr]=Présentation +Name[hr]=Prezentacija +Name[ms]=Persembahan +Name[nl]=Presentatie +Name[no]=Presentasjon +Name[pl]=Prezentacja +Name[pt]=Presentation +Name[sq]=Prezantime +Name[sr]=Презентација +Name[sr@Latn]=Prezentacija +Name[sv]=Presentation +Name[vi]=Presentation +Name[wa]=Prezintåcion +Name[zh_CN]=文档演示 +Name[zh_TW]=簡報 +Comment=OpenOffice.org presentation application +Comment[az]=OpenOffice.org təqdimat proqramı +Comment[ca]=Aplicació de presentacions d'OpenOffice.org +Comment[cs]=Aplikace OpenOffice.org pro prezentace +Comment[da]=OpenOffice.org-præsentationsprogram +Comment[de]=OpenOffice.org Präsentationsanwendung +Comment[es]=Aplicación de presentaciones de OpenOffice.org +Comment[fr]=Application de présentation OpenOffice.org +Comment[hr]=OpenOffice.org aplikacija za prezentacije +Comment[ms]=Aplikasi persembahan OpenOffice.org +Comment[nl]=OpenOffice.org presentatie-programma +Comment[no]=Openoffice.org presentasjonsprogram +Comment[pl]=Prezentacje OpenOffice.org +Comment[pt]=Aplicação de apresentações OpenOffice.org +Comment[sq]=Aplikativi për prezantimet i OpenOffice.org +Comment[sr]=Програм за презентације из Отворене канцеларије +Comment[sr@Latn]=Program za prezentacije iz Otvorene kancelarije +Comment[sv]=OpenOffice.org-presentationsprogram +Comment[vi]=Ứng dụng OpenOffice.org Presentation +Comment[wa]=Programe di prezintåcion d' OpenOffice.org +Comment[zh_CN]=OpenOffice.org 文档演示程序 +Comment[zh_TW]=OpenOffice.org 簡報應用程式 +TryExec=ooimpress +Exec=ooimpress +Icon=ximian-openoffice-impress.png +Terminal=false +Type=Application +Categories=GNOME;Application;Office;X-Ximian-Main; +X-GNOME-Bugzilla-Bugzilla=Ximian +X-GNOME-Bugzilla-Product=OpenOffice.org Ximian Edition diff --git a/app-office/openoffice-ximian/files/spreadsheet.desktop b/app-office/openoffice-ximian/files/spreadsheet.desktop new file mode 100644 index 000000000000..47a1897b989a --- /dev/null +++ b/app-office/openoffice-ximian/files/spreadsheet.desktop @@ -0,0 +1,54 @@ +[Desktop Entry] +Name=Spreadsheet +Name[az]=Hesab Cədvəli +Name[ca]=Full de càlcul +Name[cs]=Tabulkový kalkulátor +Name[da]=Regneark +Name[de]=Tabellenkalkulation +Name[es]=Hoja de cálculo +Name[fr]=Tableur +Name[hr]=Tablični kalkulator +Name[ms]=Hamparan +Name[nl]=Spreadsheet +Name[no]=Regneark +Name[pl]=Arkusz Kalkulacyjny +Name[pt]=Spreadsheet +Name[sq]=Fleta elektronike +Name[sr]=Табеле +Name[sr@Latn]=Tabele +Name[sv]=Kalkylblad +Name[vi]=Spreadsheet +Name[wa]=Tåvleu +Name[zh_CN]=电子表格 +Name[zh_TW]=試算表 +Comment=OpenOffice.org spreadsheet +Comment[az]=OpenOffice.org hesab cədvəli +Comment[ca]=Full de càlcul d'OpenOffice.org +Comment[cs]=Tabulkový kalkulátor OpenOffice.org +Comment[da]=OpenOffice.org-regneark +Comment[de]=OpenOffice.org Tabellenkalkulation +Comment[es]=Hoja de cálculo de OpenOffice.org +Comment[fr]=Tableur OpenOffice.org +Comment[hr]=Proračunska tablica OpenOffice.org +Comment[ms]=hamparan OpenOffice.org +Comment[nl]=OpenOffice.org spreadsheet +Comment[no]=OpenOffice.org regneark +Comment[pl]=Arkusz Kalkulacyjny OpenOffice.org +Comment[pt]=Folha de cálculo OpenOffice.org +Comment[sq]=Fleta elektronike e OpenOffice.org +Comment[sr]=Табеле из Отворене канцеларије +Comment[sr@Latn]=Tabele iz Otvorene kancelarije +Comment[sv]=OpenOffice.org-kalkylblad +Comment[vi]=OpenOffice.org spreadsheet +Comment[wa]=Tåvleu d' OpenOffice.org +Comment[zh_CN]=OpenOffice.org 电子表格 +Comment[zh_TW]=OpenOffice.org 試算表 +TryExec=oocalc +Exec=oocalc +Icon=ximian-openoffice-calc.png +Terminal=false +Type=Application +Categories=GNOME;Application;Office;Finance;X-Ximian-Main; +X-GNOME-Bugzilla-Bugzilla=Ximian +X-GNOME-Bugzilla-Product=OpenOffice.org Ximian Edition + diff --git a/app-office/openoffice-ximian/files/textdoc.desktop b/app-office/openoffice-ximian/files/textdoc.desktop new file mode 100644 index 000000000000..bedd72528926 --- /dev/null +++ b/app-office/openoffice-ximian/files/textdoc.desktop @@ -0,0 +1,54 @@ +[Desktop Entry] +Name=Word Processor +Name[az]=Kəlmə İşlədici +Name[ca]=Processador de textos +Name[cs]=Textový procesor +Name[da]=Tekstbehandler +Name[de]=Textverarbeitung +Name[es]=Procesador de textos +Name[fr]=Traitement de texte +Name[hr]=Program za obradu teksta +Name[ms]=Pemproses Perkataan +Name[nl]=Tekstverwerker +Name[no]=Tekstbehandling +Name[pl]=Procesor tekstu +Name[pt]=Word Processor +Name[sq]=Procesues teksti +Name[sr]=Обрада текста +Name[sr@Latn]=Obrada teksta +Name[sv]=Ordbehandlare +Name[vi]=Word Processor +Name[wa]=Aspougneu d' tecse +Name[zh_CN]=文字处理工具 +Name[zh_TW]=文書處理器 +Comment=OpenOffice.org word processor +Comment[az]=OpenOffice.org kəlmə işlədicisi +Comment[ca]=Processador de textos d'OpenOffice.org +Comment[cs]=Textový procesor OpenOffice.org +Comment[da]=OpenOffice.org-tekstbehandler +Comment[de]=OpenOffice.org Textverarbeitung +Comment[es]=Procesador de textos de OpenOffice.org +Comment[fr]=Traitement de texte OpenOffice.org +Comment[hr]=OpenOffice.org program za obradu teksta +Comment[ms]=Pemproses perkataan OpenOffice.org +Comment[nl]=OpenOffice.org tekstverwerker +Comment[no]=OpenOffice.org tekstbehandling +Comment[pl]=Procesor tekstu OpenOffice.org +Comment[pt]=Processador de texto OpenOffice.org +Comment[sq]=Procesuesi i tekstit i OpenOffice.org +Comment[sr]=Обрада текста из Отворене канцеларије +Comment[sr@Latn]=Obrada teksta iz Otvorene kancelarije +Comment[sv]=OpenOffice.org-ordbehandlare +Comment[vi]=OpenOffice.org word processor +Comment[wa]=Aspougneu d' tecse d' OpenOffice.org +Comment[zh_CN]=OpenOffice.org 文字处理工具 +Comment[zh_TW]=OpenOffice.org 文書處理器 +TryExec=oowriter +Exec=oowriter +Icon=ximian-openoffice-writer.png +Terminal=false +Type=Application +Categories=GNOME;Application;Office;X-Ximian-Main; +X-GNOME-Bugzilla-Bugzilla=Ximian +X-GNOME-Bugzilla-Product=OpenOffice.org Ximian Edition +X-GNOME-Bugzilla-OtherBinaries=soffice.bin;getstyle-gnome diff --git a/app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild b/app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild new file mode 100644 index 000000000000..df29ac030967 --- /dev/null +++ b/app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild @@ -0,0 +1,633 @@ +# Copyright 1999-2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild,v 1.1 2004/01/11 13:40:46 pauldv Exp $ + +# IMPORTANT: This is extremely alpha!!! + +# Notes: +# +# This will take a HELL of a long time to compile, be warned. +# According to openoffice.org, it takes approximately 12 hours on a +# P3/600 with 256mb ram. And thats where building is its only task. +# +# It takes about 6 hours on my P4 1.8 with 512mb memory, and the +# build only needs about 2.1GB of disk space - Azarah. +# +# You will also need a bucketload of diskspace ... in the order of +# 4-5 gb free to store all the compiled files and installation +# directories. +# +# The information on how to build and what is required comes from: +# http://www.openoffice.org/dev_docs/source/build_linux.html +# http://tools.openoffice.org/ext_comp.html +# +# Todo: +# +# Get support going for installing a custom language pack. Also +# need to be able to install more than one language pack. + +inherit flag-o-matic eutils kernel-mod +# Compile problems with these ... +filter-flags "-funroll-loops" +filter-flags "-fomit-frame-pointer" +append-flags "-fno-strict-aliasing" +replace-flags "-O3" "-O2" +replace-flags "-Os" "-O2" + +# Enable Bytecode Interpreter for freetype ... +append-flags "-DTT_CONFIG_OPTION_BYTECODE_INTERPRETER" + +inherit gcc +# We want gcc3 if possible!!!! +export WANT_GCC_3="yes" + +inherit virtualx + +# Set $ECPUS to amount of processes multiprocessing build should use. +# NOTE: Setting this too high might cause dmake to segfault!! +# Setting this to anything but "1" on my pentium4 causes things +# to segfault :( +[ -z "${ECPUS}" ] && export ECPUS="1" + + +OO_VER=1.1.0 +XIMIAN_VER=${PV} +PATCHLEVEL=OOO_1_1_0 +ICON_VER=OOO_1_1-7 +INSTDIR="/opt/Ximian-OpenOffice" +PATCHDIR=${WORKDIR}/ooo-build-${XIMIAN_VER} +ICONDIR=${WORKDIR}/ooo-icons-${ICON_VER} +S="${WORKDIR}/oo_${OO_VER/1.1.0/1.1}_src" +DESCRIPTION="Ximian-ized version of OpenOffice.org, a full office productivity suite." +SRC_URI="mirror://openoffice/stable/${OO_VER}/OOo_${OO_VER}_source.tar.bz2 + http://ooo.ximian.com/packages/${PATCHLEVEL}/ooo-build-${XIMIAN_VER}.tar.gz + http://ooo.ximian.com/packages/ooo-icons-${ICON_VER}.tar.gz" + +HOMEPAGE="http://ooo.ximian.com" + +LICENSE="LGPL-2 | SISSL-1.1" +SLOT="0" +KEYWORDS="~x86" +IUSE="gnome kde" + +RDEPEND=">=sys-libs/glibc-2.1 + !=sys-libs/glibc-2.3.1* + >=dev-lang/perl-5.0 + >=x11-libs/gtk+-2.0 + >=gnome-base/libgnome-2.2 + >=gnome-base/gnome-vfs-2.0 + >=net-print/libgnomecups-0.1.4 + >=net-print/gnome-cups-manager-0.16 + >=dev-libs/libxml2-2.0 + >=media-libs/libart_lgpl-2.3.13 + >=x11-libs/startup-notification-0.5 + media-fonts/ttf-bitstream-vera + media-libs/fontconfig + media-gfx/imagemagick + media-libs/libpng + sys-devel/flex + sys-devel/bison + virtual/x11 + app-arch/zip + app-arch/unzip + dev-libs/expat + virtual/lpr + ppc? ( >=sys-libs/glibc-2.2.5-r7 + >=sys-devel/gcc-3.2.1 ) + dev-libs/libxslt + >=media-libs/freetype-2.1.4 + <app-arch/tar-1.13.92" + +DEPEND="${RDEPEND} + app-shells/tcsh + !app-office/openoffice-bin + !app-office/openoffice + >=sys-apps/findutils-4.1.20-r1 + !app-arch/star" + +# fix a bug with tcsh and dircolors +# +# Azarah -- 10 April 2002 +export LS_COLORS="" + + +pkg_setup() { + + ewarn "****************************************************************" + ewarn " It is important to note that OpenOffice.org is a very fragile " + ewarn " build when it comes to CFLAGS. A number of flags have already " + ewarn " been filtered out. If you experience difficulty merging this " + ewarn " package and use agressive CFLAGS, lower the CFLAGS and try to " + ewarn " merge again. " + ewarn "****************************************************************" + + set_languages + +} + + +set_languages () { + + if [ -z "$LANGUAGE" ]; then + LANGUAGE=01 + fi + + case "$LANGUAGE" in + 01 | ENUS ) LANGNO=01; LANGNAME=ENUS; LFULLNAME="US English (default)" + ;; + 03 | PORT ) LANGNO=03; LANGNAME=PORT; LFULLNAME=Portuguese + ;; + 07 | RUSS ) LANGNO=07; LANGNAME=RUSS; LFULLNAME=Russian + ;; + 30 | GREEK ) LANGNO=30; LANGNAME=GREEK; LFULLNAME=Greek + ;; + 31 | DTCH ) LANGNO=31; LANGNAME=DTCH; LFULLNAME=Dutch + ;; + 33 | FREN ) LANGNO=33; LANGNAME=FREN; LFULLNAME=French + ;; + 34 | SPAN ) LANGNO=34; LANGNAME=SPAN; LFULLNAME=Spanish + ;; + 35 | FINN ) LANGNO=35; LANGNAME=FINN; LFULLNAME=Finnish + ;; + 37 | CAT ) LANGNO=37; LANGNAME=CAT; LFULLNAME=Catalan + ;; + 39 | ITAL ) LANGNO=39; LANGNAME=ITAL; LFULLNAME=Italian + ;; + 42 | CZECH ) LANGNO=42; LANGNAME=CZECH; LFULLNAME=Czech + ;; + 43 | SLOVAK ) LANGNO=43; LANGNAME=SLOVAK; LFULLNAME=Slovak + ;; + 45 | DAN ) LANGNO=45; LANGNAME=DAN; LFULLNAME=Danish + ;; + 46 | SWED ) LANGNO=46; LANGNAME=SWED; LFULLNAME=Swedish + ;; + 48 | POL ) LANGNO=48; LANGNAME=POL; LFULLNAME=Polish + ;; + 49 | GER ) LANGNO=49; LANGNAME=GER; LFULLNAME=German + ;; + 55 | PORTBR ) LANGNO=55; LANGNAME=PORTBR; LFULLNAME="Portuguese brazilian" + ;; + 66 | THAI ) LANGNO=66; LANGNAME=THAI; LFULLNAME=Thai + ;; + 77 | ESTONIAN ) LANGNO=77; LANGNAME=ESTONIAN; LFULLNAME=Estonian + ;; + 81 | JAPN ) LANGNO=81; LANGNAME=JAPN; LFULLNAME="Japanese" + ;; + 82 | KOREAN ) LANGNO=82; LANGNAME=KOREAN; LFULLNAME=Korean + ;; + 86 | CHINSIM ) LANGNO=86; LANGNAME=CHINSIM; LFULLNAME="Simplified Chinese (PRC)" + ;; + 88 | CHINTRAD ) LANGNO=88; LANGNAME=CHINTRAD; LFULLNAME="Traditional Chinese (taiwan)" + ;; + 90 | TURK ) LANGNO=90; LANGNAME=TURK; LFULLNAME=Turkish + ;; + 91 | HINDI ) LANGNO=91; LANGNAME=HINDI; LFULLNAME=Hindi + ;; + 96 | ARAB ) LANGNO=96; LANGNAME=ARAB; LFULLNAME=Arabic + ;; + 97 | HEBREW ) LANGNO=97; LANGNAME=HEBREW; LFULLNAME=Hebrew + ;; + * ) + eerror "Unknown LANGUAGE setting!" + eerror + eerror "Known LANGUAGE settings are:" + eerror " ENUS | PORT | RUSS | GREEK | DTCH | FREN | SPAN | FINN | CAT | ITAL |" + eerror " CZECH | SLOVAK | DAN | SWED | POL | GER | PORTBR | THAI | ESTONIAN |" + eerror " JAPN | KOREAN | CHINSIM | CHINTRAD | TURK | HINDI | ARAB | HEBREW" + die + ;; + esac +} + +oo_setup() { + + unset LANGUAGE + unset LANG + + export NEW_GCC="0" + + if [ -x /usr/sbin/gcc-config ] + then + # Do we have a gcc that use the new layout and gcc-config ? + if /usr/sbin/gcc-config --get-current-profile &> /dev/null + then + export NEW_GCC="1" + export GCC_PROFILE="$(/usr/sbin/gcc-config --get-current-profile)" + + # Just recheck gcc version ... + if [ "$(gcc-version)" != 3.2 -a "$(gcc-version)" != "3.3" ] + then + # See if we can get a gcc profile we know is proper ... + if /usr/sbin/gcc-config --get-bin-path ${CHOST}-3.2.1 &> /dev/null + then + export PATH="$(/usr/sbin/gcc-config --get-bin-path ${CHOST}-3.2.1):${PATH}" + export GCC_PROFILE="${CHOST}-3.2.1" + else + eerror "This build needs gcc-3.2.1 or later!" + eerror + eerror "Use gcc-config to change your gcc profile:" + eerror + eerror " # gcc-config $CHOST-3.2.1" + eerror + eerror "or whatever gcc version is relevant." + die + fi + fi + fi + fi + +} + +src_unpack() { + + oo_setup + + cd ${WORKDIR} + unpack OOo_${OO_VER}_source.tar.bz2 ooo-build-${XIMIAN_VER}.tar.gz ooo-icons-${ICON_VER}.tar.gz + + #Still needed: The STLport patch + cd ${S} + rm stlport/STLport-4.5.3.patch + epatch ${FILESDIR}/${OO_VER}/newstlportfix.patch + + #Fix compilation with gcc 3.2.x + epatch ${FILESDIR}/${OO_VER}/config.patch + + #Fix nptl compile issues + epatch ${FILESDIR}/${OO_VER}/nptl.patch + + #Additional patch for Kernel 2.6 + epatch ${FILESDIR}/${OO_VER}/openoffice-1.1.0-linux-2.6-fix.patch + + if [ ${ARCH} = "sparc" ]; then + epatch ${FILESDIR}/${PV}/openoffice-1.1.0-sparc64-fix.patch + fi + + #Fix compile problems + epatch ${FILESDIR}/${OO_VER}/recent-files.diff + cd ${PATCHDIR}/patches/${PATCHLEVEL} + epatch ${FILESDIR}/${OO_VER}/norecent.patch + + einfo "Applying Ximian OO.org Patches" + ${PATCHDIR}/patches/apply.pl ${PATCHDIR}/patches/${PATCHLEVEL} ${S} -f --distro=Ximian || die "Ximian patches failed" + + einfo "Installing / Scaling Icons" + ${PATCHDIR}/bin/scale-icons ${S} + cp -avf ${ICONDIR}/* ${S} + + einfo "Munging font mappings ..." + ${PATCHDIR}/bin/font-munge ${S}/officecfg/registry/data/org/openoffice/VCL.xcu + echo "done munging fonts." + + # Now for our optimization flags ... + perl -pi -e "s|^CFLAGSOPT=.*|CFLAGSOPT=${CFLAGS}|g" \ + ${S}/solenv/inc/unxlngi3.mk + perl -pi -e "s|^CFLAGSOPT=.*|CFLAGSOPT=${CFLAGS}|g" \ + ${S}/solenv/inc/unxlngi4.mk + + # Some makefiles are not multiprocess ready (Mandrake) + cd ${S}; einfo "Fixing makefiles for multiprocess builds..." + for x in io/source/stm dtrans/source/X11 idlc/source nas zlib toolkit/util \ + comphelper/util padmin/source svtools/util bridges/source/prot_uno \ + framework/util framework/source/unotypes + do + perl -pi -e "s/^(PRJNAME)/MAXPROCESS=1\n\1/" ${x}/makefile.mk + done + + #Do our own branding by setting gentoo linux as the vendor + sed -i -e "s,\(//\)\(.*\)\(my company\),\2Gentoo Linux," ${S}/offmgr/source/offapp/intro/ooo.src +} + +get_EnvSet() { + + # Determine what Env file we should be using (Az) + export LinuxEnvSet="LinuxIntelEnv.Set.sh" + use sparc && export LinuxEnvSet="LinuxSparcEnv.Set.sh" + use sparc64 && export LinuxEnvSet="LinuxSparcEnv.Set.sh" + use ppc && export LinuxEnvSet="LinuxPPCEnv.Set.sh" + use alpha && export LinuxEnvSet="LinuxAlphaEnv.Set.sh" + + # Get build specific stuff (Az) + export SOLVER="$(awk '/^UPD=/ {gsub(/\"/, ""); gsub(/UPD=/, ""); print $0}' ${LinuxEnvSet})" + export SOLPATH="$(awk '/^INPATH=/ {gsub(/\"/, ""); gsub(/INPATH=/, ""); print $0}' ${LinuxEnvSet})" + +} + +src_compile() { + + if [ "$(gcc-version)" == "3.2" ]; then + einfo "You use a buggy gcc, so replacing -march=pentium4 with -march=pentium3" + replace-flags "-march=pentium4" "-march=pentium3 -mcpu=pentium4" + fi + + addpredict /bin + addpredict /root/.gconfd + local buildcmd="" + + set_languages + + oo_setup + + # Setup default compilers (We overide gcc2 if that is default here) + export CC="$(gcc-getCC)" + export CXX="$(gcc-getCXX)" + + # Enable ccache for this build (Az) + if [ "${FEATURES/-ccache/}" = "${FEATURES}" -a \ + "${FEATURES/ccache/}" != "${FEATURES}" -a \ + -d /usr/bin/ccache -a -x /usr/bin/ccache/ccache ] + then + # Build uses its own env with $PATH, etc, so + # we take the easy way out. (Az) + export CC="/usr/bin/ccache/ccache ${CC}" + export CXX="/usr/bin/ccache/ccache ${CXX}" + + # Enable new ccache for this build + elif [ "${FEATURES/-ccache/}" = "${FEATURES}" -a \ + "${FEATURES/ccache/}" != "${FEATURES}" -a \ + -x /usr/bin/ccache -a ! -d /usr/bin/ccache ] + then + einfo "We're using ccache for this build..." + # Build uses its own env with $PATH, etc, so + # we take the easy way out. (Az) + export CC="/usr/bin/ccache ${CC}" + export CXX="/usr/bin/ccache ${CXX}" + fi + + # Enable distcc for this build (Az) + if [ "${FEATURES/-distcc/}" = "${FEATURES}" -a \ + "${FEATURES/distcc/}" != "${FEATURES}" -a \ + -x /usr/bin/distcc ] + then + einfo "We're using distcc for this build..." + # Do not bump ECPUS if the user did not touch it, as currently + # it -PP do not work properly (segfaulting). (Az) + [ "$(echo ${DISTCC_HOSTS} | wc -w)" -gt 1 -a "${ECPUS}" -qt 1 ] && \ + export ECPUS="$(echo ${DISTCC_HOSTS} | wc -w)" + + export CC="distcc ${CC}" + export CXX="distcc ${CXX}" + fi + + # dmake security patch + cd ${S}/dmake + autoconf || die + + # Do NOT compile with a external STLport, as gcc-2.95.3 users will + # get linker errors due to the ABI being different (STLport will be + # compiled with 2.95.3, while OO is compiled with 3.x). (Az) + einfo "Configuring OpenOffice.org with language support for ${LFULLNAME}..." + cd ${S}/config_office + rm -f config.cache + autoconf + ./configure \ + --enable-libart \ + --enable-libsn \ + --enable-crashdump=no \ + --with-lang=ENUS,${LANGNAME} \ + --without-fonts \ + --disable-rpath \ + --enable-fontconfig \ + --with-system-zlib \ + --with-system-freetype \ + --disable-java || die + + cd ${S} + get_EnvSet + + # Build as minimal as possible + export BUILD_MINIMAL="${LANGNO}" + + # Do not include /usr/include in header search path, and + # same thing for internal gcc include dir, as gcc3 handles + # it correctly by default! (Az) + perl -pi -e "s| -I/usr/include||g" ${LinuxEnvSet} +# perl -pi -e "s| -I$(gcc-libpath)/include||g" ${LinuxEnvSet} + + if [ "${NEW_GCC}" -eq "1" ] + then + local gcc_path="$(/usr/sbin/gcc-config --get-bin-path ${GCC_PROFILE})" + + # Setup path for new gcc layout in $LinuxEnvSet, else the build + # environment will not find gcc ... (Az) + perl -pi -e "s|PATH \.:\$SOLARVER|PATH \.:${gcc_path}:\$SOLARVER|" ${LinuxEnvSet} + # New builds start quoting stuff ... + perl -pi -e "s|PATH \"\.:\$SOLARVER|PATH \"\.:${gcc_path}:\$SOLARVER|" ${LinuxEnvSet} + fi + + # Should the build use multiprocessing? + if [ "${ECPUS}" -gt 1 ] + then + buildcmd="${S}/solenv/bin/build.pl --all -P ${ECPUS} product=full --dlv_switch link" + else + buildcmd="${S}/solenv/bin/build.pl --all product=full --dlv_switch link" + fi + + if [ -z "$(grep 'CCCOMP' ${S}/${LinuxEnvSet})" ] + then + # Set CCCOMP and CXXCOMP. This is still needed for STLport + export CCCOMP=${CC} + export CXXCOMP=${CXX} + fi + + if [ "$(gcc-major-version)" -eq 3 ] + then + mkdir -p ${S}/solver/${SOLVER}/${SOLPATH}/{lib,inc} + + einfo "Installing GCC related libs..." + # Workaround for missing libs with GCC3 (thanks to Debian) (Az) + cd ${S}/solver/${SOLVER}/${SOLPATH}/lib + cp $(gcc-libpath)/libstdc++.so.$(gcc-libstdcxx-major-version)* . || \ + die "Could not copy gcc-libs!" + cp $(gcc-libpath)/libgcc_s.so* . || die "Could not copy gcc-libs!" + cd ${S} + fi + + einfo "Bootstrapping OpenOffice.org..." + # Get things ready for bootstrap (Az) + chmod 0755 ${S}/solenv/bin/*.pl + mkdir -p ${S}/solver/${SOLVER}/${SOLPATH}/inc + touch ${S}/solver/${SOLVER}/${SOLPATH}/inc/minormkchanged.flg + # Bootstrap ... + ./bootstrap + + if [ "$(gcc-major-version)" -eq 3 ] + then + local LIBFILE="$(readlink `gcc-libpath`/libstdc++.so.`gcc-libstdcxx-major-version`)" + local LIBVERSION="$(echo ${LIBFILE} | sed -e 's|libstdc++\.so\.||g')" + # Get this beast to use the right version of libstdc++ ... (Az) + echo "LIBSTDCPP3:=${LIBVERSION}" >> \ + ${S}/solver/${SOLVER}/${SOLPATH}/inc/comp_ver.mk + cd ${S} + fi + + einfo "Building OpenOffice.org..." + # Setup virtualmake + export maketype="sh" + echo "source ${S}/${LinuxEnvSet} && cd ${S}/instsetoo && ${buildcmd}" > build.sh + # Build needs X to compile! (Az) + virtualmake build.sh || die "Build failed!" + +# einfo "Building Language Pack" + # Setup virtualmake +# export maketype="sh" +# echo "source ${S}/${LinuxEnvSet} && cd ${S}/instsetoo && ${buildcmd} --from instsetoo -- instsetext=${LANGNO}" > buildlang.sh + # Build needs X to compile! (Az) +# virtualmake buildlang.sh || die "Build failed!" + + [ -d ${S}/instsetoo/${SOLPATH} ] || die "Cannot find build directory!" +} + +src_install() { + + # Sandbox issues; bug #11838 + addpredict "/user" + addpredict "/share" + addpredict "/dev/dri" + addpredict "/usr/bin/soffice" + addpredict "/pspfontcache" + + # This allows us to change languages without editing the ebuild. + # + # languages1="ENUS,FREN,GERM,SPAN,ITAL,DTCH,PORT,SWED,POL,RUSS" + # languages2="DAN,GREEK,TURK,CHINSIM,CHINTRAD,JAPN,KOREAN,CZECH,CAT" + # + # Supported languages for localized help files + # + # helplangs="ENUS,FREN,GERM,SPAN,ITAL,SWED" + # + set_languages + + get_EnvSet + + # The install part should now be relatively OK compared to + # what it was. Basically we use autoresponse files to install + # unattended, running under a Xvfb if needed. Afterwards we + # just cleanout ${D} from the registry, etc. This way we + # do not need pre-generated registry, and also fixes some weird + # bugs related to the old way we did things. + # + # <azarah@gentoo.org> (9 Sep 2002) + + # Autoresponse file for main installation + cat > ${T}/rsfile-global <<-"END_RS" + [ENVIRONMENT] + INSTALLATIONMODE=INSTALL_NETWORK + INSTALLATIONTYPE=STANDARD + DESTINATIONPATH=<destdir> + OUTERPATH= + LOGFILE= + LANGUAGELIST=<LANGUAGE> + + [JAVA] + JavaSupport=preinstalled_or_none + END_RS + + # Autoresponse file for user installation + cat > ${T}/rsfile-local <<-"END_RS" + [ENVIRONMENT] + INSTALLATIONMODE=INSTALL_WORKSTATION + INSTALLATIONTYPE=WORKSTATION + DESTINATIONPATH=<home>/.openoffice/<pv> + + [JAVA] + JavaSupport=none + END_RS + + # Fixing install location in response file + sed -e "s|<destdir>|${D}${INSTDIR}|" \ + ${T}/rsfile-global > ${T}/autoresponse + + einfo "Installing OpenOffice.org into build root..." + dodir ${INSTDIR} + cd ${S}/instsetoo/${SOLPATH}/${LANGNO}/normal + # Setup virtualmake + export maketype="./setup" + # We need X to install... + virtualmake "-v -noexit -r:${T}/autoresponse" + + echo + einfo "Removing build root from registry..." + # Remove totally useless stuff. + rm -f ${D}${INSTDIR}/program/{setup.log,sopatchlevel.sh} + # Remove build root from registry and co + egrep -rl "${D}" ${D}${INSTDIR}/* | \ + xargs -i perl -pi -e "s|${D}||g" {} || : + + einfo "Fixing permissions..." + # Fix permissions + find ${D}${INSTDIR}/ -type f -exec chmod a+r {} \; + chmod a+x ${D}${INSTDIR}/share/config/webcast/*.pl + + # Fix symlinks + dosym program/setup ${INSTDIR}/setup + + # Install user autoresponse file + insinto /etc/openoffice + sed -e "s|<pv>|${OO_VER}|g" ${T}/rsfile-local > ${T}/autoresponse-${OO_VER}.conf + doins ${T}/autoresponse-${OO_VER}.conf + + # Install wrapper script + exeinto /usr/bin + sed -e "s|<pv>|${OO_VER}|g" \ + ${FILESDIR}/${OO_VER}/ooffice-wrapper-1.3 > ${T}/ooffice + doexe ${T}/ooffice + # Component symlinks + dosym ooffice /usr/bin/oocalc + dosym ooffice /usr/bin/oodraw + dosym ooffice /usr/bin/ooimpress + dosym ooffice /usr/bin/oomath + dosym ooffice /usr/bin/oowriter + dosym ooffice /usr/bin/ooweb + dosym ooffice /usr/bin/oosetup + + # Install ximian icons + cd ${PATCHDIR}/desktop/ + insinto /usr/share/pixmaps + doins *.png + + einfo "Installing Menu shortcuts (need \"gnome\" or \"kde\" in USE)..." + if [ -n "`use gnome`" ] + then + insinto /usr/share/applications + doins ${FILESDIR}/*.desktop + fi + + if [ -n "`use kde`" ] + then + insinto /usr/share/applnk/Office + doins ${FILESDIR}/*.desktop + fi + + + # Unneeded, as they get installed into /usr/share... + # They are needed else user installation fails. +# rm -rf ${D}${INSTDIR}/share/{cde,gnome,kde} + rm -rf ${D}${INSTDIR}/share/cde +# +# for f in ${D}/usr/share/gnome/apps/OpenOffice.org/* ; do +# echo 'Categories=Application;Office;' >> ${f} +# done + + # Make sure these do not get nuked. + keepdir ${INSTDIR}/user/registry/res/en-us/org/openoffice/{Office,ucb} + keepdir ${INSTDIR}/user/psprint/{driver,fontmetric} + keepdir ${INSTDIR}/user/{autocorr,backup,plugin,store,temp,template} +} + +pkg_postinst() { + + einfo "******************************************************************" + einfo " To start OpenOffice.org, run:" + einfo + einfo " $ ooffice" + einfo + einfo " Also, for individual components, you can use any of:" + einfo + einfo " oocalc, oodraw, ooimpress, oomath, ooweb or oowriter" + einfo + einfo " If the fonts appear garbled in the user interface refer to " + einfo " Bug 8539, or http://www.openoffice.org/FAQs/fontguide.html#8" + einfo + einfo "******************************************************************" +} |