13 November 2014

601. Linphone on windows XP with llinphone's sip server

This post is meant as a step by step guide that more computer savvy users on linux (who'd be interested in using linphone) can share with less computer savvy users on windows.

I'd like to be able to do a video chat with a specific person who told me about issues with installing skype on their laptop. Given that I'm having issues with skype on some of my computers as well, and the general nuisance of having to deal with i386 libs just for the sake of skype, and the fact that I'm using linphone for my iinet voip service as well as freecall, I'm keen on getting that person switched to linphone.

(I presume that easier solutions would involve e.g. google talk in a browser, but where's the fun in that?)
The following was done on a native installation of windows xp which I remotely connected to using remmina (via rdp).

1. Get Linphone.

Note that the current version, 3.7.0, which is available by clicking on the download button on the website does not work on windows XP (for me), as it gives the following:

Instead, go to http://download-mirror.savannah.gnu.org/releases/linphone/3.6.x/win32/ and download 3.6.1.
version 3.4 works too
2. Install Linphone
Nothing odd here:








2b. Register for a SIP service
For Linphone to work you need to register for a SIP service. Linphone offers a free one. NOTE that you can register for a SIP service during the installation of Linphone i.e. you don't need to follow this step. Might be useful if you've already got Linphone installed and want to manually register though.


3. Set up Linphone
If you're asked whether to unblock, click unblock.
The wizard:

If you didn't sing up separately for a SIP account you can choose to do so as part of the setup using the wizard. Otherwise you can manually set it up, and that's what I'll show here:


That's the end of the wizard.

You can add contacts just like you would in any other 'chat' program, although here you use SIP addresses.


02 November 2014

600. gdm/gnome breakage in debian jessie October/November 2014

I did a dist-upgrade last night and encountered this on my next boot:
During the dist-upgrade I got a message about the nvidia driver version not being compatible with my system -- small surprise as I have an onboard intel chip and no external graphics card (it's a lenovo thinkpad SL410).

Installing kdm let me at least boot into a DM. I still couldn't launch gnome from kdm, it giving the same error message as in the photo.
Digging a bit deeper and looking at what happened before/during a crash:
journalctl
Nov 02 10:46:30 niobium kdm[1317]: Stopping K Display Manager: kdm...done. Nov 02 10:46:30 niobium systemd[1]: gdm.service: control process exited, code=exited status=1 Nov 02 10:46:30 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:30 niobium systemd[1]: Dependency failed for X11 Display Manager. Nov 02 10:46:30 niobium systemd[1]: Unit gdm.service entered failed state. Nov 02 10:46:30 niobium kdm[1350]: Starting K Display Manager: kdm. Nov 02 10:46:30 niobium sudo[1311]: pam_unix(sudo:session): session closed for user root Nov 02 10:46:30 niobium console-kit-daemon[1707]: (process:1372): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:30 niobium console-kit-daemon[1707]: (process:1373): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:30 niobium console-kit-daemon[1707]: (process:1374): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:30 niobium kdm_greet[1378]: Cannot load /usr/share/kde4/apps/kdm/faces/.default.face: No such file or directory Nov 02 10:46:31 niobium systemd[1]: gdm.service: control process exited, code=exited status=1 Nov 02 10:46:31 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:31 niobium systemd[1]: Dependency failed for X11 Display Manager. Nov 02 10:46:31 niobium systemd[1]: Unit gdm.service entered failed state. Nov 02 10:46:32 niobium console-kit-daemon[1707]: (process:1398): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:32 niobium console-kit-daemon[1707]: (process:1399): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:32 niobium console-kit-daemon[1707]: (process:1400): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed Nov 02 10:46:32 niobium systemd[1]: gdm.service: control process exited, code=exited status=1 Nov 02 10:46:32 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:32 niobium systemd[1]: Dependency failed for X11 Display Manager. Nov 02 10:46:32 niobium systemd[1]: Unit gdm.service entered failed state. Nov 02 10:46:33 niobium systemd[1]: gdm.service: control process exited, code=exited status=1 Nov 02 10:46:33 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:33 niobium systemd[1]: Dependency failed for X11 Display Manager. Nov 02 10:46:33 niobium systemd[1]: Unit gdm.service entered failed state. Nov 02 10:46:35 niobium systemd[1]: gdm.service start request repeated too quickly, refusing to start. Nov 02 10:46:35 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:35 niobium systemd[1]: Dependency failed for X11 Display Manager. Nov 02 10:46:35 niobium systemd[1]: Unit gdm.service entered failed sta
GDM shouldn't be involved at all as I was using kdm.
systemctl -l status gdm.service
● gdm.service - GNOME Display Manager Loaded: loaded (/lib/systemd/system/gdm.service; enabled) Drop-In: /run/systemd/generator/gdm3.service.d └─50-gdm3-$x-display-manager.conf Active: failed (Result: start-limit) since Sun 2014-11-02 10:46:35 AEDT; 14min ago Process: 1405 ExecStartPre=/bin/sh -c [ "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm3" ] (code=exited, status=1/FAILURE) Nov 02 10:46:35 niobium systemd[1]: gdm.service start request repeated too quickly, refusing to start. Nov 02 10:46:35 niobium systemd[1]: Failed to start GNOME Display Manager. Nov 02 10:46:35 niobium systemd[1]: Unit gdm.service entered failed state.


The solution:
Either way, I now had enough keywords to start googling, and came across http://forums.debian.net/viewtopic.php?f=10&t=118305

Basically,
sudo apt-get purge nvidia-*
sudo apt-get purge libnvidia-ml1:i386 nvidia-smi:i386
sudo apt-get install glx-alternative-mesa
sudo apt-get --reinstall install gdm3

Launching gnome (standard) from kdm gave me prompts to set up the configuration for an installed extension (I miss the frippery extensions...). Not sure whether the breakage was related to the extension.
 Either way, everything is working properly now.

28 October 2014

599. Briefly: Suddenly bankid doesn't work/wont be recognised.

The system: firefox 31, nspluginwrapper 1.4.4, debian wheezy, amd64

I've used bankid with Swedish banks in the past. Right now I'm running into trouble though. When clicking on the login button on the bank website I'm taken to this page:
Starting firefox (v31, but the symlink is called firefox25) from the terminal to catch the error messages I get
(firefox25:5555): GLib-GObject-WARNING **: /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gsignal.c:3397: signal name `load_complete' is invalid for instance `0x2b81340fc1f0' Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed Gtk-Message: Failed to load module "atk-bridge" *** NSPlugin Viewer *** ERROR: NP_Initialize() get args: Message argument mismatch *** NSPlugin Viewer *** ERROR: rpc_end_sync called when not in sync! *** NSPlugin Wrapper *** ERROR: NP_Initialize() wait for reply: Connection closed (firefox25:5555): GLib-GObject-WARNING **: /tmp/buildd/glib2.0-2.33.12+really2.32.4/./gobject/gsignal.c:3397: signal name `load_complete' is invalid for instance `0x2b812a4f52e0'

The solution was to do
/usr/lib/nspluginwrapper/x86_64/linux/npconfig  -a -v -u
Auto-update plugins from /usr/lib/mozilla/plugins Looking for plugins in /usr/lib/mozilla/plugins Auto-update plugins from /home/me/.mozilla/plugins Looking for plugins in /home/me/.mozilla/plugins Update plugin /home/me/.mozilla/plugins/npwrapper.libplugins.so nspluginwrapper ident mismatch, reinstalling plugin Install plugin /usr/local/lib/personal/libplugins.so into /home/me/.mozilla/plugins/npwrapper.libplugins.so

as described by the nspluginwrapper maintainer (David) in a reply on http://www.geeklab.info/2011/11/reconfigure-nspluginwrapper/

24 October 2014

598. Move /var, /tmp, /opt to separate partitions

1. First create the partitions on a disk. In my case I created partitions on a different disk from the root partition.

2. Figure out the uuids:
ls /dev/disk/by-uuid -lah
lrwxrwxrwx 1 root root 10 Oct 22 14:02 28b59809-7dfb-4ce4-a4da-6f118171ea07 -> ../../sdb2 lrwxrwxrwx 1 root root 9 Oct 22 14:45 52f07f83-3a72-457c-b25f-7aa4f3e76461 -> ../../sdc lrwxrwxrwx 1 root root 10 Oct 7 14:42 8a5ca4ae-9963-47ea-99c3-2335c7dc8118 -> ../../sda6 lrwxrwxrwx 1 root root 10 Oct 7 14:42 9243ff6b-9834-4fa3-a93f-10a350f85687 -> ../../sda1 lrwxrwxrwx 1 root root 10 Oct 22 14:02 9f785dde-1d3a-4063-90e7-054f3d031e05 -> ../../sdb3 lrwxrwxrwx 1 root root 10 Oct 22 14:02 eacf2cad-d462-45b2-afeb-2c5ddf5669b8 -> ../../sdb4 lrwxrwxrwx 1 root root 10 Oct 7 14:42 f25a484c-e8e2-4ead-808b-96dd5e915020 -> ../../sda5 lrwxrwxrwx 1 root root 10 Oct 22 14:02 f4280c34-04d6-4def-963a-507e68dd483d -> ../../sdb1
I know that I'm looking for sbd2 (label: tmp), sdb3 (label: opt) and sdb4 (label: var). We'll use these uuids later for our /etc/fstab

3. Move /opt, as it's the easiest (should be reasonably static).

sudo udisks --mount /dev/sdb3
Mounted /org/freedesktop/UDisks/devices/sdb3 at /media/opt
sudo cp -ax /opt/* /media/opt

Edit /etc/fstab:
 
UUID=9f785dde-1d3a-4063-90e7-054f3d031e05 /opt ext4 defaults,user_xattr 0 2

Move the old /opt and mount the new one:
sudo mv /opt /opt.old
sudo mount /opt

And you should be good to go. Check with df -h:
[..] /dev/sdb3 72G 28G 41G 41% /opt

4. Move /var and /tmp

You can use init 1 according to http://unix.stackexchange.com/questions/131311/moving-var-home-to-separate-partition. Note that doing so will kill your graphical session and stop or restart most of the services i.e. close open documents before your continue. You'll then get dumped into a vty.

Open a terminal and type
 
init 1

which dumps you into a root terminal. Then, as root, do
 
mkdir /media/var
mount /dev/sdb4 /media/var
cp -ax /var/* /media/var
mkdir /media/tmp
mount /dev/sdb2 /media/tmp
cp -ax /tmp/* /media/tmp
mv /tmp /tmp.old
mv /var /var.old
mkdir /tmp
chmod 777 /tmp
mkdir /var
umount /media/var
umount /media/tmp

Changing the permissions for /tmp is important -- if they aren't generous enough it can cause all sorts of issues. In my case it was manifested by me being unable to log onto a GUI (e.g. gnome) from GDM3 -- I would get booted back to the login screen.

Edit /etc/fstab and add:
UUID=28b59809-7dfb-4ce4-a4da-6f118171ea07 /tmp ext4 defaults,user_xattr 0 2 UUID=eacf2cad-d462-45b2-afeb-2c5ddf5669b8 /var ext4 defaults,user_xattr 0 2
Note: I don't know what the best values for the attributes are. I just took what I used for /home, which is probably not optimal. You may want to do your own research into this. Then do

mount /tmp
mount /var
init 2

Once you've established that all is well you can delete /var.old and /tmp.old.
df -h shows
Filesystem Size Used Avail Use% Mounted on rootfs 92G 32G 56G 37% / udev 10M 0 10M 0% /dev tmpfs 798M 1.1M 797M 1% /run /dev/disk/by-uuid/9243ff6b-9834-4fa3-a93f-10a350f85687 92G 32G 56G 37% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 4.6G 88K 4.6G 1% /run/shm /dev/sda6 734G 555G 142G 80% /home /dev/sdb3 72G 28G 41G 41% /opt /dev/sdb2 72G 53M 69G 1% /tmp /dev/sdb4 48G 8.8G 37G 20% /var

597. Missing partition -- gparted shows unallocated space

The issue:
I'm low on space on my / partition since ECCE has a way of putting really large files in /tmp. Rather than trying to fix the behaviour of ECCE, I'm planning on moving /tmp to a separate disk that's dedicated to highio processes and where ECCE can't cause my / to fill up. I might move /opt as well, to free even more space. The first step in such a move is to create an additional partition on your target disk and for that gparted is good as it can move all the data before creating the new partition.

Imagine my surprise when I fired up gparted and saw:

Using Disk Utilities (palimpsest) it doesn't look too odd:

Using fdisk I see a complete lack of partitions:
sudo fdisk /dev/sdb
Command (m for help): p Disk /dev/sdb: 1000 GB, 1000202273280 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System Command (m for help):

This may be a job for testdisk. I fired it up with sudo, selected Intel type partition, and kept selecting the defaults -- eventually my partition showed up. I then did a deep search to make sure everything was ok.






I then check using palimpsest and gparted:





(I also screwed up, then fixed a disk with a different issue -- but because I'm not really sure what I did to fix it I'll make a separate post about that at a later date. Maybe.)

17 October 2014

596. Debian Jessie -- shutdown takes 'forever' (five minutes according to stopwatch!)

I've been annoyed for a couple of months now that shutting down my laptop, which has an SSD, takes up to five minutes. If I wanted that kind of shutdown times I could run Windows Vista...

Either way, it turns out that it's affecting certain systems with samba:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762002

The issue is illustrated below, which showed that it took five minutes to shut down samba -- and that's what's preventing the system from shutting down:
 
sudo service samba stop
ps aux|grep sam && date
root 2765 0.0 0.0 65468 2100 pts/0 S+ 10:45 0:00 sudo service samba stop root 2766 0.0 0.0 26252 1172 pts/0 S+ 10:45 0:00 systemctl stop samba.service root 2785 0.0 0.0 4308 636 ? Ss 10:45 0:00 /bin/sh /etc/init.d/samba stop Sunday 12 October 10:49:28 AEDT 2014
The solution is pretty simple though -- remove a set of symlinks:

First establish that they are present:
me@oxygen:/etc$ find rc* -name "*samba*"|xargs -I {} ls {} -lah
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc0.d/K01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc0.d/K01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc1.d/K01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc1.d/K01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc2.d/S01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc2.d/S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc3.d/S01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc3.d/S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc4.d/S01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc4.d/S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc5.d/S01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc5.d/S01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Sep 16  2013 rc6.d/K01samba -> ../init.d/samba
lrwxrwxrwx 1 root root 21 Sep 15 10:46 rc6.d/K01samba-ad-dc -> ../init.d/samba-ad-dc

Then remove them:
me@oxygen:/etc$ sudo update-rc.d samba remove 
me@oxygen:/etc$ sudo update-rc.d smbd remove 
Done!

10 October 2014

595. Issue upgrading debian jessie -- stuck at systemd

Doing a dist-upgrade yesterday (9th of October 2014) it failed because of issues with configuring systemd. In the end my troubleshooting didn't help, but google did.

Dead-end troubleshooting:

Trying to work through it:
sudo apt-get dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies: systemd-sysv : Depends: systemd (= 208-8) but 215-5+b1 is installed E: Unmet dependencies. Try using -f.
Checking why systemd-sysv is mentioning 208-8 instead of 215-5:
apt-cache policy systemd-sysv systemd-sysv: Installed: 208-8 Candidate: 215-5+b1 Version table: 215-5+b1 0 500 http://ftp.iinet.net.au/debian/debian/ testing/main amd64 Packages *** 208-8 0 100 /var/lib/dpkg/status
Let's try forcing 215-5:
sudo apt-get install systemd-sysv=215-5+b1 Reading package lists... Done Building dependency tree Reading state information... Done [..] The following packages will be upgraded: systemd-sysv 1 upgraded, 0 newly installed, 0 to remove and 531 not upgraded. 422 not fully installed or removed. Need to get 0 B/29.1 kB of archives. After this operation, 3,072 B of additional disk space will be used. Retrieving bug reports... Done Parsing Found/Fixed information... Done Setting up systemd (215-5+b1) ... dpkg: error processing package systemd (--configure): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: systemd E: Sub-process /usr/bin/dpkg returned an error code (1)
OK, let's try working on systemd:
sudo dpkg -D2 --configure systemd Setting up systemd (215-5+b1) ... D000002: fork/exec /var/lib/dpkg/info/systemd.postinst ( configure 208-8 ) dpkg: error processing package systemd (--configure): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: systemd

Solving it:
No luck. Google wasn't too helpful initially, until I came across https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762275
sudo delgroup systemd-journal Removing group `systemd-journal' ... Done.
Then tried
sudo dpkg -D2 --configure systemd Setting up systemd (215-5+b1) ... D000002: fork/exec /var/lib/dpkg/info/systemd.postinst ( configure 208-8 ) /var/lib/dpkg/info/systemd.postinst: 128: /var/lib/dpkg/info/systemd.postinst: cannot open /run/systemd/was-enabled: No such file
and
sudo apt-get install -f [..] Do you want to continue? [Y/n] Y Retrieving bug reports... Done Parsing Found/Fixed information... Done (Reading database ... 462023 files and directories currently installed.) Preparing to unpack .../systemd-sysv_215-5+b1_amd64.deb ... Unpacking systemd-sysv (215-5+b1) over (208-8) ... Processing triggers for man-db (2.6.7.1-1) ... Setting up systemd-sysv (215-5+b1) ... [..]
and then
sudo apt-get dist-upgrade
works again!

Many reasons to dislike systemd, although in this case I guess it's poor packaging.

15 September 2014

594. Very, very briefly: Speedtest your WLAN

As shown here: http://firstin-lastout.com/2013/07/how-to-test-wifi-speed/

Install iperf: sudo apt-get install iperf

Open two terminal windows on the same computer:

Terminal 1$ iperf -s -u -i1
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
Terminal 2$ iperf -c 192.168.2.1 -u -i1 -l 1300 -b 100m -t 600
------------------------------------------------------------
Client connecting to 192.168.2.1, UDP port 5001
Sending 1300 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 192.168.2.110 port 56520 connected with 192.168.2.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  4.46 MBytes  37.4 Mbits/sec
[  3]  1.0- 2.0 sec  4.45 MBytes  37.3 Mbits/sec
[  3]  2.0- 3.0 sec  4.28 MBytes  35.9 Mbits/sec
[  3]  3.0- 4.0 sec  4.32 MBytes  36.2 Mbits/sec
[  3]  4.0- 5.0 sec  4.42 MBytes  37.1 Mbits/sec
[  3]  5.0- 6.0 sec  4.35 MBytes  36.5 Mbits/sec
[  3]  6.0- 7.0 sec  4.39 MBytes  36.8 Mbits/sec
[  3]  7.0- 8.0 sec  4.35 MBytes  36.5 Mbits/sec
[  3]  8.0- 9.0 sec  4.41 MBytes  37.0 Mbits/sec

Where 192.168.2.1 is my wireless router.


593. nwchem 6.5 on debian jessie and wheezy

A new version of nwchem is out now, and this time we're seeing a new solvation model: SMD! Given how long it took to get COSMO right, the involvement of Truhlar in implementing SMD is a very good thing.

Either way, in order to be able to compile nwchem 6.5 on wheezy you'll need to do a few things:
sudo apt-get install build-essential libopenmpi-dev openmpi-bin
wget http://www.nwchem-sw.org/download.php?f=Nwchem-6.5.revision26243-src.2014-09-10.tar.gz -O Nwchem-6.5.revision26243-src.2014-09-10.tar.gz
tar xvf Nwchem-6.5.revision26243-src.2014-09-10.tar.gz 
cd Nwchem-6.5.revision26243-src.2014-09-10/


Create a patch file, e.g. 6.5.patch with the following content (most of the patches are for compatibility with gabedit, but a few of them are needed in order to compile nwchem on debian):
diff -rupN src.original/config/makefile.h src/config/makefile.h --- src.original/config/makefile.h 2014-09-15 12:28:58.153787833 +1000 +++ src/config/makefile.h 2014-09-15 12:30:58.745787161 +1000 @@ -2208,7 +2208,7 @@ endif ifeq ($(BUILDING_PYTHON),python) # EXTRA_LIBS += -ltk -ltcl -L/usr/X11R6/lib -lX11 -ldl - EXTRA_LIBS += -lnwcutil -lpthread -lutil -ldl -lz + EXTRA_LIBS += -lnwcutil -lpthread -lutil -ldl -lz -lssl LDOPTIONS = -Wl,--export-dynamic endif ifeq ($(NWCHEM_TARGET),CATAMOUNT) diff -rupN src.original/ddscf/movecs_pr_anal.F src/ddscf/movecs_pr_anal.F --- src.original/ddscf/movecs_pr_anal.F 2014-09-15 12:28:58.229787833 +1000 +++ src/ddscf/movecs_pr_anal.F 2014-09-15 12:32:33.801786632 +1000 @@ -195,7 +195,7 @@ c 22 format(1x,2(' Bfn. Coefficient Atom+Function ',5x)) write(LuOut,23) 23 format(1x,2(' ----- ------------ ---------------',5x)) - do klo = 0, min(n-1,9), 2 + do klo = 0, min(n-1,199), 2 khi = min(klo+1,n-1) write(LuOut,2) ( $ int_mb(k_list+k)+1, diff -rupN src.original/ddscf/rohf.F src/ddscf/rohf.F --- src.original/ddscf/rohf.F 2014-09-15 12:28:58.229787833 +1000 +++ src/ddscf/rohf.F 2014-09-15 12:33:12.897786414 +1000 @@ -153,7 +153,7 @@ c ilo = 1 ihi = nmo endif - call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs, + call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs, $ 'ROHF Final Molecular Orbital Analysis', $ .true., dbl_mb(k_eval), oadapt, int_mb(k_irs), $ .true., dbl_mb(k_occ)) diff -rupN src.original/ddscf/scf_vec_guess.F src/ddscf/scf_vec_guess.F --- src.original/ddscf/scf_vec_guess.F 2014-09-15 12:28:58.229787833 +1000 +++ src/ddscf/scf_vec_guess.F 2014-09-15 12:34:41.533785920 +1000 @@ -511,19 +511,19 @@ c nprint = min(nclosed+nopen+30,nmo) if (scftype.eq.'RHF' .or. scftype.eq.'ROHF') then call movecs_print_anal(basis, 1, - & nprint, 0.15d0, g_movecs, + & nprint, 0.01d0, g_movecs, & 'ROHF Initial Molecular Orbital Analysis', & .true., dbl_mb(k_eval), oadapt, int_mb(k_irs), & .true., dbl_mb(k_occ)) else nprint = min(nalpha+20,nmo) call movecs_print_anal(basis, max(1,nbeta-20), - & nprint, 0.15d0, g_movecs, + & nprint, 0.01d0, g_movecs, & 'UHF Initial Alpha Molecular Orbital Analysis', & .true., dbl_mb(k_eval), oadapt, int_mb(k_irs), & .true., dbl_mb(k_occ)) call movecs_print_anal(basis, max(1,nbeta-20), - & nprint, 0.15d0, g_movecs(2), + & nprint, 0.01d0, g_movecs(2), & 'UHF Initial Beta Molecular Orbital Analysis', & .true., dbl_mb(k_eval+nbf), oadapt, int_mb(k_irs+nmo), & .true., dbl_mb(k_occ+nbf)) diff -rupN src.original/ddscf/uhf.F src/ddscf/uhf.F --- src.original/ddscf/uhf.F 2014-09-15 12:28:58.229787833 +1000 +++ src/ddscf/uhf.F 2014-09-15 12:35:25.225785676 +1000 @@ -144,11 +144,11 @@ C enddo ihi = max(ihi-1,1) 9611 continue - call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs, + call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs, $ 'UHF Final Alpha Molecular Orbital Analysis', $ .true., dbl_mb(k_eval), oadapt, int_mb(k_irs), $ .true., dbl_mb(k_occ)) - call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs(2), + call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs(2), $ 'UHF Final Beta Molecular Orbital Analysis', $ .true., dbl_mb(k_eval+nbf), oadapt, int_mb(k_irs+nmo), $ .true., dbl_mb(k_occ+nbf)) diff -rupN src.original/mcscf/mcscf.F src/mcscf/mcscf.F --- src.original/mcscf/mcscf.F 2014-09-15 12:28:58.441787832 +1000 +++ src/mcscf/mcscf.F 2014-09-15 12:35:55.233785509 +1000 @@ -723,7 +723,7 @@ c if (util_print('final vectors analysis', print_default)) $ call movecs_print_anal(basis, $ max(1,nclosed-10), min(nbf,nclosed+nact+10), - $ 0.15d0, g_movecs, 'Analysis of MCSCF natural orbitals', + $ 0.01d0, g_movecs, 'Analysis of MCSCF natural orbitals', $ .true., dbl_mb(k_evals), .true., int_mb(k_sym), $ .true., dbl_mb(k_occ)) c diff -rupN src.original/nwdft/scf_dft/dft_mxspin_ovlp.F src/nwdft/scf_dft/dft_mxspin_ovlp.F --- src.original/nwdft/scf_dft/dft_mxspin_ovlp.F 2014-09-15 12:28:58.457787831 +1000 +++ src/nwdft/scf_dft/dft_mxspin_ovlp.F 2014-09-15 12:37:23.401785018 +1000 @@ -184,14 +184,14 @@ c call ga_sync() c call movecs_print_anal(basis,int_mb(k_non),int_mb(k_non) - & ,0.15d0,g_alpha,'Alpha Orbitals without Beta Partners', + & ,0.01d0,g_alpha,'Alpha Orbitals without Beta Partners', & .false., 0.0 ,.false., 0 , .false., 0 ) c if (nct.GE.2) then do i = 2,nct ind = int_mb(k_non+i-1) call movecs_print_anal(basis,ind,ind - & ,0.15d0,g_alpha,' ', + & ,0.01d0,g_alpha,' ', & .false., 0.0 ,.false., 0 , .false., 0 ) enddo endif @@ -350,7 +350,7 @@ c endif c endif c 9990 format(/,18x,'THERE ARE',i3,1x,'UN-PARTNERED ALPHA ORBITALS') c - call movecs_print_anal(basis, 1, nalp, 0.15d0, g_ualpha, + call movecs_print_anal(basis, 1, nalp, 0.01d0, g_ualpha, & 'Alpha Orb. w/o Beta Partners (after maxim. alpha/beta overlap)', & .false., 0.0 ,.false., 0 , .false., 0 ) c diff -rupN src.original/nwdft/scf_dft/dft_scf.F src/nwdft/scf_dft/dft_scf.F --- src.original/nwdft/scf_dft/dft_scf.F 2014-09-15 12:28:58.457787831 +1000 +++ src/nwdft/scf_dft/dft_scf.F 2014-09-15 12:38:29.713784648 +1000 @@ -2097,7 +2097,7 @@ c endif c ... jochen: replaced 0.15 at the end of the line with 'tanalyze' c which can be read from input -c call movecs_print_anal(ao_bas_han, ilo, ihi, 0.15d0, +c call movecs_print_anal(ao_bas_han, ilo, ihi, 0.01d0, call movecs_print_anal(ao_bas_han, ilo, ihi, tanalyze, & g_movecs(ispin), & blob, diff -rupN src.original/nwdft/scf_dft_cg/dft_cg_solve.F src/nwdft/scf_dft_cg/dft_cg_solve.F --- src.original/nwdft/scf_dft_cg/dft_cg_solve.F 2014-09-15 12:28:58.445787832 +1000 +++ src/nwdft/scf_dft_cg/dft_cg_solve.F 2014-09-15 12:39:25.497784337 +1000 @@ -193,7 +193,7 @@ c blob = 'DFT Final Beta Molecular Orbital Analysis' endif call movecs_fix_phase(g_movecs(ispin)) - call movecs_print_anal(basis, ilo, ihi, 0.15d0, + call movecs_print_anal(basis, ilo, ihi, 0.01d0, & g_movecs(ispin),blob, & .true., dbl_mb(k_eval+(ispin-1)*nbf), & oadapt, int_mb(k_irs+(ispin-1)*nbf), @@ -216,7 +216,7 @@ c endif call movecs_fix_phase(g_movecs) blob = 'DFT Final Molecular Orbital Analysis' - call movecs_print_anal(basis, ilo, ihi, 0.15d0, + call movecs_print_anal(basis, ilo, ihi, 0.01d0, & g_movecs,blob, & .true., dbl_mb(k_eval), & oadapt, int_mb(k_irs),

Apply it with
patch -p0 < 6.5.patch

Then build using something along the lines of
export NWCHEM_TOP=`pwd`
export LARGE_FILES=TRUE
export TCGRSH=/usr/bin/ssh
export NWCHEM_TOP=`pwd`
export NWCHEM_TARGET=LINUX64
export NWCHEM_MODULES="all python"
export PYTHONVERSION=2.7
export PYTHONHOME=/usr
export BLASOPT="-L/opt/openblas/lib -lopenblas"

export USE_MPI=y
export USE_MPIF=y
export USE_MPIF4=y
export MPI_LOC=/usr/lib/openmpi/lib
export MPI_INCLUDE=/usr/lib/openmpi/include
export LIBRARY_PATH="$LIBRARY_PATH:/usr/lib/openmpi/lib:/opt/openblas/lib"

export LIBMPI="-lmpi -lopen-rte -lopen-pal -ldl -lmpi_f77 -lpthread"
export ARMCI_NETWORK=SOCKETS

cd $NWCHEM_TOP/src

make clean
make nwchem_config
make FC=gfortran 1> make.log 2>make.err

cd $NWCHEM_TOP/contrib
export FC=gfortran
./getmem.nwchem

See other posts for using different math libs: openblas, intel mkl, AMD acml

If you're building for Jessie, set the following flags before building:
export PYTHONCONFIGDIR=config-x86_64-linux-gnu
export PYTHONLIBTYPE=so

592. Government ads in Australia

Sorry for getting political/cultural. Skip this if you prefer to read apolitical posts about linux and science.


Having lived in the US for a number of years (the US is far from perfect and there are plenty of things that bother me there, like healthcare, gun laws etc.) I'm shocked by how the government here patronises the population of Australia.

Government ads in Australia can be divided into two types:
1. You're a criminal/idiot and will be caught
2. We're going to gross you out/make you depressed to make you stop [smoking, eating, take drugs etc.]

Note that I think I always pay for using public transport, that I think it's bad to smoke, that you shouldn't be fat, and that you should use sun screen.

So what should  they do instead? I don't know.  But in my mind there's a difference between the populist and the reasonable way of doing things:

Populist: Everyone else is a criminal. This ad is actually for you, upstanding citizen, so that you can feel better about yourself, and so that you think we're doing something about the hoons and yobs that constitutes everyone else but you.

Reasonable: Instead of using shock tactics or crude populist messages we will explain why it's a good idea to do or not do something. We will give you a choice without calling you names, since we are serving at your pleasure, and not the other way around.

The bottom line is that I don't like a "the end justifies the means" mentality -- we are not serfs to the public institutions, but should only let them serve us at our pleasure. When bureaucrats find it acceptable to patronise the people they are meant to serve, then something is wrong.

Either way, I managed to find some of the videos that have disturbed me over the years in Oz. I wouldn't even say that these are the worst ones, but we'll have to make do with what's on youtube.

Category 1:
You are bad, bad person -- "This stealing will be rubbed out/ You will be caught:"

The party's over - we will get you. Oh, and these crackdowns have nothing to do with raising revenue. Of course.


Freeloaders -- you're a criminal. Note that you can't pay cash for a fare onboard, but you can pay your fine on the spot -- in cash.
Note that the public transport ticket inspectors have pushed for getting guns! Luckily the Victoria police wasn't impressed.


Category 2:

These are shown during prime time when children are watching. If I had grown up here I would've had some seriously disturbing nightmares.

Let's invent a new, emotive name and pair it with disgusting pictures -- Toxic fat:
"You can actually hear the cancer":

Let's just plain gross you out:

A mild one -- There's nothing healthy about a tan:

28 August 2014

591. Briefly: Changes to compiling nwchem 6.3 with python support on debian jessie

In general you can compile nwchem 6.3 on debian jessie just like you would on wheezy -- see here for detailed instructions: http://verahill.blogspot.com.au/2013/06/449-nwchem-63-updated-sources-compiling.html

To compile with python support you need to make an additional change in the code though:

On debian wheezy apt-file search libpython2.7.a shows 
python2.7-dev: /usr/lib/python2.7/config/libpython2.7.a

whereas on jessie it says
libpython2.7-dev: /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.a

This is causing issues, as alluded to here: http://www.nwchem-sw.org/index.php/Special:AWCforum/st/id1363/how_do_I_set_the_path_to_python_....html

However, it is easy to solve by editing src/config/makefile.h to read
2357 ifdef USE_PYTHON64 2358 CORE_LIBS += $(PYTHONHOME)/lib/python$(PYTHONVERSION)/config-x86_64-linux-gnu/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE) 2359 else 2360 CORE_LIBS += $(PYTHONHOME)/lib/python$(PYTHONVERSION)/config-x86_64-linux-gnu/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE) 2361 endif
(Note that I'm just guessing with the x86_64 part -- I don't have an i386 system to test on)

In addition, you will need to set
export PYTHONLIBTYPE=so
before building.

My full patch file (my.patch) for version 6.3 now looks like this (it fixes a few compilation issues, and makes nwchem more compatible with gabedit):

diff -rupN src.original/config/makefile.h src/config/makefile.h
--- src.original/config/makefile.h      2013-04-15 12:41:45.016853322 +1000
+++ src/config/makefile.h       2013-04-15 12:38:44.933319544 +1000
@@ -2039,7 +2039,7 @@ endif
 
      ifeq ($(BUILDING_PYTHON),python)
 #   EXTRA_LIBS += -ltk -ltcl -L/usr/X11R6/lib -lX11 -ldl
-     EXTRA_LIBS +=    -lnwcutil  -lpthread -lutil -ldl
+     EXTRA_LIBS +=    -lnwcutil  -lpthread -lutil -ldl -lssl -lz
   LDOPTIONS = -Wl,--export-dynamic 
      endif
 ifeq ($(NWCHEM_TARGET),CATAMOUNT)
diff -rupN src.original/ddscf/movecs_pr_anal.F src/ddscf/movecs_pr_anal.F
--- src.original/ddscf/movecs_pr_anal.F 2013-04-15 12:41:45.036852381 +1000
+++ src/ddscf/movecs_pr_anal.F  2013-04-15 12:23:28.100409225 +1000
@@ -195,7 +195,7 @@ c
  22         format(1x,2('  Bfn.  Coefficient  Atom+Function  ',5x))
             write(LuOut,23)
  23         format(1x,2(' ----- ------------  ---------------',5x))
-            do klo = 0, min(n-1,9), 2
+            do klo = 0, min(n-1,199), 2
                khi = min(klo+1,n-1)
                write(LuOut,2) (
      $              int_mb(k_list+k)+1, 
diff -rupN src.original/ddscf/rohf.F src/ddscf/rohf.F
--- src.original/ddscf/rohf.F   2013-04-15 12:41:45.036852381 +1000
+++ src/ddscf/rohf.F    2013-04-15 12:23:28.100409225 +1000
@@ -153,7 +153,7 @@ c
             ilo = 1
             ihi = nmo
          endif
-         call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs, 
+         call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs, 
      $        'ROHF Final Molecular Orbital Analysis', 
      $        .true., dbl_mb(k_eval), oadapt, int_mb(k_irs),
      $        .true., dbl_mb(k_occ))
diff -rupN src.original/ddscf/scf_vec_guess.F src/ddscf/scf_vec_guess.F
--- src.original/ddscf/scf_vec_guess.F  2013-04-15 12:41:45.036852381 +1000
+++ src/ddscf/scf_vec_guess.F   2013-04-15 12:23:28.100409225 +1000
@@ -511,19 +511,19 @@ c
          nprint = min(nclosed+nopen+30,nmo)
          if (scftype.eq.'RHF' .or. scftype.eq.'ROHF') then
             call movecs_print_anal(basis, 1,
-     &           nprint, 0.15d0, g_movecs, 
+     &           nprint, 0.01d0, g_movecs, 
      &           'ROHF Initial Molecular Orbital Analysis', 
      &           .true., dbl_mb(k_eval), oadapt, int_mb(k_irs),
      &           .true., dbl_mb(k_occ))
          else
             nprint = min(nalpha+20,nmo)
             call movecs_print_anal(basis, max(1,nbeta-20),
-     &           nprint, 0.15d0, g_movecs, 
+     &           nprint, 0.01d0, g_movecs, 
      &           'UHF Initial Alpha Molecular Orbital Analysis', 
      &           .true., dbl_mb(k_eval), oadapt, int_mb(k_irs),
      &           .true., dbl_mb(k_occ))
             call movecs_print_anal(basis, max(1,nbeta-20),
-     &           nprint, 0.15d0, g_movecs(2), 
+     &           nprint, 0.01d0, g_movecs(2), 
      &           'UHF Initial Beta Molecular Orbital Analysis', 
      &           .true., dbl_mb(k_eval+nbf), oadapt, int_mb(k_irs+nmo),
      &           .true., dbl_mb(k_occ+nbf))
diff -rupN src.original/ddscf/uhf.F src/ddscf/uhf.F
--- src.original/ddscf/uhf.F    2013-04-15 12:41:45.036852381 +1000
+++ src/ddscf/uhf.F     2013-04-15 12:23:28.096409414 +1000
@@ -144,11 +144,11 @@ C
          enddo
          ihi = max(ihi-1,1)
  9611    continue
-         call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs, 
+         call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs, 
      $        'UHF Final Alpha Molecular Orbital Analysis', 
      $        .true., dbl_mb(k_eval), oadapt, int_mb(k_irs),
      $        .true., dbl_mb(k_occ))
