## 30 December 2009

### Sun Microsystems Inc. (JAVA), Oracle Corp. (ORCL)

Premium offered: $0.14 or 1.50% Acquirer: ORCL Target: JAVA Offer per share:$9.50 cash (too bad I paid $12.25/share) Value of outstanding common equity:$7,074,650,000
Target share price: $9.36 Acquirer share price:$25.00
Expected closing: N/A
Annualized gain: N/A
Note: The U.S. Justice Department cleared the way for Oracle's acquisition
of Sun Microsystems about a month after Sun's shareholders approved the
deal. Oracle withdrew its application for clearance in Russia where
authorities are unwilling to approve the deal ahead of a decision from the
European Commission. The EC objected to the deal, saying Sun's MySQL
database software would reduce competition in the database market. The
European Union later extended its review of the deal to the end of Jan.
after Oracle asked for the extension to allow it more time to respond to the
concerns the Commission voiced. A bipartisan group of U.S. senators have
been urging the European Commission to speed up its investigation into the
ORCL/JAVA deal, saying JAVA's financial position has become more precarious
as the EC's inquiry has continued. Oracle's Chief Executive Larry Ellison
has said he's willing to create a separate entity to house its MySQL open
with the acquisition.

## 23 October 2009

### JForum on OpenSolaris

I decided to go ahead and setup a forum for one of the projects I am working on.  I already had a zone setup that was hosting a "coming soon" page.

Looking around, I spent quite awhile trying to decide which forum software I was going to use.  As a Java developer, I decided to go with a Java-based one so that it is easier for me to maintain.  I ended up choosing JForum.

Installation was actually pretty easy.  Getting the forums configured not so much (by default new forums were not visible until I went and reconfigured every user group -- each time I added a forum -- very annoying).

# pkg install SUNWtcat
# pkg install SUNWj6dvx

Checking port 8080 on the domain I saw that tomcat was indeed running.

Going to http://THEMACHINE:8080/jforum/install.jsp I specified to use HSQLDB, UTF-8, my URLs and a password.

Still a few things I'd like to fix, but as of now the forums are working.

## 22 October 2009

### Gnome-terminal just disappears after upgrading to snv_125

After upgrading today, I was unable to launch the terminal.  Let me correct that -- the window would come up, but before any text was displayed it would close.  I didn't see any error messages or logs or anything that indicated what the problem was.

Then I found bug #6892167.  To verify if that was my problem, I went up to "Applications | Run Application" and did 'gnome-terminal -e /bin/bash'.  It launched fine.

Confirmed, I followed the instructions in the workaround to the best of my ability.  The "old" copy of the libvte I had was 9.6.0, but it still appears to work.  Also, I was unable to unmount the old boot environment without forcing (-f) it.

All seems to work now.

## 27 August 2009

### Private Repositories with Nexus

So one of the projects I am working on is not open source (I know, I know)... that led me to realize I needed to provide both private AND anonymous access to my repositories -- depending on which repo.

A bit of googling and I came across this page.  I mostly followed his instructions -- but here are a few sidenotes in case you go to try it.

In step #2, be careful about long names.  When I got to step 3, I couldn't tell "Anonymous Public Snapshot Repository (read)" apart from "Anonymous Public Snapshot Repository (delete)" since they both looked like "Anonymous Public Snapshot Repositor".

I didn't do the last half of step #5 or step 6. Instead, I went into the user dialog and removed the permissions that the "anonymous" user originally had and added in mine instead.

Here's some screenshots...

This is the roles assigned to the "Public Role"

This is the "Private Role"
This is the "anonymous" user
And my personal user

You can test it by logging out then trying to look at the repositories. You click on the private ones and it says access denied. Public ones are still accessible.

## 22 August 2009

### Subversion working in Unix but not on Windows

So as I was checking out my ambrosia project on Windows today and got this error:

A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\phiTest.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\PhiTest.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\tanTest.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\A052119Test.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\A073333Test.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\eTest.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\A113011Test.java
A    ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\piTest.java
svn: In directory 'ambrosia\thoth\src\test\java\org\eoti\math\cf\constants'
svn: Can't open file 'ambrosia\thoth\src\test\java\org\eoti\math\cf\constants\.svn\tmp\text-base\PhiTest.java.svn-base': The system cannot find the file spe
cified.

Now, it may not be obvious looking at the error message, but here's the note as to the reason:

"Failed to add file '(name here)': object of the same name already exists.
or
"Can't open file 'folder\.svn\tmp\text-base\file.svn-base': The system cannot find the file specified."
Both mean that two files in the same folder have the same name except for capitalization; for example "Readme.txt" and "README.TXT". Unix and Subversion are case-sensitive, so the files are considered to be completely unrelated. But in Windows is not case-sensitive, so when it tries to update README.TXT on top of Readme.txt (say), it breaks.
The surest way to fix the problem is to log in to a Unix system (such as io.uwplatt.edu) and use the unix notes to check out the repository there. You can then use the svn mv command to rename one of the files. If you are in the middle of trying to add a file to your repository, you might try using TortoiseSVN->Rename... to rename the existing file to something entirely different and then updating. Note that you need to use the TortoiseSVN rename commands; merely renaming the file in Windows Explorer won't fix your problems.

