Difference between revisions of "Projects/KDE on Solaris/OpenSolaris"

Jump to: navigation, search
m (Text replace - "<code bash>" to "<syntaxhighlight lang="bash">")
Line 13: Line 13:
 
* Now fetch the repository containing the build information. The repository is approximately 8MB large at this point.<code>hg clone http://solaris.bionicmutton.org/hg/kde4-specs-460</code>
 
* Now fetch the repository containing the build information. The repository is approximately 8MB large at this point.<code>hg clone http://solaris.bionicmutton.org/hg/kde4-specs-460</code>
 
* Set-up a configuration file. Usually it's enough to just
 
* Set-up a configuration file. Usually it's enough to just
<code bash>cd kde4-specs-460/specs/ ; cp tools/build/config.template tools/build/config </code>
+
<syntaxhighlight lang="bash">cd kde4-specs-460/specs/ ; cp tools/build/config.template tools/build/config </code>
 
* Let a script install all the dependencies and the build environment. <code> sh tools/install-be --osol</code>
 
* Let a script install all the dependencies and the build environment. <code> sh tools/install-be --osol</code>
 
* Go for a walk, sleep, enjoy the life, as pkg is quite slow and has a lot to do (~1 hour)<br>
 
* Go for a walk, sleep, enjoy the life, as pkg is quite slow and has a lot to do (~1 hour)<br>
Line 29: Line 29:
  
 
To add the kde ips repository:
 
To add the kde ips repository:
<code bash>pfexec pkg set-publisher -p http://solaris.bionicmutton.org/pkg/4.5.3</code>
+
<syntaxhighlight lang="bash">pfexec pkg set-publisher -p http://solaris.bionicmutton.org/pkg/4.5.3</code>
  
 
Remember that KDE includes setuid code. Remember that installing packages from untrusted and unsigned third parties is insecure. Remember that the KDE codebase is huge and not extensively tested on OpenSolaris yet. Consider whether you really want to install KDE4 on the machine you're working on. Then decide to do it anyway. You will need KDEbase-apps for things like Konqueror and Konsole, and KDEgdm-integration to be able to choose KDE as a session; other KDE packages may be installed as you need them (such as KDEpim, KDEgames, etc.). There is a KDEconsolidation package as well that pulls in everything we know of.
 
Remember that KDE includes setuid code. Remember that installing packages from untrusted and unsigned third parties is insecure. Remember that the KDE codebase is huge and not extensively tested on OpenSolaris yet. Consider whether you really want to install KDE4 on the machine you're working on. Then decide to do it anyway. You will need KDEbase-apps for things like Konqueror and Konsole, and KDEgdm-integration to be able to choose KDE as a session; other KDE packages may be installed as you need them (such as KDEpim, KDEgames, etc.). There is a KDEconsolidation package as well that pulls in everything we know of.
  
<code bash>pfexec pkg install KDEgdm-integration</code>
+
<syntaxhighlight lang="bash">pfexec pkg install KDEgdm-integration</code>
  
 
After installing KDEgdm-integration, you should be able to log out and choose KDE as a session type from the login manager. Then you get a full KDE4 desktop. On my machine with Radeon graphics it is very slow to start up and launch applications, but fairly fast after that. There is a discussion on performance tweaking on kde-discuss@opensolaris.org.
 
After installing KDEgdm-integration, you should be able to log out and choose KDE as a session type from the login manager. Then you get a full KDE4 desktop. On my machine with Radeon graphics it is very slow to start up and launch applications, but fairly fast after that. There is a discussion on performance tweaking on kde-discuss@opensolaris.org.
Line 47: Line 47:
  
 
You will also need to install more development tools with the following package installation command:
 
You will also need to install more development tools with the following package installation command:
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec pkg install SUNWmercurial \
 
pfexec pkg install SUNWmercurial \
 
     SUNWgmake \
 
     SUNWgmake \
Line 57: Line 57:
  
 
And now you need more bits and pieces. The easiest way I've found it to install Studio Express because it drags in whatever it is, and then uninstall Studio Express because you don't really want it.
 
And now you need more bits and pieces. The easiest way I've found it to install Studio Express because it drags in whatever it is, and then uninstall Studio Express because you don't really want it.
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec pkg install sunstudioexpress
 
pfexec pkg install sunstudioexpress
 
pfexec pkg uninstall sunstudioexpress
 