-         call movecs_print_anal(basis, ilo, ihi, 0.15d0, g_movecs(2), 
+         call movecs_print_anal(basis, ilo, ihi, 0.01d0, g_movecs(2), 
      $        'UHF Final Beta Molecular Orbital Analysis', 
      $        .true., dbl_mb(k_eval+nbf), oadapt, int_mb(k_irs+nmo),
      $        .true., dbl_mb(k_occ+nbf))
diff -rupN src.original/mcscf/mcscf.F src/mcscf/mcscf.F
--- src.original/mcscf/mcscf.F  2013-04-15 12:41:45.000854073 +1000
+++ src/mcscf/mcscf.F   2013-04-15 12:23:23.748613695 +1000
@@ -719,7 +719,7 @@ c
       if (util_print('final vectors analysis', print_default))
      $     call movecs_print_anal(basis, 
      $     max(1,nclosed-10), min(nbf,nclosed+nact+10),
-     $     0.15d0, g_movecs, 'Analysis of MCSCF natural orbitals',
+     $     0.01d0, g_movecs, 'Analysis of MCSCF natural orbitals',
      $     .true., dbl_mb(k_evals), .true., int_mb(k_sym), 
      $     .true., dbl_mb(k_occ))
 c     
diff -rupN src.original/nwdft/scf_dft/dft_mxspin_ovlp.F src/nwdft/scf_dft/dft_mxspin_ovlp.F
--- src.original/nwdft/scf_dft/dft_mxspin_ovlp.F        2013-04-15 12:41:45.604825677 +1000
+++ src/nwdft/scf_dft/dft_mxspin_ovlp.F 2013-04-15 12:23:28.228403211 +1000
@@ -184,14 +184,14 @@ c
       call ga_sync()
 c
       call movecs_print_anal(basis,int_mb(k_non),int_mb(k_non)
-     & ,0.15d0,g_alpha,'Alpha Orbitals without Beta Partners',
+     & ,0.01d0,g_alpha,'Alpha Orbitals without Beta Partners',
      &   .false., 0.0 ,.false., 0 , .false., 0 )
 c
       if (nct.GE.2) then
       do i = 2,nct
       ind = int_mb(k_non+i-1)
       call movecs_print_anal(basis,ind,ind
-     & ,0.15d0,g_alpha,' ',
+     & ,0.01d0,g_alpha,' ',
      &   .false., 0.0 ,.false., 0 , .false., 0 )
       enddo
       endif
@@ -350,7 +350,7 @@ c      endif
 c      endif
 c 9990 format(/,18x,'THERE ARE',i3,1x,'UN-PARTNERED ALPHA ORBITALS')
 c
-       call movecs_print_anal(basis, 1, nalp, 0.15d0, g_ualpha,
+       call movecs_print_anal(basis, 1, nalp, 0.01d0, g_ualpha,
      & 'Alpha Orb. w/o Beta Partners (after maxim. alpha/beta overlap)',
      &   .false., 0.0 ,.false., 0 , .false., 0 )
 c
diff -rupN src.original/nwdft/scf_dft/dft_scf.F src/nwdft/scf_dft/dft_scf.F
--- src.original/nwdft/scf_dft/dft_scf.F        2013-04-15 12:41:45.608825490 +1000
+++ src/nwdft/scf_dft/dft_scf.F 2013-04-15 12:23:28.228403211 +1000
@@ -1774,7 +1774,7 @@ c
             else
                blob='DFT Final Beta Molecular Orbital Analysis' 
             endif
-            call movecs_print_anal(ao_bas_han, ilo, ihi, 0.15d0, 
+            call movecs_print_anal(ao_bas_han, ilo, ihi, 0.01d0, 
      &           g_movecs(ispin), 
      &           blob, 
      &           .true., dbl_mb(k_eval(ispin)), oadapt, 
diff -rupN src.original/nwdft/scf_dft_cg/dft_cg_solve.F src/nwdft/scf_dft_cg/dft_cg_solve.F
--- src.original/nwdft/scf_dft_cg/dft_cg_solve.F        2013-04-15 12:41:45.612825303 +1000
+++ src/nwdft/scf_dft_cg/dft_cg_solve.F 2013-04-15 12:23:28.220403588 +1000
@@ -183,7 +183,7 @@ c
             blob = 'DFT Final Beta Molecular Orbital Analysis'
           endif
           call movecs_fix_phase(g_movecs(ispin))
-          call movecs_print_anal(basis, ilo, ihi, 0.15d0,
+          call movecs_print_anal(basis, ilo, ihi, 0.01d0,
      &         g_movecs(ispin),blob,
      &         .true., dbl_mb(k_eval+(ispin-1)*nbf),
      &         oadapt, int_mb(k_irs+(ispin-1)*nbf),

--- src.original/config/makefile.h      2014-08-20 16:39:03.020195366 +1000
+++ src/config/makefile.h       2014-08-20 16:43:30.328351859 +1000
@@ -2355,9 +2355,9 @@ ifndef PYTHONLIBTYPE
        PYTHONLIBTYPE=a
 endif
 ifdef USE_PYTHON64
-  CORE_LIBS += $(PYTHONHOME)/lib64/python$(PYTHONVERSION)/config/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
+  CORE_LIBS += $(PYTHONHOME)/lib/python$(PYTHONVERSION)/config-x86_64-linux-gnu/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
 else
-  CORE_LIBS += $(PYTHONHOME)/lib/python$(PYTHONVERSION)/config/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
+  CORE_LIBS += $(PYTHONHOME)/lib/python$(PYTHONVERSION)/config-x86_i386-linux-gnu/libpython$(PYTHONVERSION).$(PYTHONLIBTYPE)
 endif
 endif
 #

My build.sh file looks like this:

export LARGE_FILES=TRUE
export TCGRSH=/usr/bin/ssh
export NWCHEM_TOP=`pwd`
export NWCHEM_TARGET=LINUX64
export NWCHEM_MODULES="all python"
export PYTHONLIBTYPE=so
export PYTHONVERSION=2.7
export PYTHONHOME=/usr
#export BLASOPT="-L/opt/acml/acml5.3.1/gfortran64_int64/lib -lacml"
export BLASOPT="-L/opt/openblas/lib -lopenblas"

export USE_MPI=y
export USE_MPIF=y
export USE_MPIF4=y
export MPI_LOC=/usr/lib/openmpi/lib
export MPI_INCLUDE=/usr/lib/openmpi/include
#export LIBRARY_PATH="$LIBRARY_PATH:/usr/lib/openmpi/lib:/opt/acml/acml5.3.1/gfortran64_int64/lib"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/lib/openmpi/lib:/opt/openblas/lib"

export LIBMPI="-lmpi -lopen-rte -lopen-pal -ldl -lmpi_f77 -lpthread"
export ARMCI_NETWORK=SOCKETS

cd $NWCHEM_TOP/src

patch -p0 < my.patch

make clean
make nwchem_config
make FC=gfortran 1> make.log 2>make.err
cd $NWCHEM_TOP/contrib
export FC=gfortran
./getmem.nwchem

10 August 2014

590. Home-made Titrino tip

Metrohm make a range of autotitrators called titrino, titrando etc. While they are great, they are expensive (ca AU$15,000 +/- 5,000) -- and the parts are ridiculously overpriced. For example, a simple pH electrode cable costs AU$100-150, which isn't a good use of taxpayer money.


I'm also not a big fan of their titration tips, one of which is shown in the photo below

The piece in this photo costs AU$30:
AU$30 -- reasonable?

Besides, in my own experience they don't work as well as the home made tips we used in a lab I used to work in.

So, here's a description of an alternative type of tip for doing titrations with a titrino.

The design in my old lab:

This is the tip -- it's a glass capillary which is connected to 1/16 PTFE tubing using a piece of elastic silicone tubing
The titrino is connected to the 1/16 PTFE tubing via an M6 (or 1/4-28) PTFE union.
The PTFE tubing is connected to the union using an 1/4-28 (or M6) ferrule
Like this

In my current lab:
Since I wasn't sure what the size of the capillary and the connecting silicone tubing was, I had to guess, and used the following parts:

Capillary OD 0.66 mm ID 0.5 mm
Silicone tubing OD  3 mm ID 0.5 mm
PTFE tubing 1/16 (ID 0.5 x OD 1.6 mm)
1/16 ID and 1/4 OD PEEK Ferrule
1/4-28 PTFE connector

It basically came down to what I could order online from a Chinese equivalent to ebay called taobao.

NOTE: the capillary here doesn't go that great with the silicone tubing, so I had to glue it using silicone glue. A smaller ID silicone tubing or a larger OD capillary might work better. Note also that you'd want as thin a capillary ID as possible though to avoid diffusion and leakage.

Here's the assembly (the glass capillary is a bit short since it broke):
And here's the capillary with the silicone part (the light in my office is pretty bad).
I used silicone glue to fix the capillary in place:
Some more photos of the different parts:
Very affordable Chinese capillaries -- $5 for 1,000!

1/16 inner and 1/4 outer diameter PEEK ferrule

The PEEK ferrule and the M6 (1/4-28) union


02 August 2014

589. Gnome-shell 3.12.2 -- another feature gone

The Gnome team has been removing feature after feature from different gnome-related applications. In the current version of gnome-shell (3.12.2-3) on debian testing (jessie) there's yet another feature gone -- you can't access the audio settings from the desktop.

Whether you use right- or left-click on the audio icon, you get the same menu. Clicking on the audio (left- or right-click) icon in that menu only causes the volume to go to zero.




Instead, the only way to access audio settings is now via the system settings which takes longer and involves more clicks. It's a minor nuisance if you're used to how gnome has previously worked.

29 July 2014

588. ata6: SRST failed (errno=-16) AND disk-by-uuid does not exist

The problem:
I've been having boot issues with one of my nodes. Everything is fine up to and past GRUB:

Then this happens:
[21.405411] ata6: SRST failed (errno=-16)

And typically I get dumped in a shell:
ALERT! /dev/disk/by-uuid/xxxx does not exist

Towards the solution:
blkid shows both disks:
blkid


Either way, turns out the way to get the system to boot is pretty simple. Type exit and hit enter.

exit leads to successful boot
Looking at dmesg this is what happened:
[ 1.998149] usb 2-1: Product: USB Optical Mouse [ 2.005374] input: USB Optical Mouse as /devices/pci0000:00/0000:00:12.1/usb2/2-1/2-1:1.0/input/input1 [ 2.005452] hid-generic 0003:0461:4D81.0002: input,hidraw1: USB HID v1.11 Mouse [USB Optical Mouse] on usb-0000:00:12.1-1/input0 [ 6.476845] ata6: link is slow to respond, please be patient (ready=0) [ 11.465026] ata6: device not ready (errno=-16), forcing hardreset [ 16.665379] ata6: link is slow to respond, please be patient (ready=0) [ 21.485411] ata6: SRST failed (errno=-16) [ 26.685767] ata6: link is slow to respond, please be patient (ready=0) [ 31.505806] ata6: SRST failed (errno=-16) [ 31.894576] uhci_hcd: USB Universal Host Controller Interface driver [ 36.706152] ata6: link is slow to respond, please be patient (ready=0) [ 66.579156] ata6: SRST failed (errno=-16) [ 71.611367] ata6: SRST failed (errno=-16) [ 71.623705] ata6: reset failed, giving up [ 105.133562] PM: Starting manual resume from disk [ 105.133565] PM: Hibernation image partition 8:2 present [ 105.133567] PM: Looking for hibernation image. [ 105.133775] PM: Image not found (code -22) [ 105.133777] PM: Hibernation image not present or could not be loaded. [ 105.189165] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 107.565728] udevd[725]: starting version 175


Fixing it:
Increase the rootdelay so that the harddrive(s) have time to boot up. I think in my case the issue is that I found an ancient IDE drive which may be slow to spin up, and maybe even failing (I use it for /scratch).

Either way, edit /etc/default/grub and add rootdelay=90 (for example) to the end of GRUB_CMDLINE_LINUX_DEFAULT, e.g.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=0x0318 text rootdelay=90"
Then do
sudo update-grub

and hopefully the next time your system will boot, although slowly.

28 July 2014

587. Very Briefly: Getting pictures off of a corrupted Compact Flash card using testdisk

Nothing terribly complicated here. My CFII card (above, at /dev/sdb1)  is about a decade old and occasionally becomes corrupted. To recover the photos I use photorec which is part of testdisk:

sudo apt-get install testdisk
sudo photorec

Select the correct device, in this case /dev/sdb

Search

Pick the correct file system, typically FAT16 or 32
Also select a place to store the recovered photos. Then recover:



And you're done.