Do you see it? We have phi and Phi; phiTest and PhiTest... why you ask? Because phi and Phi are not the same number.  I am not quite sure how I am going to resolve it (well, will have to change the names - but to what?) but have created an issue for it.

## 18 August 2009

### Framework error: code: 28 reason: Operation timed out after 30000 milliseconds

When trying to install a package (in my case openjdk7-dev) you might run into this [on command line OR in the pkg ui]:

Error:
Is the repository accessible?

1: Framework error: code: 28 reason: Operation timed out after 30000 milliseconds with 18904080 out of 20853709 bytes received
URL: 'http://pkg.opensolaris.org/dev'.
2: Framework error: code: 28 reason: Operation timed out after 30000 milliseconds with 18999276 out of 20853709 bytes received
URL: 'http://pkg.opensolaris.org/dev'.
3: Framework error: code: 28 reason: Operation timed out after 30000 milliseconds with 19187200 out of 20853709 bytes received
URL: 'http://pkg.opensolaris.org/dev'.
4: Framework error: code: 28 reason: Operation timed out after 30000 milliseconds with 18991256 out of 20853709 bytes received
URL: 'http://pkg.opensolaris.org/dev'.

The solution to fix this was to simply set an environment variable:
export PKG_CLIENT_TIMEOUT=300

## 11 August 2009

### FTPConnectionClosedException: Connection closed without indication

After installing the ftp server yesterday, I was trying to connect to it with the commons-net library.  Unfortunately it kept failing:

org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
at org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1244)
at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1301)

As download worked from the browser, I thought this kinda odd.  Looking a little closer, I decided to manually try the steps from the command line and see if I could figure out what was going on.

I ftp'd in and did the same commands I was doing from Java (passive, binary, etc).

When I tried to 'get ' I saw:

150 Opening BINARY mode data connection for aopalliance-1.0.jar (6371 bytes).
421 Service not available, remote server has closed connection
ftp>

Since I had found through my debugging that after the exception, the 150 FILE_STATUS_OK was the last reply I got; I looked up 421.  It appears that there is a current bug on OpenSolaris that causes this behavior.

So here's the workaround (for the setup I did yesterday):

cp /lib/libsendfile.so.1 /home/ftp/lib
chown root:bin /home/ftp/lib/libsendfile.so.1

Everything works beautifully now :)

### Installing ftpd into a zone

from zone:
• pkg install SUNWftp
• ftpconfig /home/ftp ((it will fail at the end))
from global:
• ftpconfig -d ((zonepath))/root/home/ftp

should work now

## 22 July 2009

### Western Digital My Book World

So awhile back, I installed a My Book World onto the network. The other day I came home and the rings were spinning frantically and the drive was inaccessible.

I tried rebooting it, power cycling it, etc. No luck.

I contacted support. So far there has been 6 responses from Tech Support (which of course) started off with:
My apologies; I failed to notice you are using Linux.Western Digital technical support only provides jumper configuration and physical installation support for hard drives used in systems running the Linux/Unix operating systems. For setup questions beyond physical installation of your Western Digital hard drive, please contact the vendor of your Linux/Unix operating system.
Which of course is *really* helpful since it is a *Linux* NETWORK drive accessed via web browser and samba. Of course, I understand they aren't trained to understand that a browser or ping on a non-windows system is just as accurate as on a windows system, but...

Still no resolution. I am expecting they are going to tell me to RMA the drive -- but I have a lot of personal sentimental pictures and such on there that have no backups (as these were the backups to the Windows box that died)... No clue what I am going to do -- but since I seem to have to RMA every Western Digital device I buy (internal or external) maybe I should quit buying WD.

## 07 July 2009

### Hanging during boot

As a followup to the previous post (and this one before that)...

It still takes 4-5 hours to boot.... specifically, dmesg shows that this took 4 hours...

Jul  7 08:15:32 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 0 irq 0xe vector 0x90 ioapic 0x4 intin 0xe is bound to cpu 2
(previous line [cdrom] was fine... rest are not)
Jul  7 08:15:32 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 3
Jul  7 08:15:32 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 0
Jul  7 08:15:40 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 3
Jul  7 08:15:57 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 0
Jul  7 08:15:57 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 1
Jul  7 08:15:57 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 2
Jul  7 08:15:57 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 3
(repeat and repeat and repeat)
Jul  7 12:21:13 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 0
Jul  7 12:21:14 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 1

(system becomes usable here)
Jul  7 15:24:19 serveris xpv_psm: [ID 805372 kern.info] xVM_psm: ide (ata) instance 1 irq 0xf vector 0x98 ioapic 0x4 intin 0xf is bound to cpu 3