pfexec pkg uninstall sunstudioexpress
Line 65: Line 65:
  
 
OpenSolaris ships without many of the headers you will need, instead packaging them separately (like the -devel packages in Linux, but with less-consistent naming). You will need at least the following:
 
OpenSolaris ships without many of the headers you will need, instead packaging them separately (like the -devel packages in Linux, but with less-consistent naming). You will need at least the following:
<code bash>pfexec pkg install SUNWhea \
+
<syntaxhighlight lang="bash">pfexec pkg install SUNWhea \
 
     SUNWaudh \
 
     SUNWaudh \
 
     SUNWsfwhea \
 
     SUNWsfwhea \
Line 73: Line 73:
  
 
Although the build will warn you about them much later, you should install the following dependencies (which will also pull in headers) now.
 
Although the build will warn you about them much later, you should install the following dependencies (which will also pull in headers) now.
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec pkg install SUNWmysql51 \
 
pfexec pkg install SUNWmysql51 \
 
     SUNWmysql51lib \
 
     SUNWmysql51lib \
Line 99: Line 99:
 
For consistency, let's set up some standard directories in your home directory. Then we need to set up your build environment -- in this example by adding to your .bash_profile, but you may want to do that differently.
 
For consistency, let's set up some standard directories in your home directory. Then we need to set up your build environment -- in this example by adding to your .bash_profile, but you may want to do that differently.
  
<code bash>
+
<syntaxhighlight lang="bash">
 
mkdir ~/src ~/bin ~/packages
 
mkdir ~/src ~/bin ~/packages
 
mkdir ~/packages/SOURCES
 
mkdir ~/packages/SOURCES
Line 117: Line 117:
  
 
Next, we'll fetch sources for pkgtool and build it. The pkgtool program is used to build SysV packages and is part of the CBE (Common Build Environment). We won't be building all of the CBE, though.
 
Next, we'll fetch sources for pkgtool and build it. The pkgtool program is used to build SysV packages and is part of the CBE (Common Build Environment). We won't be building all of the CBE, though.
<code bash>cd ~/src
+
<syntaxhighlight lang="bash">cd ~/src
 
wget http://dlc.sun.com/osol/jds/downloads/cbe/test/desktop-cbe-1.7.0-rc1-x86.tar.bz2
 
wget http://dlc.sun.com/osol/jds/downloads/cbe/test/desktop-cbe-1.7.0-rc1-x86.tar.bz2
 
gtar xvjf desktop-cbe-1.7.0-rc1-x86.tar.bz2
 
gtar xvjf desktop-cbe-1.7.0-rc1-x86.tar.bz2
Line 137: Line 137:
  
 
Next up we will install some other CBE components, using KDE's copy of their specfiles. We need to get the KDE specfile repository for this, though:
 
Next up we will install some other CBE components, using KDE's copy of their specfiles. We need to get the KDE specfile repository for this, though:
<code bash>cd ~/src
+
<syntaxhighlight lang="bash">cd ~/src
 
pfexec pkgrm CBEcmake
 
pfexec pkgrm CBEcmake
 
pfexec pkgrm CBEyasm
 
pfexec pkgrm CBEyasm
Line 151: Line 151:
 
You will need to put some symlinks into your ~/bin (or switch around your PATH, but I think using symlinks is safer). There is a target check-version that will check the versions of installed components and what's in your path and print out a report. Something like this:
 
You will need to put some symlinks into your ~/bin (or switch around your PATH, but I think using symlinks is safer). There is a target check-version that will check the versions of installed components and what's in your path and print out a report. Something like this:
  
<code bash>
+
<syntaxhighlight lang="bash">
 
$ make check-version
 
$ make check-version
 
! $AUTOMAKE is unset and automake is not in your PATH.
 
! $AUTOMAKE is unset and automake is not in your PATH.
Line 163: Line 163:
 
It's a good idea to listen to what check-version prints, because it will save you from mysterious compile failures much later. To solve typical problems, we add symlinks in ~/bin as follows:
 
It's a good idea to listen to what check-version prints, because it will save you from mysterious compile failures much later. To solve typical problems, we add symlinks in ~/bin as follows:
  
<code bash>
+
<syntaxhighlight lang="bash">
 
cd ~/bin
 
cd ~/bin
 
ln -s `which automake-1.10` automake
 
ln -s `which automake-1.10` automake
Line 182: Line 182:
  
 
To configure for OSOL, do the following:
 
To configure for OSOL, do the following:
<code bash>
+
<syntaxhighlight lang="bash">
 
cd ~/src/kde4-specs-dev/specs
 
