summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul de Vrieze <pauldv@gentoo.org>2004-01-11 13:40:46 +0000
committerPaul de Vrieze <pauldv@gentoo.org>2004-01-11 13:40:46 +0000
commit1fbaebc8a09c1d223fe088a78ac2dae4edeea142 (patch)
tree8f306a8d3021962ab941e23324614056898f8353 /app-office
parentfixed motif dep (diff)
downloadgentoo-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/ChangeLog18
-rw-r--r--app-office/openoffice-ximian/Manifest25
-rw-r--r--app-office/openoffice-ximian/files/1.1.0/norecent.patch11
-rw-r--r--app-office/openoffice-ximian/files/1.1.0/recent-files.diff1099
-rw-r--r--app-office/openoffice-ximian/files/digest-openoffice-ximian-1.1.483
-rw-r--r--app-office/openoffice-ximian/files/drawing.desktop53
-rw-r--r--app-office/openoffice-ximian/files/presentation.desktop53
-rw-r--r--app-office/openoffice-ximian/files/spreadsheet.desktop54
-rw-r--r--app-office/openoffice-ximian/files/textdoc.desktop54
-rw-r--r--app-office/openoffice-ximian/openoffice-ximian-1.1.48.ebuild633
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 "******************************************************************"
+}