Any thoughts why a non-existant IDE device is polled for 4 hours during boot?  Or why after finally booting, it is *still* doing it?

UPDATE: Bug submitted

## 27 June 2009

### Update: Ardor3d and DarkMMO on OpenSolaris

As noted in the previous entry, I have Ardor3d working now in OpenSolaris (as of v 0.6-SNAPSHOT of Ardor3d).

I now have a mavenized-version of DarkMMO working as well (poms will be checked in soon).

Below is the startup script I am currently using to launch it.
#!/bin/bash

DS_PATH=pwd
DS_CP="$DS_PATH/DarkMMO-Client/target/DarkMMO-Client-1.0-SNAPSHOT.jar" for file in$DS_PATH/DarkMMO-Client/target/dependency/*.jar; do
DS_CP="$DS_CP:$file"
done

export LD_LIBRARY_PATH=/export/home/malachi/work/Ardor3Dv1/ardor3d-lwjgl/lib/lwjgl/native/solaris

java -cp $DS_CP -Ddarkmmo.nwndatadir="$DS_PATH/nwn" com.worldwizards.darkmmo.client.DarkMMOClient

## 24 June 2009

### Maxine on OpenSolaris

Maxine is a VM designed for and written in the Java(TM) Programming Language with an emphasis on leveraging meta-circularity, componentized design, and code reuse to achieve flexibility, configurability, and productivity for academic and industrial virtual machine researchers.
So I thought I'd give it a shot.

I extracted the zip file into into /opt.  Originally permissions were as root:root (due to pfexec usage for opt) but I had to change it since maxine didn't like not having write access to the directory.  I also created a symlink to /opt/maxine [which will be how I refer to it from now on].

I copied junit-4.4.jar into /opt/maxine/bin and added a line at the top of /opt/maxine/bin/max:

JUNIT4_CP=/opt/maxine/bin/junit-4.4.jar
I modified my .zshrc to set /opt/maxine as MAXINE_HOME and added $MAXINE_HOME/bin to the beginning of my path. Following these instructions, I took it for a little spin. # max build This actually failed (cc: language M1 not recognized) as long as gcc was in the PATH before the SunStudioExpress/bin; swapping those around it began working. # max helloworld Hello World # max vm -cp VM/bin test.output.GCTest2 Could not load main class: java.lang.ClassNotFoundException: test.output.GCTest2 KK, let's troubleshoot that... # max -v helloworld /opt/maxine/Native/generated/solaris/maxvm -classpath /opt/maxine/VM/bin util.HelloWorld Hello World! # max -v vm -cp VM/bin util.HelloWorld /opt/maxine/Native/generated/solaris/maxvm -cp VM/bin util.HelloWorld Could not load main class: java.lang.ClassNotFoundException: util.HelloWorld # max -v vm -cp /opt/maxine/VM/bin util.HelloWorld /opt/maxine/Native/generated/solaris/maxvm -cp /opt/maxine/VM/bin util.HelloWorld Hello World! Ok, I think I have it... # max -v vm -cp /opt/maxine/VM/bin test.output.GCTest2 /opt/maxine/Native/generated/solaris/maxvm -cp /opt/maxine/VM/bin test.output.GCTest2 Garbage Collector Test ... GCTest2 done. I don't have 'max gate' working yet and 'max inspect' core dumped while trying to fork... but hey, it's a start. ## 22 June 2009 ### Ardor3D on OpenSolaris I noticed earlier today that Sun finally changed the licensing on Darkstar, as per my request. Before going and working on my design, I decided to see what the status of DarkMMO was. Jeff has picked it back up, and has started porting it to Ardor3d. Ardor3d? I hadn't heard of that... Apparently, Joshua Slack has moved the development from jMonkeyEngine to Ardor3d. The little bit of research I did seems to indicate that there is a bit of a rift with that -- but that Ardor3d is more current. Ok, well, can I get Ardor3d working on OpenSolaris? I go and check out their 'getting started' and was very disappointed to see references to Eclipse. Yes, I know many of you out there like Eclipse; but I am a purist and so have been against it since day 1. Besides, I really didn't like IBM's deceptive practices regarding its launch. Oh well, let's see if this project is worth using after all. I download the source (subversion, yay!) and go to compile it (maven, yay!)... First failure is obvious... I needed to add a mirror to their nexus repository inside mine. Try again... Ok, well now the ardor3d-swt is failing. As much as I hate to, I decide to troubleshoot why it isn't building. As could be expected from a non-java library, the problem was caused by their repo not having the native libraries (yes, native - that's the main reason I despise SWT -- whoever heard of requiring native libraries for a java app intentionally?). Ok, screw it. I commented out the ardor3d-swt module and then added an exclusion for **/*Swt*.java to the compiler in the top level pom. Ok, now everything else builds. Now to run the example... hmmm... well that's annoying, I don't really want to have to find all the jars to test it... So I copied the dependency plugin configuration from ambrosia's pom into the top level pom and rebuilt. Good. Now I have all the runtime dependencies for the examples in one place. I added all of them (why is the Java6 -classpath directory not working?) to the classpath, as well as the auto-generated ardor3d-examples-0.6-SNAPSHOT.jar. Try again. Close. export LD_LIBRARY_PATH=/export/home/malachi/work/Ardor3Dv1/ardor3d-lwjgl/lib/lwjgl/native/solaris:$LD_LIBRARY_PATH