cd ~/src/kde4-specs-dev/specs
 
cat > Makefile.config
 
cat > Makefile.config
Line 190: Line 190:
  
 
Now do a test build of a single package, to see if things work a little:
 
Now do a test build of a single package, to see if things work a little:
<code bash>
+
<syntaxhighlight lang="bash">
 
make FOSShier
 
make FOSShier
 
</code>
 
</code>
Line 198: Line 198:
 
To break down the build into a few somewhat manageable steps, we distinguish
 
To break down the build into a few somewhat manageable steps, we distinguish
 
Qt, KDEgdm-integration, BOOST and KDEconsolidation. Build them in turn:
 
Qt, KDEgdm-integration, BOOST and KDEconsolidation. Build them in turn:
<code bash>
+
<syntaxhighlight lang="bash">
 
cd ~/src/kde4-specs-dev/specs
 
cd ~/src/kde4-specs-dev/specs
 
make FOSSqt
 
make FOSSqt
Line 214: Line 214:
  
 
You will need a IPS repository running in your machine up & running:
 
You will need a IPS repository running in your machine up & running:
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec svccfg -s pkg/server "setprop pkg/port=10000"
 
pfexec svccfg -s pkg/server "setprop pkg/port=10000"
 
pfexec svcadm refresh pkg/server
 
pfexec svcadm refresh pkg/server
Line 220: Line 220:
 
</code>
 
</code>
 
Once you have your own IPS repo listening in localhost, you will need to recognize it as a valid authority from where to install packages:
 
Once you have your own IPS repo listening in localhost, you will need to recognize it as a valid authority from where to install packages:
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec pkg set-authority -O http://localhost:10000 localrepo
 
pfexec pkg set-authority -O http://localhost:10000 localrepo
 
</code>
 
</code>
 
You can check that it's configured properly if it appears as a valid IPS repo:
 
You can check that it's configured properly if it appears as a valid IPS repo:
<code bash>
+
<syntaxhighlight lang="bash">
 
pkg authority
 
pkg authority
 
# Some other repos
 
# Some other repos
Line 233: Line 233:
  
 
To create the IPS packages, you can use the ips-$PACKAGE target of make, using the following format (for the case of FOSShier):
 
To create the IPS packages, you can use the ips-$PACKAGE target of make, using the following format (for the case of FOSShier):
<code bash>
+
<syntaxhighlight lang="bash">
 
make ips-FOSShier
 
make ips-FOSShier
 
</code>
 
</code>
 
One tool you can use to find out what the direct or indirect dependencies are
 
One tool you can use to find out what the direct or indirect dependencies are
 
for a package is 'show-missing' which is a target in tools/Makefile.admin:
 
for a package is 'show-missing' which is a target in tools/Makefile.admin:
<code bash>
+
<syntaxhighlight lang="bash">
 
make -f tools/Makefile.admin show-missing TARGET=KDElibs
 
make -f tools/Makefile.admin show-missing TARGET=KDElibs
 
</code>
 
</code>
Line 248: Line 248:
 
Swap - If the build dies claiming fbe is out of free space, it is likely that your swap is too small.  About 1 Gb should be fine, but 2 Gb is recommended.  To set your swap size to 2 Gb, execute the following as root, replacing 'rpool/swap' with the location of your swap partition, given by 'zfs list':
 
Swap - If the build dies claiming fbe is out of free space, it is likely that your swap is too small.  About 1 Gb should be fine, but 2 Gb is recommended.  To set your swap size to 2 Gb, execute the following as root, replacing 'rpool/swap' with the location of your swap partition, given by 'zfs list':
  
<code bash>
+
<syntaxhighlight lang="bash">
 
pfexec zfs set volsize=2G rpool/swap
 
pfexec zfs set volsize=2G rpool/swap
 
</code>
 
</code>

Revision as of 21:42, 29 June 2011

KDE on OpenSolaris is like Projects/KDE on Solaris but with some extra setup steps. There are IPS packages available intermittently.

Status: For an overview of current issues, see the KDE4 on OpenSolaris status page.

At the moment 'Effortless building' is the only uptodate part of this page.

