On Sunday 06 January 2008, Danny Pansters wrote: > I never found the time and/or inspiration to persue it further, but I > created a few "kitchen sink" type ports for kdesupport4, kdelibs4, > kdebase4, kdepimlibs4 back in September. It compiled and I could start the > desktop but (as Adriaan has also blogged about and somewhat worked around) > knotify4 barfed really bad.
A viable approach is to disable multimedia, although then you *do* get lots of
dialog boxes. I have not fixed that one yet. support, libs, pimlibs all build
out-of-the-box on FreeBSD-6. I've just discovered that FBSD-6 doesn't have
the _SC_PHYS_PAGES sysconf constant (which FBSD-7 does, and which FBSD-7
documents as a "Solaris and Linux extension").
Here's a patch to do the same with sysctl() on 6-STABLE.
--
These are your friends - Adem
GPG: FEA2 A3FE Adriaan de Groot
Index: workspace/plasma/plasma/plasmaapp.cpp
===================================================================
--- workspace/plasma/plasma/plasmaapp.cpp (revision 758467)
+++ workspace/plasma/plasma/plasmaapp.cpp (working copy)
@@ -24,6 +24,10 @@
#include "plasmaapp.h"
#include <unistd.h>
+#if !defined(_SC_PHYS_PAGES) && defined(Q_OS_FREEBSD)
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#endif
#include <QApplication>
#include <QDesktopWidget>
@@ -138,9 +142,33 @@
}
cacheSize += cacheSize / 10;
- // Calculate the size of physical system memory
+ // Calculate the size of physical system memory; _SC_PHYS_PAGES *
+ // _SC_PAGESIZE is documented to be able to overflow 32-bit integers,
+ // so apply a 10-bit shift. FreeBSD 6-STABLE doesn't have _SC_PHYS_PAGES
+ // (it is documented in FreeBSD 7-STABLE as "Solaris and Linux extension")
+ // so use sysctl in those cases.
+#if defined(_SC_PHYS_PAGES)
int memorySize = sysconf(_SC_PHYS_PAGES);
memorySize *= sysconf(_SC_PAGESIZE) / 1024;
+#else
+#ifdef Q_OS_FREEBSD
+ int sysctlbuf[2];
+ size_t size = sizeof(sysctlbuf);
+ int memorySize;
+ // This could actually use hw.physmem instead, but I can't find
+ // reliable documentation on how to read the value (which may
+ // not fit in a 32 bit integer).
+ if (!sysctlbyname("vm.stats.vm.v_page_size", sysctlbuf, &size, NULL, 0)) {
+ memorySize = sysctlbuf[0] / 1024;
+ size = sizeof(sysctlbuf);
+ if (!sysctlbyname("vm.stats.vm.v_page_count", sysctlbuf, &size, NULL, 0)) {
+ memorySize *= sysctlbuf[0];
+ }
+ }
+#endif
+ // If you have no suitable sysconf() interface and are not FreeBSD,
+ // then you are out of luck and get a compile error.
+#endif
// Increase the pixmap cache size to 1% of system memory if it isn't already
// larger so as to maximize cache usage. 1% of 1GB ~= 10MB.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ kde-freebsd mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-freebsd