Try again. Ok this time it runs. Can't use JOGL in the popup because there isn't a native library for it. Can't use 8 samples, because then it complains about GLX13 configuration. Can't use fullscreen -- well, that's a bit harsh. I *can* use fullscreen but it looks like crap because it changes to 320x240 and has severe artifacts. However, 4 samples, LWJGL, 1152x864 looks pretty good. Colors look a LOT better on 1024x768 though.

So not sure how much time I will spend on it. Definitely appears that it will be a bit of work to make it usable on OpenSolaris. Then again, maybe I should retry on Windows since my Emotiv Epoc won't run on anything else right now anyways.

BTW: To run the example after setting up the classpath and LD_LIBRARY_PATH...
java com.ardor3d.example.basic.BoxExample

## 10 June 2009

### Firefox 3.5 and Java is not enabled

So I download the 3.5 Preview of Firefox (luckily the tarball rather than overwriting my working Firefox) and when I try to do just about anything:

The current version of Java on this system (0 - Java Not Enabled)
So haven't figured out yet how to fix this. Edit|Preferences says that it is enabled. The other version of Firefox (3.1) can run at the same time and Java is working on it...  Hope they iron that out soon.  Especially since that little attempt completely wiped out all my personal data in the 3.1 version (bookmarks, passwords, history, everything -- which by the way, REALLY sucks).

## 03 June 2009

### Installing JavaFX

malachi@serveris[1]:/opt % pfexec chmod +x javafx_sdk-1_2-solaris-i586.sh
malachi@serveris[0]:/opt % pfexec ./javafx_sdk-1_2-solaris-i586.sh
malachi@serveris[0]:/opt % pfexec rm javafx_sdk-1_2-solaris-i586.sh
malachi@serveris[0]:/opt % pfexec ln -s javafx-sdk1.2 javafx

per http://java.sun.com/javafx/1/tutorials/core/getStarted/
malachi@serveris[0]:~/work/javafx/Calculator/tmp % javafxc Calculator.fx
malachi@serveris[0]:~/work/javafx/Calculator/tmp % javafx Calculator

## 20 May 2009