Effortless building of KDE 4

  • Install a current Solaris (S11e. OpenIndiana is likely to work too).
    Make sure you have enough memory (>=1GB) and swap (~2GB).
  • Make sure your user ("test" in this case) has privileges to install software etc. # usermod -P "Primary Administrator" test
  • Add the opensolaris.org repo so you can install Sun Studio 12.1pfexec pkg set-publisher -g http://pkg.opensolaris.org/release opensolaris.org
  • Install Mercurial, the version control system. You need this to keep up-to-date with the packaging information.pfexec pkg install developer/versioning/mercurial text/gnu-sed file/gnu-coreutils
  • Now fetch the repository containing the build information. The repository is approximately 8MB large at this point.hg clone http://solaris.bionicmutton.org/hg/kde4-specs-460
  • Set-up a configuration file. Usually it's enough to just
cd kde4-specs-460/specs/ ; cp tools/build/config.template tools/build/config </code>
* Let a script install all the dependencies and the build environment. <code> sh tools/install-be --osol</code>
* Go for a walk, sleep, enjoy the life, as pkg is quite slow and has a lot to do (~1 hour)<br>
* When it's finished, do: <code>bash</code> so that the new .bashrc is used <br>
* Run <code>cd ~/src/kde4-specs-460/specs/; make KDEgdm-integration</code> to start the build (build time may grow up to 24 hours on a decent machine).
* Logout and login to your brand new KDE4.x session
* Check [[Projects/KDE_on_Solaris/OpenSolaris/Status|KDE4 on OpenSolaris status page]] for workarounds for some known issues.
 
 
== Installing KDE4 IPS packages ==
 