I got home from work last night and had my new OpenSolaris Bible [Amazon $32] sitting at my doorstep. Browsing through it, I was fairly impressed with the range of tidbits they covered. ZFS, iPKG, SMF, FMD, xVM, Zones, Java and C++ development, etc. First thing I decided to play with was getting those remote CIFS shares mounted (they had been accessible via file explorer, but not via command-line). Unfortunately, it required I reboot the machine after enabling the smb/server... and well, for some unknown reason that currently takes 4 hours... so I didn't get to play with it much. I did however manage to get one of the shares to mount... Still trying to get the automount to work, but it's a start. Taking the book to work today, I decided to play with FMD... Here's some comparison results between the work machine and the home machine... [Note: 'eris' is the work machine. 'serveris' is the home machine] [eris:malachi(0)] ~% pfexec /usr/lib/fm/fmd/fmtopo TIME UUID May 20 09:40:20 23d4dce1-d973-c98a-ee18-ee2a16dd8ee8 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0/core=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0/core=0/strand=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0/core=1 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0/core=1/strand=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=0/pciexrc=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=0/pciexrc=0/pciexbus=1 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=0/pciexrc=0/pciexbus=1/pciexdev=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=0/pciexrc=0/pciexbus=1/pciexdev=0/pciexfn=0 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=1 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=1/pciexrc=1 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/hostbridge=2 hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/chassis=0 malachi@serveris[0]:~ % pfexec /usr/lib/fm/fmd/fmtopo TIME UUID May 20 09:42:42 0524f912-299c-6280-d892-c36f53c00103 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/core=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/core=0/strand=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/core=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/core=1/strand=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/memory-controller=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/memory-controller=0/dram-channel=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0/memory-controller=0/dram-channel=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/core=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/core=0/strand=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/core=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/core=1/strand=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/memory-controller=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/memory-controller=0/dram-channel=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=1/memory-controller=0/dram-channel=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0/pcibus=5 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0/pcibus=5/pcidev=11 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0/pcibus=5/pcidev=11/pcifn=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0/pcibus=5/pcidev=32 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=0/pcibus=5/pcidev=32/pcifn=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=1/pciexrc=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=2 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=2/pciexrc=2 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=3 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=3/pciexrc=3 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=2 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=2/pciexdev=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=2/pciexdev=0/pciexfn=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=4 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=4/pciexrc=4 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=1 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=1/pciexdev=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=1/pciexdev=0/pciexfn=0 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=5 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=5/pciexrc=5 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=6 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/hostbridge=6/pciexrc=6 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/chassis=0 first cpu: [eris:malachi(0)] ~% pfexec /usr/lib/fm/fmd/fmtopo -P all hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0 TIME UUID May 20 09:44:10 2d75b8fe-0c11-4e89-d8a5-ed2569e7b58e hc://:product-id=OptiPlex-755:chassis-id=72VYGH1:server-id=eris/motherboard=0/chip=0 group: protocol version: 1 stability: Private/Private resource fmri hc://:product-id=OptiPlex-755:chassis-id=72VY... group: authority version: 1 stability: Private/Private product-id string OptiPlex-755 chassis-id string 72VYGH1 server-id string eris group: chip-properties version: 1 stability: Private/Private vendor_id string GenuineIntel family int32 6 model int32 23 stepping int32 6 malachi@serveris[0]:~ % pfexec /usr/lib/fm/fmd/fmtopo -P all hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0 TIME UUID May 20 09:45:56 a0c248a0-75ae-65c3-e8b3-be99702ad460 hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-1234567890:server-id=serveris/motherboard=0/chip=0 group: protocol version: 1 stability: Private/Private resource fmri hc://:product-id=L1N64-SLI-WS:chassis-id=SYS-... group: authority version: 1 stability: Private/Private product-id string L1N64-SLI-WS chassis-id string SYS-1234567890 server-id string serveris group: chip-properties version: 1 stability: Private/Private vendor_id string AuthenticAMD family int32 15 model int32 193 stepping int32 3 NodeId uint32 0x0 CoherentNodes uint32 0x2 SbNode uint32 0x0 LkNode uint32 0x0 SystemCoreCount uint32 0x4 C0Unit uint32 0x0 C1Unit uint32 0x1 McUnit uint32 0x2 HbUnit uint32 0x3 SbLink uint32 0x1 BroadcastRoutes uint32[] [ 9 1 ] ResponseRoutes uint32[] [ 1 8 ] RequestRoutes uint32[] [ 1 8 ] shorthand for the CPU names.... [eris:malachi(0)] ~% pfexec /usr/lib/fm/fmd/fmtopo -s cpu TIME UUID May 20 09:45:57 08533a3a-65de-e73d-e8f1-e89fba223ed0 cpu:///cpuid=0 cpu:///cpuid=1 malachi@serveris[0]:~ % pfexec /usr/lib/fm/fmd/fmtopo -s cpu TIME UUID May 20 09:47:22 d2a17d23-222d-412d-c691-cf1273371317 cpu:///cpuid=0 cpu:///cpuid=1 cpu:///cpuid=2 cpu:///cpuid=3 Now, what else can I play with? ### Hanging at Hostname: serveris I had to reboot last night, so I made sure to keep track of the time. 10:58pm I had told Grub which instance to run and it was waiting at Hostname: serveris 1:30am I went to bed and it was still sitting there 7:30 this morning I check 'dmesg' and it shows nothing at all until 2:55am So it took 4 hours to boot. That's pretty lame. ## 14 May 2009 ### Project Darkstar I recently had this conversation with Owen (rest of the conversation is here): ### Owen F. Kellett to me Wed, May 6, 2009 at 12:11 PM Hi Malachi, Either the next one, or the one following will likely have this change. thanks, Owen ### Malachi de Ælfweald to Owen Wed, May 6, 2009 at 3:39 PM Hey Owen, That is great news! So if I am understanding correctly, that will allow me to specify the sgs-server-api as a maven dependency without dropping the MIT licensing on my game? ### Owen F. Kellett to me Wed, May 6, 2009 at 5:09 PM Yes that is correct. The classpath exception should free you from the requirement of using GPL for any linked code. Based on that, I decided it was time to move forward with the darkstar-based projects... Since I have a Hudson server, I decided to let it keep track of how to make it successfully build... At first I was trying to build with JDK7, but it kept failing on the Javadoc module saying that the jars had invalid characters in it. That went away once I changed to JDK6. I also had to tell it to skip the tests, because one of them just hung forever... The Hudson job for the server is here. The Hudson job for the client is here. The Hudson job for the maven plugin is here. The distributables were delivered to Nexus. sgs-server-dist-0.9.10-SNAPSHOT.zip sgs-tutorial-server-dist-0.9.10-SNAPSHOT.zip sgs-client-dist-0.9.10-SNAPSHOT.zip sgs-tutorial-client-dist-0.9.10-SNAPSHOT.zip sgs-maven-plugin-1.0-alpha-4-SNAPSHOT.jar I created a new user on the server ('darkstar'/'darkstar') and unzipped the sgs-server-dist-0.9.10-SNAPSHOT.zip I then created a symlink (/home/darkstar/current to /home/darkstar/sgs-server-dist-0.9.10-SNAPSHOT) I don't know if it is correct, but I made this SMF manifest for it. darkstar@kallisti [0] ~> svccfg import hudson.xml darkstar@kallisti [0] ~> svcs -xv svc:/application/darkstar:default (Project Darkstar Server) State: maintenance since Thu May 14 23:37:36 2009 Reason: Restarting too quickly. See: http://sun.com/msg/SMF-8000-L5 See: http://www.projectdarkstar.com/ See: /var/svc/log/application-darkstar:default.log Impact: This service is not running. darkstar@kallisti [0] ~> cat /var/svc/log/application-darkstar:default.log WARNING: No application jar found with a META-INF/app.properties configuration file in the /home/darkstar/sgs-server-dist-0.9.10-SNAPSHOT/deploy directory May 14, 2009 11:37:36 PM com.sun.sgs.impl.kernel.Kernel checkProperties SEVERE: Missing required property com.sun.sgs.app.name Exception in thread "main" java.lang.IllegalArgumentException: Missing required property com.sun.sgs.app.name at com.sun.sgs.impl.kernel.Kernel.checkProperties(Kernel.java:855) at com.sun.sgs.impl.kernel.Kernel.(Kernel.java:202) at com.sun.sgs.impl.kernel.Kernel.main(Kernel.java:1123) [ May 14 23:37:36 Stopping because all processes in service exited. ] [ May 14 23:37:36 Restarting too quickly, changing state to maintenance. ] Guess it's time to build an app... ## 10 May 2009 ### Server Died So I got home last night to find the server had power but was not responding (mouse, keyboard, ssh, anything). I tried rebooting, but it kept handing at "Hostname: serveris" and wouldn't go any further (even in single-user mode). I saw some chatlogs online that suggested adding '-k -a -d verbose' and using '/dev/null' to the answer of any questions (like /etc/system replacement)... I tried that and got this far (see left)... Looking around some more, I saw that if I changed the '-k' to '-kd' it would drop it into debug mode. At that point, I did the following: [0] moddebug/W 80000000 [0] :c This allowed me to see a few more details.... (sorry for the blurriness of the pic - it was about 3am) After trying to find anything online that would help (and the IRC channel) I finally said screw it and decided I would reinstall opensolaris on the root mirror. I downloaded the USB version of OpenSolaris 0906 111a, but evidentially my quad core machine does not have the option of booting from USB (WTF?). I reburned the CD version and installed it. One thing that confused me is that although my old system was 10/08 upgraded to 111a and the new version was supposed to be 0906 111a, it now says 101b. Trying to boot the new one, it again hung. At a different position, but... I was starting to think it was a hardware problem. I let it try to boot overnight and the next morning it was finally at the login prompt... with the old install. The logs showed that it had tried to load the Belkin UPS a few steps after where it locked up, so I unplugged the UPS. I went ahead and applied all updates and rebooted. It took about 5 hours for it to finally boot again (though it did). It still says I am using 101b and that there are no new updates. The xVM instance is there and I was able to start it. The whole root zone however is gone. The ZFS partition is there, and empty. zoneadm doesn't show anything but global. So, I am going to try to recreate the global zone, but... I still don't know what happened. I am also concerned that it currently takes about 5 hours to boot. ## 06 May 2009 ### Playing some music So I wanted to listen to some music, but neither youtube or pandora were working (not sure why, they were yesterday)... So I tried Songbird, which I use at work. It wouldn't work either: Error: GStreamer error: Internal data flow error. Additional information: gstbasesrc.c(2234): gst_base_src_loop (): /GstPlayBin2:player/GstURIDecodeBin:uridecodebin1/GstFileSrc:source: streaming task paused, reason not-linked (-1) So I tried Rhythm, but it couldn't play anything either... WTF? Right? So I did this instead. Now I have music playing :) ## 01 May 2009 ### Don't forget to escape the inner class I think I have used Windows too long... malachi@serveris[1]:~/work/ambrosia/syrinx % java -cp target/syrinx-2.3-SNAPSHOT.jar org.eoti.sound.BrainwaveOscillator$Test
public static void main(String[] args)
at sun.launcher.LauncherHelper.signatureDiagnostic(LauncherHelper.java:209)

malachi@serveris[1]:~/work/ambrosia/syrinx % java -cp target/syrinx-2.3-SNAPSHOT.jar org.eoti.sound.BrainwaveOscillator\$Test You have to escape the$ for the inner class :(

## 24 April 2009

### Hudson Maven Release Plug-in Plug-in + Hudson Google Code plugin

I was excited to be able to use the Hudson Google Code plugin for my project.

Unfortunately, when I tried to also use the Hudson Maven Release Plug-in Plug-in with it, it always failed to authenticate...

[INFO] Checking in modified POMs...[INFO] Executing: /bin/sh -c cd /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/. && svn --username hudson@eoti.org --password '*****' --non-interactive commit --file /var/tmp/maven-scm-2033681108.commit --targets /var/tmp/maven-scm-1162162468517704084-targets[INFO] Working directory: /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/.[HUDSON] Archiving /home/hudson/jobs/ambrosia-jdk6-standalone/workspace/./pom.xml to /home/hudson/jobs/ambrosia-jdk6-standalone/modules/org.eoti$ambrosia/builds/2009-04-24_00-59-40/archive/org.eoti/ambrosia/2.2-SNAPSHOT/pom.xml[INFO] ------------------------------------------------------------------------[ERROR] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Unable to commit filesProvider message:The svn command failed.Command output:svn: Commit failed (details follow):svn: MKACTIVITY of '/svn/!svn/act/0776c9b3-28c2-443e-a144-97770aaff2b2': authorization failed: Could not authenticate to server: rejected Basic challenge (http://ambrosia.googlecode.com)[INFO] ------------------------------------------------------------------------[INFO] Traceorg.apache.maven.BuildFailureException: Unable to commit filesProvider message:The svn command failed.Command output:svn: Commit failed (details follow):svn: MKACTIVITY of '/svn/!svn/act/0776c9b3-28c2-443e-a144-97770aaff2b2': authorization failed: Could not authenticate to server: rejected Basic challenge (http://ambrosia.googlecode.com)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:699)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)at org.apache.maven.lifecycle.LifecycleExecutorInterceptor.execute(LifecycleExecutorInterceptor.java:65)at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)at hudson.maven.agent.Main.launch(Main.java:158)at hudson.maven.MavenBuilder.call(MavenBuilder.java:162)at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:578)at hudson.maven.MavenModuleSetBuild$Builder.call(MavenModuleSetBuild.java:524)at hudson.remoting.UserRequest.perform(UserRequest.java:97)at hudson.remoting.UserRequest.perform(UserRequest.java:46)at hudson.remoting.Request$2.run(Request.java:236)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)at java.util.concurrent.FutureTask.run(FutureTask.java:138)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)Caused by: org.apache.maven.plugin.MojoFailureException: Unable to commit filesProvider message:The svn command failed.Command output:svn: Commit failed (details follow):svn: MKACTIVITY of '/svn/!svn/act/0776c9b3-28c2-443e-a144-97770aaff2b2': authorization failed: Could not authenticate to server: rejected Basic challenge (http://ambrosia.googlecode.com)at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:190)at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)at hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182)at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)... 28 more[INFO] ------------------------------------------------------------------------[INFO] Total time: 40 seconds[INFO] Finished at: Fri Apr 24 01:00:22 PDT 2009[INFO] Final Memory: 17M/218M[INFO] ------------------------------------------------------------------------channel stoppedFinished: FAILURE
This was because it was using http instead of https to do the checkout...
The solution was to only partially use the Google Code plugin...

## 23 April 2009

### Compiling in the zone; eg. where's the damned math.h?

So it appears that some of the basic include files were not included by default in the zone either. To get that working (and thus get random stuff compiling correctly)...

pfexec pkg install SUNWlibm

Upon installation of the new zone, I was surprised that some of the basic pieces like pkgadd was missing. It appears (at least for zones) that IPS is definitely the default now.

Unfortunately, there are times when you still want those commands...  like when testing build processes written for Solaris 10.

Following the instructions in the previous blog, here's what you need to do to get it working:

If this is the first time...
[kallisti:malachi(127)] ~/work% pfexec pkg set-authority -O http://pkg.opensolaris.org/dev/ os-dev

Then do
[kallisti:malachi(127)] ~/work% pfexec pkg install SUNWpkgcmds

## 22 April 2009

### Installing a named IPS package in a zone

Let's say you have a package you'd like to install, but don't have a .pkg for it.... For example, gtar.

Go to http://pkg.opensolaris.org/dev/ and locate the package (search box)
For example, SUNWgtar@1.17,5.11-0.111:20090331T082820Z
Note the name before the @
IE, SUNWgtar

If this is the first time...
root@kallisti:/opt# pkg set-authority -O http://pkg.opensolaris.org/dev/ os-dev

Then to do the install...
root@kallisti:/opt# pkg refresh
root@kallisti:/opt# pkg install SUNWgtar

### Hudson

I've been thinking about setting up a continuous integration server for awhile. After doing some configuration of Cruise Control at work, I decided to try Hudson at home.

First things first... Virtualization? I decided I would rather have it virtualized if for no other reason than that dotster already had dns setup for one of my currently unused ips and I didn't want to wait for the ip change to propagate.

I can't run VirtualBox because I am running xVM and VirtualBox refuses to start if you are in xVM mode. I could run it in xVM... but I really don't like dedicating a large chunk of my memory to it... so zone it is.

malachi@serveris[0]:/data % pfexec zonecfg -z eoti.org
eoti.org: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:eoti.org> create
zonecfg:eoti.org> set zonepath=/data/eoti.org
zonecfg:eoti.org> set autoboot=true
zonecfg:eoti.org:net> set physical=nge0
zonecfg:eoti.org:net> set defrouter=10.10.1.1
zonecfg:eoti.org:net> end
zonecfg:eoti.org> verify
zonecfg:eoti.org> commit
zonecfg:eoti.org> exit

malachi@serveris[1]:/data % pfexec zoneadm -z eoti.org install
/data/eoti.org must not be group readable.
/data/eoti.org must not be group writable.
/data/eoti.org must not be group executable.
/data/eoti.org must not be world readable.
/data/eoti.org must not be world executable.
could not verify zonepath /data/eoti.org because of the above errors.
zoneadm: zone eoti.org failed to verify

malachi@serveris[1]:/data % pfexec chmod 700 /data/eoti.org

malachi@serveris[1]:/data % pfexec zoneadm -z eoti.org install

malachi@serveris[1]:/data % pfexec zoneadm -z eoti.org boot

malachi@serveris[1]:/data % pfexec zlogin -C eoti.org
(chose option 6 - xterms)
Host name for nge0:1 kallisti
domain: eoti.org
pwd: ***********

malachi@serveris[1]:/data % pfexec zoneadm -z eoti.org reboot

root@kallisti:~# useradd -g staff -s /usr/bin/bash -c "Malachi de AElfweald" -m -P "Primary Administrator" malachi
root@kallisti:~# passwd malachi

malachi@serveris[1]:/data % pfexec vi /etc/hosts
10.10.1.13 kallisti.eoti.org kallisti

http://wiki.hudson-ci.org/display/HUDSON/OpenSolaris+IPS+package
but had to change this line to include java
<envvar name="'PATH'" value="'/opt/jdk1.7.0/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/local/bin:/usr/local/sbin:/usr/sfw/bin' />

couldn't have it create the zfs filesystem within the zone... but it was already on a zfs filesystem anyway, so no worries

## 21 April 2009

Every once in awhile, Firefox starts giving me this error when I choose to "Open" instead of "Save As...":

BLAH could not be saved, because you cannot change the contents of that folder. Change the folder properties and try again, or try saving in a different location.
I found this page that gives hints on how to fix it.

It seems just clearing my download history (Clear List) was enough to get it working again...

## 17 March 2009

### Failure to boot into graphical mode after upgrade

A coworker upgraded his OpenSolaris from snv_106 to snv_109. Upon rebooting, it failed to launch into X. For awhile, we assumed there was a problem in the grub menu.lst, but it seems the answer was a bit different.

When running OpenSolaris inside VirtualBox, you usually 'Install Guest Additions' so that you can run full-screen. Apparently, the upgrade from snv_106 to snv_109 broke the compatibility with installed guest additions.

The final solution was to uninstall and reinstall the guest additions.

From the menu (or CTRL-Home if you are already full screen) go to Device | Install Guest Additions. That will mount the virtual cdrom.
# cd /cdrom
# pfexec pkgrm SUNWvboxguest
# pfexec reboot

It should all work now :)

## 06 February 2009

### ZSH Tab Completion Fix for Subversion 1.5

So one of the annoying things I noticed was that tab autocompletion for zsh was broken if I was using it with svn; showing:
_arguments:comparguments:303: invalid argument: ARG

Based on notes here I fixed it by doing the following:

$cd /usr/share/zsh/4.3.4/functions/Completion/Unix/_subversion$ pfexec mv _subversion ~/original._subversion
$pfexec wget http://gvn.googlecode.com/svn/trunk/contrib/zsh/_subversion$ pfexec chmod 444 _subversion

It all works now :)

## 21 January 2009

### Python 2.5 breaks OpenSolaris menus

In the last week, some of my menu icons (like 'Main Menu') had stopped working. Since they wouldn't launch, I couldn't determine what the problem was. Since the right-click didn't have a properties, I couldn't even determine what it was trying to do.

From a command line, run 'alacarte'.  That complained about missing libraries for Python. Looking at the system, I could see that there was a recent upgrade from Python 2.4 to Python 2.5.

The correct solution was probably to import all of the libraries... but I didn't care about that. I had only upgrade Python in an effort to get some of the other apps to compile...

So I moved /usr/bin/python to /usr/bin/broken-python and re-symlinked /usr/bin/python2.4 to /usr/bin/python.

Now all the apps work again.

## 09 January 2009

### Installing git

wget http://kernel.org/pub/software/scm/git/git-1.6.1.tar.gz
gzip -dc git-1.6.1.tar.gz | tar xvfp -
pfexec mkdir /opt/git-1.6.1
pfexec chmod 777 /opt/git-1.6.1 [probably not really necessary]
cd git-1.6.1
./configure --prefix=/opt/git-1.6.1
gmake
pfexec make install
pfexec chmod 755 /opt/git-1.6.1 [again probably not really necessary]
vi ~/.bashrc