The current KDE4 IPS package server is at http://solaris.bionicmutton.org/pkg/4.5.3 
This is a fairly standard IPS setup. The bionicmutton domain is Adriaan's and has been previously used to serve up SysV packages as well.
The URL is changing over time, always check the forum (http://www.opensolaris.org/jive/forum.jspa?forumID=187) or IRC (#kde4-solaris) for the latest news.
 
To add the kde ips repository:
<syntaxhighlight lang="bash">pfexec pkg set-publisher -p http://solaris.bionicmutton.org/pkg/4.5.3</code>
 
Remember that KDE includes setuid code. Remember that installing packages from untrusted and unsigned third parties is insecure. Remember that the KDE codebase is huge and not extensively tested on OpenSolaris yet. Consider whether you really want to install KDE4 on the machine you're working on. Then decide to do it anyway. You will need KDEbase-apps for things like Konqueror and Konsole, and KDEgdm-integration to be able to choose KDE as a session; other KDE packages may be installed as you need them (such as KDEpim, KDEgames, etc.). There is a KDEconsolidation package as well that pulls in everything we know of.
 
<syntaxhighlight lang="bash">pfexec pkg install KDEgdm-integration</code>
 
After installing KDEgdm-integration, you should be able to log out and choose KDE as a session type from the login manager. Then you get a full KDE4 desktop. On my machine with Radeon graphics it is very slow to start up and launch applications, but fairly fast after that. There is a discussion on performance tweaking on kde-discuss@opensolaris.org.
 
Please report problems to [https://bugs.kde.org/wizard.cgi|the KDE bug tracker] with Operating System set to "Solaris". Please check for duplicates [https://bugs.kde.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&op_sys=Solaris&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=%255BBug+creation%255D&type0-0-0=noop&value0-0-0=] first.
 
== Building KDE4 on OpenSolaris ==
 
 
=== Installing Tools ===
 
Set up SunStudio 12 ('''not Studio Express''') and patch it up as described on the [[Projects/KDE on Solaris]] page. Tar that up and then extract it on your OpenSolaris machine. This will give you /opt/SUNWspro. Leave that alone.
 
You will also need to install more development tools with the following package installation command:
<syntaxhighlight lang="bash">
pfexec pkg install SUNWmercurial \
    SUNWgmake \
    SUNWcurl \
    SUNWgnu-automake-110 \
    SUNWaconf \
    SUNWgnome-common-devel 
</code>
 
And now you need more bits and pieces. The easiest way I've found it to install Studio Express because it drags in whatever it is, and then uninstall Studio Express because you don't really want it.
<syntaxhighlight lang="bash">
pfexec pkg install sunstudioexpress
pfexec pkg uninstall sunstudioexpress
</code>
 
=== Installing Headers ===
 
OpenSolaris ships without many of the headers you will need, instead packaging them separately (like the -devel packages in Linux, but with less-consistent naming). You will need at least the following:
<syntaxhighlight lang="bash">pfexec pkg install SUNWhea \
    SUNWaudh \
    SUNWsfwhea \
    SUNWxorg-headers</code>
 
=== Installing Other Dependencies ===
 
Although the build will warn you about them much later, you should install the following dependencies (which will also pull in headers) now.
<syntaxhighlight lang="bash">
pfexec pkg install SUNWmysql51 \
    SUNWmysql51lib \
    SUNWlibmng \
    SUNWgnu-gettext \
    SUNWgnu-libiconv \
    SUNWiconv-unicode \
    SUNWperl-xml-parser \
    SUNWGtk \
    SUNWicu \
    SUNWgnome-media-mp3 \
    SUNWpostgr-83-libs \
    SUNWpostgr-83-devel \
    SUNWcups \
    SUNWlibtool \
    SUNWsvn \
    SUNWbison \
    SUNWflexlex \
    SUNWdoxygen \
    SUNWPython25
</code>
 
=== Configuring Paths ===
 
For consistency, let's set up some standard directories in your home directory. Then we need to set up your build environment -- in this example by adding to your .bash_profile, but you may want to do that differently.
 
<syntaxhighlight lang="bash">
mkdir ~/src ~/bin ~/packages
mkdir ~/packages/SOURCES
cat >> ~/.bashrc
PATH=/opt/SUNWspro/bin:/opt/dtbld/bin:$HOME/bin:$PATH:/usr/sbin:/opt/foss/bin:/opt/kde4/bin
CC=/opt/SUNWspro/bin/cc
CXX=/opt/SUNWspro/bin/CC
MAKE=/usr/bin/gmake
JAVA_HOME=/usr/jdk/latest
export CC CXX MAKE PATH JAVA_HOME
</code>
(note: on Nevada, you need /usr/gnu/bin somewhere in the front of the PATH)
 
Don't worry that /opt/dtbld doesn't exist yet. We'll create it shortly. Note that we are adding the Studio12 paths to your environment and also ~/bin, which we will use to override some of the system path defaults.
 
=== Installing CBE Components ===
 
Next, we'll fetch sources for pkgtool and build it. The pkgtool program is used to build SysV packages and is part of the CBE (Common Build Environment). We won't be building all of the CBE, though.
<syntaxhighlight lang="bash">cd ~/src
wget http://dlc.sun.com/osol/jds/downloads/cbe/test/desktop-cbe-1.7.0-rc1-x86.tar.bz2
gtar xvjf desktop-cbe-1.7.0-rc1-x86.tar.bz2
cd desktop-cbe-1.7.0-rc1
./cbe-install -k -g -s -o
 
wget http://kent.dl.sourceforge.net/sourceforge/pkgbuild/pkgbuild-1.3.101.tar.bz2
gtar xvjf pkgbuild-1.3.101.tar.bz2
cd pkgbuild-1.3.101
./configure --prefix=/opt/dtbld
# Lots of output snipped
gmake
# Not much output snipped
pfexec gmake install
# More output snipped
pfexec chgrp bin /opt/dtbld/{bin,lib}
</code>
Check if /opt/dtbld/bin/pkgtool will run; for instance pkgtool --help should do the trick. You can remove ~/src/pkgbuild-1.3.101* now. You need to fix up the groups on bin and lib or the next installations will fail -- suspended for administrative reasons.
 
Next up we will install some other CBE components, using KDE's copy of their specfiles. We need to get the KDE specfile repository for this, though:
<syntaxhighlight lang="bash">cd ~/src
pfexec pkgrm CBEcmake
pfexec pkgrm CBEyasm
 
hg clone http://solaris.bionicmutton.org/hg/kde4-specs-dev
cd kde4-specs-dev/specs
gmake CBEcmake CBEyasm
</code>
This will build and install cmake 2.6.2 and yasm into /opt/dtbld. The cmake is newer than what CBE 1.7.0 will deliver; yasm is the same as CBE yasm.
 
=== Installing the Rest ===
 
You will need to put some symlinks into your ~/bin (or switch around your PATH, but I think using symlinks is safer). There is a target check-version that will check the versions of installed components and what's in your path and print out a report. Something like this:
 
<syntaxhighlight lang="bash">
$ make check-version
! $AUTOMAKE is unset and automake is not in your PATH.
!   Make sure an automake is available (CBEautomake).
! install is not GNU install; make sure GNU install
!   is in your path and can be called as "install"
! System will probably not compile properly.
!   hit ^C now to abort compilation.
</code>
 
It's a good idea to listen to what check-version prints, because it will save you from mysterious compile failures much later. To solve typical problems, we add symlinks in ~/bin as follows:
 
<syntaxhighlight lang="bash">
cd ~/bin
ln -s `which automake-1.10` automake
ln -s `which aclocal-1.10` aclocal
ln -s `which ginstall` install
ln -s `which gmake` make
for i in autoconf autoheader autom4te autoreconf
do
    ln -s `which $i` $i
done
</code>
 
=== Configuring the Build ===
 
All of the build action happens in ~/src/kde4-specs-dev/specs, and packages and other build things happen in ~/packages; the latter is configurable through pkgtool's ~/.pkgtoolrc and the former is where you checked out the sources. You still need to configure the build to make it an OpenSolaris build instead of a regular one; the difference is:
- A regular build builds '''all''' of the dependencies in /opt/foss, including many duplicates of packages already installed on the system.
- An OSOL build uses as many of the installed system packages as is feasible.
 
To configure for OSOL, do the following:
<syntaxhighlight lang="bash">
cd ~/src/kde4-specs-dev/specs
cat > Makefile.config
PKGTOOL_ARGS=--without-64 --with-osol
</code>
This suppresses 64-bit builds (of limited use if your interest is only KDE, which is going to be built in 32-bit mode anyway) and changes the dependencies to OSOL style. For documentation on what can go in Makefile.config, see the Makefile.
 
Now do a test build of a single package, to see if things work a little:
<syntaxhighlight lang="bash">
make FOSShier
</code>
 
=== Building KDE in Four Big Steps ===
 
To break down the build into a few somewhat manageable steps, we distinguish
Qt, KDEgdm-integration, BOOST and KDEconsolidation. Build them in turn:
<syntaxhighlight lang="bash">
cd ~/src/kde4-specs-dev/specs
make FOSSqt
make KDEgdm-integration
make FOSSboost
make KDEconsolidation
</code>
Those will pull in the dependencies they need one-by-one. It can take a long time to download and build it all; count on about a day on a modern desktop. Look in Makefile.templates for other interesting targets.
 
== Creating KDE4 IPS packages ==
 
If you want to create your own IPS packages (in order to test them before contributing them to OpenSolaris contrib repo eventually, maybe), you will need to follow a series of steps:
 
=== Enabling your own IPS repo ===
 
You will need a IPS repository running in your machine up & running:
<syntaxhighlight lang="bash">
pfexec svccfg -s pkg/server "setprop pkg/port=10000"
pfexec svcadm refresh pkg/server
pfexec svcadm enable pkg/server
</code>
Once you have your own IPS repo listening in localhost, you will need to recognize it as a valid authority from where to install packages:
<syntaxhighlight lang="bash">
pfexec pkg set-authority -O http://localhost:10000 localrepo
</code>
You can check that it's configured properly if it appears as a valid IPS repo:
<syntaxhighlight lang="bash">
pkg authority
# Some other repos
localrepo                           http://localhost:10000/
</code>
 
=== Creating the IPS packages and commiting them to the repo ===
 
To create the IPS packages, you can use the ips-$PACKAGE target of make, using the following format (for the case of FOSShier):
<syntaxhighlight lang="bash">
make ips-FOSShier
</code>
One tool you can use to find out what the direct or indirect dependencies are
for a package is 'show-missing' which is a target in tools/Makefile.admin:
<syntaxhighlight lang="bash">
make -f tools/Makefile.admin show-missing TARGET=KDElibs
</code>
 
== Troubleshooting ==
 
=== OSOL System Issues ===
 
Swap - If the build dies claiming fbe is out of free space, it is likely that your swap is too small.  About 1 Gb should be fine, but 2 Gb is recommended.  To set your swap size to 2 Gb, execute the following as root, replacing 'rpool/swap' with the location of your swap partition, given by 'zfs list':
 
<syntaxhighlight lang="bash">
pfexec zfs set volsize=2G rpool/swap
</code>
 
Reboot afterward, as the change may not register immediately with the kernel.
 
=== Qt Jambi ===
 
Ant - If the system claims it can't find ant, or CBEant then you need to install JDS-CBE from http://opensolaris.org/os/project/jds/contributing/building/ .  The ANT_HOME is often not set for you, so set it to the following in your shell profile:
 
<code>
export ANT_HOME=/opt/jdsbld
</code>
 
java.lang.OutOfHeapSpaceError - Sometimes the given heap space for the XSLT generation at the beginning of the compile isn't enough and the build stops.  Add the following to your .bashrc or shell profile to increase to a suitable size of 256m:
 
<code>
export ANT_OPTS=-Xmx256m
</code>

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal