12 November 2016

Git

System: Microsoft Windows XP Home Edition
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz.

I thought to compile emacs-25.1, and manually installed the gcc-6.1.0-1 and dependency
packages, but when I ran the configure script with CFLAGS and examined the config.log
the CFLAGS had been appended with a duplicate entry for -mtune=. Therefore I do not
recommend using this [the MSYS2] distribution's toolchain. The below is written simply
to provide the reader with access to Github, and owing to it's inclusion of shells, Tcl/Tk,
and UNIX utlities.

Owing to the newer Git releases' reliance on CancelSynchronousIo
in KERNEL32.dll, Git-2.10.0-32-bit is the last version supporting
MS® XP

http://gitb.org/git-for-windows/
git-for-windows - haozibi 公益性网盘

Git-2.10.0-32-bit.exe


I opt out of Window Explorer integration and file associations, Use Git from Git Bash
Only, Checkout as-is, commit Unix-style line endings, Use Windows' default console
window, and Enable file system caching. As I don't have .NET framework v4.5.1 on
the computer - XP doesn't support that version - I opt out of using the Git Credential
Manager.

C:\Programmer\Git
458 MB (480.484.174 byte)
The download ships with Perl 5.22.1 and Tcl/Tk 8.6.5.

If you want to run tclsh86.exe and/or wish86.exe from Git CMD
modify the %PATH% adding C:\Programmer\Git\mingw32\bin.

C:\DOCUME~1\UserName>TYPE tcl.bat
@ECHO OFF
ECHO Loading Tcl/Tk variables...
SET PATH=C:\Programmer\Git\mingw32\bin;%PATH%

C:\DOCUME~1\UserName>

Installing csh/tcsh, libcatgets, and tzcode.

https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/
libcatgets-1.1-2-i686.pkg.tar.xz

Copy the above file to C:\Programmer\Git and extract it,
then delete the files .MTREE and .PKGINFO.

Append your file package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$ echo libcatgets 1.1-2 >> /etc/package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$

https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/
tcsh-6.19.00-1-i686.pkg.tar.xz

Copy the above file to C:\Programmer\Git and extract it, then
delete the files .INSTALL, .MTREE, and .PKGINFO.

Append your file package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$ echo tcsh 6.19.00-1 >> /etc/package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$

https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/
tzcode-2015.e-1-i686.pkg.tar.xz

Copy the above file to C:\Programmer\Git and extract it,
then delete the files .MTREE and .PKGINFO.

Append your file package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$ echo tzcode 2015.e-1 >> /etc/package-versions.txt

Eric@Erics-Netbook MINGW32 ~
$ exit

Running tcsh as a login shell.

http://mirrors.slackware.com/slackware/slackware-14.0/source/a/
tcsh-6.18.01.tar.xz

Extact the tcsh-6.18.01 archive above and modify csh.login to read /usr/bin/tcsh,
then copy csh.cshrc and csh.login to both C:\Programmer\Git\etc and to your home
directory, on the latter renaming these, respectively, to .cshrc and .login; bindkey.tcsh
and complete.tcsh should go in \etc\profile.d. Line 40 with the 'goto' statement should
be commented out in .cshrc for the customisations below that line to have any effect.

C:\Programmer\Git\etc\>TYPE csh.cshrc
#
# Example /etc/csh.cshrc for Cygwin
#
onintr -

if ( -d /etc/profile.d ) then
  set nonomatch
  foreach _s ( /etc/profile.d/*.csh )
    if ( -r $_s ) then
      source $_s
    endif
  end
  unset _s nonomatch
endif

if (! ${?prompt}) goto end

# This is an interactive session

# Now read in the key bindings of the tcsh
if ($?tcsh && -r /etc/profile.d/bindkey.tcsh) then
  source /etc/profile.d/bindkey.tcsh
endif

# On Cygwin it's possible to start tcsh without having any Cygwin /bin
# path in $PATH.  This breaks complete.tcsh starting with tcsh 6.15.00.
# For that reason we add /bin to $PATH temporarily here.  We remove it
# afterwards because it's added again (and correctly so) in /etc/csh.login.
set path=( /bin $path:q )

# Source the completion extension for tcsh
if ($?tcsh && -r /etc/profile.d/complete.tcsh) then
  source /etc/profile.d/complete.tcsh
endif

# Reset $PATH.
set path=( $path[2-]:q )

# If we find $HOME/.{t}cshrc we skip our settings used for interactive sessions.
if (-r "$HOME/.cshrc" || -r "$HOME/.tcshrc") goto end

# Set prompt
if ($?tcsh) then
  set prompt='[%n@%m %c02]$ '
else
  set prompt=\[`id -un`@`hostname`\]\$\
endif

# Some neat default settings.
set autocorrect=1
set autolist=ambiguous
unset autologout
set complete=enhance
set correct=cmd
set echo_style=both
set ellipsis
set fignore=(.o \~)
set histdup=erase
set history=100
unset ignoreeof
set listjobs=long
set listmaxrows=23
#set noglob
set notify=1
set rmstar=1
set savehist=( $history merge )
set showdots=1
set symlinks=expand

# Some neat aliases
alias ++ pushd
alias -- popd
alias d dirs
alias h history
alias j jobs
alias l 'ls -C'
alias la 'ls -a'
alias ll 'ls -l'
alias ls 'ls --color'

end:
  onintr

C:\Programmer\Git\etc\>

C:\Programmer\Git\etc\>TYPE csh.login
#
# Example /etc/csh.login for Cygwin
#
unsetenv TEMP
unsetenv TMP

set path=( /usr/local/bin /usr/bin /bin $path:q )

if ( ! ${?USER} ) then
  set user="`id -un`"
endif
if ( ! ${?HOME} ) then
  set home=/home/$USER
endif
if ( ! -d "$HOME" ) then
  mkdir -p "$HOME"
endif

if ( ! ${?term} || "$term" == "unknown"  || "$tty" == "conin" ) then
  set term=cygwin
endif

setenv MAKE_MODE unix

setenv SHELL /usr/bin/tcsh

umask 022

cd

C:\Programmer\Git\etc\>

Create a Desktop Shortcut for mintty.exe and modify it as follows:

Destination: C:\Programmer\Git\usr\bin\mintty.exe /usr/bin/tcsh -l

Start i: %HOMEDRIVE%%HOMEPATH%

If instead you want an interactive session change the tcsh argument to '-i'.

NB: In /tcsh-6.18.01/cygwin/csh.cshrc the first 'if' block complains when sourcing MSYS2's
/etc/profile.d/perlbin.csh, so rename that file to perlbin.csh.bak, and in your .login file before
'umask 022' add these lines:

setenv PATH "${PATH}":/usr/bin/vendor_perl:/usr/bin/core_perl

# If you have modules in non-standard directories you can add them here.
# setenv PERLLIB dir1:dir2

Git-2.10.0-32 does not include a .csh equivalent for /etc/profile.d/lang.sh, Martell Malone has one at
https://github.com/martell/MSYS2-Base/blob/master/etc/defaults/etc/profile.d/lang.csh, but I prefer
using a modified (for the PATH) copy of Slackware's.

C:\Programmer\Git\etc>TYPE profile.d\lang.csh
#!/usr/bin/csh
# Set the system locale.  (no, we don't have a menu for this ;-)
# For a list of locales which are supported by this machine, type:
#   locale -a

# en_US is the Slackware default locale:
setenv LANG en_US

# 'C' is the old Slackware (and UNIX) default, which is 127-bit
# ASCII with a charmap setting of ANSI_X3.4-1968.  These days,
# it's better to use en_US or another modern $LANG setting to
# support extended character sets.
#setenv LANG C

# There is also support for UTF-8 locales, but be aware that
# some programs are not yet able to handle UTF-8 and will fail to
# run properly.  In those cases, you can set LANG=C before
# starting them.  Still, I'd avoid UTF unless you actually need it.
#setenv LANG en_US.UTF-8

# Another option for en_US:
#setenv LANG en_US.ISO8859-1

# One side effect of the newer locales is that the sort order
# is no longer according to ASCII values, so the sort order will
# change in many places.  Since this isn't usually expected and
# can break scripts, we'll stick with traditional ASCII sorting.
# If you'd prefer the sort algorithm that goes with your $LANG
# setting, comment this out.
setenv LC_COLLATE C

# End of /etc/profile.d/lang.csh

C:\Programmer\Git\etc>

A (modified) Slackware coreutils-dircolors.csh file.

C:\Programmer\Git\etc>TYPE profile.d\coreutils-dircolors.csh
# Slackware color ls profile script for /bin/csh-like shells.

# Set up LS_OPTIONS environment variable.
# This contains extra command line options to use with ls.
# The default ones are:
#  -F = show '/' for dirs, '*' for executables, etc.
#  -T 0 = don't trust tab spacing when formatting ls output.
#  -b = better support for special characters
setenv OPTIONS "-F -b -T 0"

# COLOR needs one of these arguments:
# 'auto' colorizes output to ttys, but not pipes.
# 'always' adds color characters to all output.
# 'never' shuts colorization off.
setenv COLOR auto

# This section shouldn't require any user adjustment since it is
# simply setting the LS_OPTIONS variable using the information
# already given above:
setenv LS_OPTIONS " $OPTIONS --color=$COLOR "
unsetenv COLOR
unsetenv OPTIONS

# Set up aliases to use color ls by default.  A few additional
# aliases like 'dir', 'vdir', etc, are some ancient artifacts
# from 1992 or so...  possibly they should be disabled, but maybe
# someone out there is actually using them?  :-)
alias ls '/bin/ls $LS_OPTIONS';
alias dir '/bin/ls $LS_OPTIONS --format=vertical';
alias vdir '/bin/ls $LS_OPTIONS --format=long';
alias d dir;
alias v vdir;
unsetenv noglob;

# Set up the LS_COLORS environment:
# [ -f $HOME/.dir_colors ]
# if ($status == 0) then
#   eval `/bin/dircolors -c $HOME/.dir_colors`
# endif
# [ -f /etc/DIR_COLORS ]
# if ($status == 0) then
eval `/bin/dircolors -c /etc/DIR_COLORS`
# endif
# [ ! -f $HOME/.dir_colors -a ! -f /etc/DIR_COLORS ]
# if ($status == 0) then
#   eval `/bin/dircolors -c`
# endif

C:\Programmer\Git\etc>

https://github.com/martell/MSYS2-Base/blob/master/etc/defaults/etc/profile.d/
tzset.csh
tzset.sh

Add Martell Malone's tzset.csh and tzset.sh files.

C:\Programmer\Git\etc>TYPE profile.d\tzset.csh

# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software.
# If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

# base-files version 4.1-1

# /etc/profile.d/tzset.csh: sourced by /etc/profile.

# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/profile.d/tzset.csh

# Modifying /etc/profile.d/tzset.csh directly will prevent
# setup from updating it.

# System-wide tzset.csh file

#Uses the geographical location setting of the user to find the right
#mapping, rather than the locale setting.  Only on Windows 2000 which
#doesn't know about the user's geographical location, or if fetching
#the geographical location fails, it falls back to the user's locale.
if ( $?TZ == 0 ) setenv TZ `/usr/bin/tzset`


C:\Programmer\Git\etc>TYPE profile.d\tzset.sh
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software.
# If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

# base-files version 4.1-1

# /etc/profile.d/tzset.sh: sourced by /etc/profile.

# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/profile.d/tzset.sh

# Modifying /etc/profile.d/tzset.sh directly will prevent
# setup from updating it.

# System-wide tzset.sh file

#Uses the geographical location setting of the user to find the right
#mapping, rather than the locale setting.  Only on Windows 2000 which
#doesn't know about the user's geographical location, or if fetching
#the geographical location fails, it falls back to the user's locale.
test -z "$TZ" && export TZ=$(/usr/bin/tzset)


C:\Programmer\Git\etc>

And for consistency with MSYS2 lets add their format /etc/shells file.

C:\Programmer\Git\etc>TYPE shells
$ cat shells
#
# /etc/shells
#

/usr/bin/sh
/usr/bin/bash

# End of file
/usr/bin/dash
/usr/bin/csh
/usr/bin/tcsh

C:\Programmer\Git\etc>EXIT

NB: Git Bash as I have a Danish MS® system, reads the /profile.d/lang.sh file
when starting, and exports to the shell 'LANG=da_DK.UTF-8'.

Though in certain circumstances there are problems using mintty.exe, as from the
above lang.csh, there are sometimes problems with LANG set to UTF variants.

09 April 2016

9front

System: Microsoft Windows XP Home Edition
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: makebootfat-1.4-windows-pentium.zip,
9front-5217.0d720aa995cf.iso.bz2

This post is about creating a bootable flash stick
with a Plan 9 distribution.

A Danish (dk) keyboard map has been added in
release 9front-5321.f8c704dc01c.iso.bz2.

The updated Estonian (ee) keyboard map which
I submitted (9front-5321.f8c704dc01c.iso.bz2)
by mistake had two mode 4 lines near the end,
those should not be there.

that link's description should read however

remove Š and Ž from estonian keymap

It is premature at this point of time but a second
revision of the Estonian kbmap may be possible
enabling Shift + AltGr to be utilised for rendering
the uppercase Š and Ž in a future 9front release.

One of the developers mentioned this option, which
however I'm not familiar with.

you know, there's also a compose sequence see /lib/keyboard.

[alt] vs -> š


or

[alt] vS -> Š


A Finnish (fi) keyboard map accompanies the
distribution; I presume that map also works for
Swedish.

A Norwegian (no) keyboard map accompanies
the distribution.

Untested Arabic (ara), Belarusian (by), and Icelandic
(is) keyboard maps are also available.

The /sys/lib/kbmap/ua files accompanying Plan 9
distributions have a perhaps outdated mapping of
ґ and Ґ to key 41; on current peripherials ё and Ё
are mapped to 41.

map ґ and Ґ as follows

0       86       'ґ
1       86       'Ґ
3       22       'ґ

Using Shift + AltGr for rendering the
uppercase Ґ is not yet supported.

https://sourceforge.net/projects/advancemame/files/advanceboot/1.4/
makebootfat-1.4-windows-pentium.zip

http://9front.org/iso/
9front-5217.0d720aa995cf.iso.bz2

Unpack the .zip file and copy the .exe to the root of your directory tree,
and extract the .bz2 file (e.g., with 7-Zip), and then the resultant .iso.

Create a directory to temporarily store the files to be included on a usb stick.

C:\>MKDIR source

C:\>

From the extracted 9front \386 directory copy the files 9bootfat, 9pcf, mbr, and
pbs, placing these along with the .iso file in C:\source, and create in C:\source
a UNIX format (with an ending newline) plan9.ini file with the following content:

bootfile=9pcf
mouseport=ask
monitor=ask
vgasize=ask

Run the following command to create a usb stick from which one can boot 9front.

C:\>makebootfat.exe -m source\mbr -b source\pbs -o usb source

C:\>EXIT

The vgasize on my Netbook monitor (1024x600) isn't supported so I'm not providing
instructions here for an installation. For further information, e.g., if one has an extra
desktop and wants to install 9front (as a stand-alone machine), see the following link:

http://fqa.9front.org/fqa4.html

NB: Without an installation one does not have write permissions. To run with an
alternative keymap type at a prompt 'kbmap' which should then display a table of
available keymaps, use mouse button 3 to click on the desired map, and then when
opening a new terminal this should be in the desired keymap. Typing an argument
for kbmap didn't seem to work for me (a single entry in the table when clicked on
didn't effectuate a change in new terminals). One of the developers has suggested
copying your preferred kbmap file to /dev/kbmap; I presume at that location that it
is sourced as your default kbmap. The source distribution makebootfat-1.4.tar.gz
compiles on GNU/Linux, but did not seem to set the flag as bootable on the flash
stick.

MBR...pbs................ok
*e820=1 0x0000000000000000 0x000000000009f800 2 0x000000000009f800 0x00000000000
a0000 2 0x00000000000dc000 0x0000000000100000 1 0x0000000000100000 0x000000003f6
d0000 2 0x000000003f6d0000 0x000000003f6e2000 4 0x000000003f6e2000 0x000000003f6
e3000 2 0x000000003f6e3000 0x000000003f700000 2 0x000000003f700000 0x000000003f8
00000 2 0x000000003f800000 0x0000000040000000 2 0x00000000e0000000 0x00000000f00
00000 2 0x00000000fec00000 0x00000000fec10000 2 0x00000000fed00000 0x00000000fed
00400 2 0x00000000fed14000 0x00000000fed18000 2 0x00000000fed18000 0x00000000fed
19000 2 0x00000000fed19000 0x00000000fed1a000 2 0x00000000fed1c000 0x00000000fed
20000 2 0x00000000fed20000 0x00000000fed90000 2 0x00000000fee00000 0x00000000fee
01000 2 0x00000000ff000000 0x0000000100000000
bootfile=9pcf
mouseport=ask
monitor=ask
vgasize=ask
boot

Plan 9

starting /bin/rc
126 holes free
0x0001a000 0x0009f000 544768
0x004d3000 0x0ffff000 263372800
263917568 bytes free
cpu: 1596MHz GenuineIntel Atom (AX 000106C2 CX 0040C390 DX BFE9FBFF)
LAPIC: fee00000 0xe0000000
ELCR: 0C20
cpu0: lapic clock at 133MHz
#I0: yuk: 1000Mbps port 0xF0200000 irq 5: 002454034864
#A0: hda mem e006000 irq 5
#A0: codec #0, vendor 10ec0272, rev 00100001
1015M memory: 256 M kernel data, 758M user, 1383M swap

/dev/sdC0: WDC WD1600BEVT-222CT0
/dev/sdC0/data
/dev/sdC0/linux
/dev/sdC0/linuxswap
/dev/sdC0/ntfs
/dev/sdU98d33: SanDisk Cruzer Fit 1.27
/dev/sdU98d33/data
/dev/sdU98d33/dos dos
/shr/sdU98d33:
/shr/sdU98d33/9front-5126.47bef620b3a3.iso 9660
bootargs is (tcp, il, local!device)[local!/shr/sdU98d33/9front-5126.47bef620b3a3.iso]
user[glenda]

init: starting /bin/rc
cirno Apr 5 07:22:42 starting dos resolver on /net
vgasize is (text, 640x480x8, 1024x768x16, ...) [1024x768x16] 800x600x32
monitor is (vesa, xga, lcd, ...) [vesa]

On standalone machines, e.g., running off a flash stick, it is impossible to do anything after
invoking bare 'fshalt'; using the command with the -r argument will reboot the computer and
before an OS is loaded one can remove the flash stick, so as to boot the hard drive's OS.

term% fshalt -r

halting...
done halting
rebooting

FSHALT(8)REBOOT(8)

NB: I noticed the Caps Lock key doesn't work after posting this.

16 March 2016

display

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: weirdx-1.0.32.tar.gz

This entry is about running plan9port's rio window manager logged in
as one user, then opening a Java window into which will be loaded an
X terminal, switching in that xterm to another user and running GUI
applications inside the Java window.

http://www.jcraft.com/weirdx/
weirdx-1.0.32.tar.gz

One needs a JDK installation, instructions for which are located
in the /extra directory of Slackware distributions. I've used early
as J2SE 1.5.0_01 from Slackware version 10.1. JRE will work,
excepting you can't compile files for other keyboard layouts than
those (gb, de, and jp106) which ship with 1990's circa software.

Boot into the default runlevel 3.

Welcome to Linux 3.2.29-smp (tty1)
darkstar login: glen
Password:
Linux 3.2.29-smp
glen@darkstar:~$ startx -- :1 vt8

Use mouse button 3 to access the menu, select New,
then use mouse button 3 to draw a window.

Check if you're on a non-English keyboard.

sh-4.2$ setxkbmap -query

If you're on an unsupported keyboard run this command.

sh-4.2$ setxkbmap --layout us

Start WeirdX in the background
and xterm on DISPLAY :2.0.

sh-4.2$ cd /tmp/weirdx/misc
sh-4.2$ java -jar weirdx.jar &
[1] 2121
sh-4.2$ xterm -display :2.0 -geometry 80x20-1-1 &
[2] 2135
sh-4.2$

In xterm switch to another user as a login shell,
which will add the variables from /etc/profile.d,
into your shell. If that user is already logged in,
e.g., on another tty, omit the '--login' argument; the
shell within which one runs the su command will
retain a non-login status, but additional terminals
started from twm's mouse accessed menu will
appear as login shells.

sh-4.2$ su felix --login
Password:
felix@darkstar:~$

Start a tab window manager (twm).

felix@darkstar:~$ twm -f /tmp/weirdx/misc/twmrc &
[1] 2166
felix@darkstar:~$ cd $HOME
felix@darkstar:~$

Qt applications will miss the Xlib extension SYNC in WeirdX.

The GTK+ applications wanting access & write permissions to
freedesktop's ~/.local/share/recently-used.xbel won't complain
(issue warnings) when started under a twm. However owing to
the limitations of RANDR to run only one window manager per
screen, having rio running on DISPLAY :1, DISPLAY :2.0 will
lack support for the Xlib extension for a running twm.

Tk applications and athena widgets render favourably.

When finished with the session, use the mouse accessible
menu to Exit; clicking the mouse again in xterm and typing
'exit' returns the shell to the user glen.

Kill the xterm PID from 9term
and then the WeirdX PID.

I first used JCraft's software with a Microsoft® XP
installation of SFU 3.5 Interix. That platform does
not exhibit the above issue with RANDR though I
occasionally have seen a "blacked out" effect on a
widget's dropdown menu entry after having clicked
on it; gvim compiled with the athena toolkit.

I might create Scandinavian languages' keymap and
key modifier files; uncommenting the following line in
C:\weirdx\misc\config\props.and starting WeirdX on
my Netbook I note though that AltGr does not work -
having set the Windows keyboard to DE - and with
CapsLock pressed the typing of numbers results in
the equivalent of Shift + number having been typed.

#weirdx.display.keymap=de

X clients can also be started from remote Un*x
machines, the client applications appearing in
the running X Window System server's display.

I have neither tried Java GUIs nor XForms Toolkit
applications with WeirdX; in the sidebar there are
for example two Java programs as RAnalyticFlow
and SQuirreL SQL Client.

Rudimentary GUI design is an interesting skill.

On Linux from plan9ports's event.c [line 197] is
output "rio: bad mapreq c %p w %x, rescanning\n"
when attempting to run p9p's rio inside WeirdX.

In terms of the differences in ELF versus PE32
interaction between an MS® machine with Interix
and a Un*x network might be possible utilising
multiple Tcl interpreters.

05 March 2016

es

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: es-0.9.tar.gz

This post will be about compiling the extensible shell (es).

http://web.mit.edu/~yandros/doc/es-usenix-winter93.html

https://wryun.github.io/es-shell/
es-0.9.tar.gz

There are two options for line editing, GNU readline (default), and the UNIX port
of the NetBSD libedit library. The latter - even with '--enable-widec' added to the
configure arguments - appears to create dead keys on Scandinvian keyboards.

If the libedit library is chosen, e.g., for UK/US only keyboards, run the configure script
without any arguments for 'Optional Packages', and hand edit afterwords the config.h
and Makefile.

config.h

- /*#undef HAVE_LIBEDITLINE */
+ #define HAVE_LIBEDITLINE 1

- #define HAVE_LIBREADLINE 1
+/*#undef HAVE_LIBREADLINE */

Makefile
- LIBS = $(ADDLIBS) -lreadline -ltermcap
+ LIBS = $(ADDLIBS) -ledit -ltermcap

Then run 'make'.

Based on es-0.9beta is also (albeit with some language changes) a C++ version
where the following line (using automake < 1.12) will create a configure script.

bash-4.2# autoreconf -i

http://pkgs.fedoraproject.org/repo/pkgs/xs/
frytvm-XS-9c19777.tar.gz

https://slackbuilds.org/repository/14.0/development/gc/
gc.tar.gz

http://hboehm.info/gc/gc_source/
gc-7.2d.tar.gz

Add '--enable-cplusplus' to the configure arguments in
the gc.SlackBuild.

Slackware current (i.e., automake >=1.12) would use the
newer frytvm-XS-c9a0b29.tar.gz.

The XS configure script includes an option as '--enable-lisptrees'; sexprs
along with [Plan 9] ndb(6)-like data structures are among the alternatives
to the use of XML.

The es(1) and xs(1) man pages are similar.

03 March 2016

rio

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: plan9port-20140306.tgz

Setting up rio with a Danish keyboard layout.

https://slackbuilds.org/repository/14.1/system/plan9port/

Boot into the default runlevel 3.

Welcome to Linux 3.2.29-smp (tty1)
darkstar login: root
Password:
Linux 3.2.29-smp
Last login: Wed Mar 3 06:08:32 +0100 2016 on /dev/tty1

root@darkstar~# installpkg plan9port-20140306-i486-1_SBo.tgz
root@darkstar~# cat /home/glen/.xinitrc
#!/bin/sh

# Merge in defaults
userresources=$HOME/.Xresources
[ -f $userresources ] && xrdb -merge $userresources

# Change the key map to Danish
/usr/bin/setxkbmap -layout dk

# Start the window manager:
if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
  exec ck-launch-session rio
else
  exec rio
fi
root@darkstar~#

Modifying the above to read 'exec ck-launch-session rio -grey' will
display a stippled grey background, instead of Plan 9's solid grey.

Use Ctrl+Alt+F2 to access tty2.

Welcome to Linux 3.2.29-smp (tty2)
darkstar login: glen
Password:
Linux 3.2.29-smp
glen@darkstar:~$ startx

Use mouse button 3 to access the menu, select New,
then use mouse button 3 to draw a window.

9term is a dumb terminal.

As I have not ported Mothra to plan9port
start an xterm in the background to use a
text-browser; likewise for emacs, vi(m), or
yi (vty frontend with vim keymap), if you
prefer those to acme, ed, or sam.

From a running 9term in rio the number of processes is minimal.

sh-4.2$ ps x
  PID TTY      STAT   TIME COMMAND
 1912 tty2     Ss     0:00 -sh
 1944 tty2     S+     0:00 /bin/sh /usr/bin/startx
 1960 tty2     S+     0:00 xinit /home/glen/.xinitrc -- /usr/bin/X :0 -auth /home/glen/.serverauth.1944
 1966 tty2     S      0:00 ck-launch-session rio
 1975 tty2     S      0:00 rio
 1978 tty2     S      0:00 9term -w
 1979 tty2     Sl     0:00 9term -w
 1980 tty2     S      0:00 9term 9term (devdraw)
 1985 pts/0    Ss     0:00 /bin/sh -i
 1999 pts/0    R+     0:00 ps x
sh-4.2$

Type 'rio exit' in 9term to end your session.

Logout of tty2 and use Ctrl+Alt+F1 to access tty1.

root@darkstar~# halt

NB: For ordinary use (after the software is installed) one can run exclusively on
/dev/tty1, delaying the 'root' login until the end, which factually is only needed
to run the commands "halt" or "reboot".

02 March 2016

twm

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz

Setting up a tab window manager (twm) with a Danish
keyboard layout.

Boot into the default runlevel 3.

Welcome to Linux 3.2.29-smp (tty1)
darkstar login: root
Password:
Linux 3.2.29-smp
Last login: Wed Mar 2 06:08:32 +0100 2016 on /dev/tty1

root@darkstar~# cat /home/eric/.xinitrc
#!/bin/sh

/usr/bin/twm &
/usr/bin/setxkbmap -layout dk
exec /usr/bin/xterm -geometry 80x20+0+0 -name login
root@darkstar~#

Use Ctrl+Alt+F2 to access tty2.

Welcome to Linux 3.2.29-smp (tty2)
darkstar login: eric
Password:
Linux 3.2.29-smp
eric@darkstar:~$ startx

From a running xterm in a twm the number of processes is minimal.

sh-4.2$ ps x
  PID TTY      STAT   TIME COMMAND
 2308 tty2     Ss     0:00 -sh
 2321 tty2     S+     0:00 /bin/sh /usr/bin/startx
 2337 tty2     S+     0:00 xinit /home/eric/.xinitrc -- /usr/bin/X :0 -auth /home/eric/.serverauth.2321
 2343 tty2     S      0:00 /usr/bin/xterm -geometry 80x20+0+0 -name login
 2344 tty2     S      0:00 /usr/bin/twm
 2348 pts/0    Ss     0:00 sh
 2349 pts/0    R+     0:00 ps x
sh-4.2$

When your session is finished logout of tty2 and use Ctrl+Alt+F1 to access tty1.

root@darkstar~# halt

NB: One can run exclusively on /dev/tty1, delaying the 'root' login until the end,
which factually is only needed to run the commands "halt" or "reboot".

17 February 2016

LPython

System: Microsoft Windows XP Home Edition
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz

Installation of LPython-3.4.0.

https://bitbucket.org/ArmstrongJ/lightning-python/downloads
LPython-3.4.0-25Jul2014.msi

Run the Setup file selecting a Custom install leaving the Add to Path option disabled.

Use the Browse button to change the install path to C:\Programmer\LPython34\.

C:\>TYPE lpython.bat
@ECHO OFF

REM http://www.nurmi-labs.blogspot.com
SET PATH=C:\Programmer\LPython34\;C:\Programmer\LPython34\Scripts\;%PATH%

C:\>lpython.bat
C:\>python.exe
Python 3.4.0 (lightning, Jul 25 2014, 15:33:57) [OpenWatcom v.1300 NT x86] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\>DIR Programmer\LPython34\Scripts
 Disken i drev C har ikke noget navn.
 Diskens serienummer er C804-10A1

 Indhold af C:\Programmer\LPython34\Scripts

17-02-2016  11:00    <DIR>          .
17-02-2016  11:00    <DIR>          ..
17-02-2016  10:59            91.508 easy_install-3.4.exe
17-02-2016  10:59            91.508 easy_install.exe
17-02-2016  11:00            91.480 pip.exe
17-02-2016  11:00            91.480 pip3.4.exe
17-02-2016  11:00            91.480 pip3.exe
               5 fil(er)          457.456 byte
               2 mappe(r)  59.108.622.336 byte ledig

C:\>EXIT

Some modules will not install via PIP, for example fonttools-3.0,
or possibly one would also want to install a revision manually.

https://pypi.python.org/pypi/FontTools/3.0
fonttools-3.0.tar.gz

http://bazaar.launchpad.net/~mcfletch/ttfquery/trunk/revision/20?start_revid=20
mcfletch-ttfquery-trunk-r20.tgz

Extract the files, e.g., with 7-Zip (32-bit x86), and CD into the first directory.

C:\DOCUME~1\UserName>lpython.bat

C:\>CD \dist\fonttools-3.0

C:\dist\fonttools-3.0>python.exe setup.py

...

C:\dist\fonttools-3.0>CD C:\~mcfletch\ttfquery\trunk

C:\~mcfletch\ttfquery\trunk>python.exe setup.py

...

C:\~mcfletch\ttfquery\trunk>EXIT

On the second module while running setup.py it might occur that
a ResourceWarning is output.

04 January 2016

hspec

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: ghc-7.8.4 (see earlier post)

Installation of hspec-2.2.1.

http://slackbuilds.org/repository/14.1/haskell/
https://hackage.haskell.org/packages/

SlackBuilds for hspec-discover and setenv are located in the sidebar.

bash-4.2# installpkg haskell-HUnit-1.2.5.2-i486-2_SBo.tgz \
> haskell-ansi-terminal-0.6.2.1-i486-1_SBo.tgz \
> haskell-extensible-exceptions-0.1.1.4-i486-1_SBo.tgz \
> haskell-mtl-2.1.3.1-i486-1_SBo.tgz \
> haskell-primitive-0.5.4.0-i486-1_SBo.tgz \
> haskell-random-1.1-i486-1_SBo.tgz \
> haskell-setenv-0.1.1.3-i486-1_SBo.tgz \
> haskell-stm-2.4.4-i486-1_SBo.tgz \
> hspec-discover-2.2.1-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for hspec-expectations is located in the sidebar.

bash-4.2# installpkg haskell-async-2.0.2-i486-1_SBo.tgz \
> haskell-hspec-expectations-0.7.2-i486-1_SBo.tgz \
> haskell-tf-random-0.4-i486-1_SBo.tgz

...

bash-4.2#

bash-4.2# installpkg haskell-QuickCheck-2.7.6-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for quickcheck-io is located in the sidebar.

bash-4.2# haskell-quickcheck-io-0.1.2-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for hspec-core is located in the sidebar.


bash-4.2# installpkg haskell-hspec-core-2.2.1-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for hspec is located in the sidebar.


bash-4.2# installpkg haskell-hspec-2.2.1-i486-1_SBo.tgz

...

bash-4.2#

pipes-shell

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: ghc-7.8.4 (see earlier post)

Installation of pipes-shell-0.1.4.

http://slackbuilds.org/repository/14.1/haskell/
https://hackage.haskell.org/packages/

SlackBuilds for base-orphans, prelude-extras and
tagged are located in the sidebar.

bash-4.2# installpkg haskell-base-orphans-0.4.5-i486-1_SBo.tgz \
> haskell-mmorph-1.0.4-i486-1_SBo.tgz \
> haskell-mtl-2.1.3.1-i486-1_SBo.tgz \
> haskell-prelude-extras-0.4.0.2-i486-1_SBo.tgz \
> haskell-stm-2.4.4-i486-1_SBo.tgz \
> haskell-tagged-0.8.2-i486-1_SBo.tgz \
> haskell-text-1.2.0.3-i486-1_SBo.tgz

...

bash-4.2#

Upgrade the SlackBuilds.org StateVar SlackBuild to version 1.1.0.2.

Downgrade the SlackBuilds.org transformers-compat SlackBuild
to version 0.4.0.3, and modify it as follows.

-  --docdir=/usr/doc/$PRGNAM-$VERSION \
-  --flags="three"

+  --docdir=/usr/doc/$PRGNAM-$VERSION

SlackBuilds for pipes and stm-chans are located in the sidebar.

bash-4.2# installpkg haskell-StateVar-1.1.0.2-i486-1_SBo.tgz \
> haskell-async-2.0.2-i486-1_SBo.tgz \
> haskell-exceptions-0.6.1-i486-1_SBo.tgz \
> haskell-hashable-1.2.3.1-i486-1_SBo.tgz \
> haskell-transformers-compat-0.4.0.3-i486-1_SBo.tgz \
> haskell-pipes-4.1.7-i486-1_SBo.tgz \
> haskell-stm-chans-3.0.0.4-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for pipes-parse is located in the sidebar.

bash-4.2# installpkg haskell-nats-1-i486-1_SBo.tgz \
> haskell-pipes-parse-3.0.3-i486-1_SBo.tgz \
> haskell-unordered-containers-0.2.5.1-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for distributive is located in the sidebar.

bash-4.2# installpkg haskell-distributive-0.4.4-i486-1_SBo.tgz \
> haskell-semigroups-0.16.1-i486-1_SBo.tgz \
> haskell-transformers-base-0.4.4-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for bifunctors and pipes-safe are located in
the sidebar.

bash-4.2# installpkg haskell-bifunctors-5.1-i486-1_SBo.tgz \
> haskell-monad-control-1.0.0.4-i486-1_SBo.tgz \
> haskell-pipes-safe-2.2.3-i486-1_SBo.tgz \
> haskell-void-0.7-i486-1_SBo.tgz

...

bash-4.2#

A Slackbuild for contravariant is located in the sidebar.

bash-4.2# installpkg haskell-contravariant-1.3.3-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for comonad is located in the sidebar.

bash-4.2# installpkg haskell-comonad-4.2.7.2-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for semigroupoids is located in the sidebar.

bash-4.2# installpkg haskell-semigroupoids-5.0.0.4-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for profunctors is located in the sidebar.

bash-4.2# installpkg haskell-profunctors-5.1.2-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for free is located in the sidebar.

bash-4.2# installpkg haskell-free-4.12.1-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for pipes-group is located in the sidebar.

bash-4.2# installpkg haskell-pipes-group-1.0.3-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for pipes-bytestring is located in the sidebar.

bash-4.2# installpkg haskell-pipes-bytestring-2.1.1-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for pipes-shell is located in the sidebar.

bash-4.2# installpkg haskell-pipes-shell-0.1.4-i486-1_SBo.tgz

...

bash-4.2#

03 January 2016

Yi

System: Slackware Linux (version 14.0)
CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
Deps: ghc-7.8.4 (see earlier post)

Installation of yi-0.11.2.

http://slackbuilds.org/repository/14.1/haskell/
https://hackage.haskell.org/packages/

The emacs keymap C-x C-f echo buffer expansion using the vty
frontend rather than GNU Emacs' ~/ I find distracting. This isn't
an issue with the pango frontend as the buffer isn't visable unless
accessed via keyboard shortcuts. I therefore optionally install vty
and the yi packages themselves in the user's home directory.

SlackBuilds for base-orphans, cautious-filecharsetdetect-aeexecutable-path,
fingertreeio-storage, oo-prototypes, pointedlistpolyparsesafe, word-trie, and
xdg-basedir are located in the sidebar.

bash-4.2# installpkg haskell-HUnit-1.2.5.2-i486-2_SBo.tgz \
> haskell-base-orphans-0.4.5-i486-1_SBo.tgz
> haskell-cautious-file-1.0.2-i486-1_SBo.tgz \\
> haskell-charsetdetect-ae-1.1.0.1-i486-1_SBo.tgz \
> haskell-data-default-class-0.0.1-i486-1_SBo.tgz \
> haskell-dlist-0.7.1-i486-1_SBo.tgz \
> haskell-executable-path-0.0.3-i486-1_SBo.tgz \
> haskell-extensible-exceptions-0.1.1.4-i486-1_SBo.tgz \
> haskell-fingertree-0.1.1.0-i486-1_SBo.tgz \
> haskell-ghc-paths-0.1.0.9-i486-1_SBo.tgz \
> haskell-io-storage-0.3-i486-1_SBo.tgz \
> haskell-mtl-2.1.3.1-i486-1_SBo.tgz \
> haskell-oo-prototypes-0.1.0.0-i486-1_SBo.tgz \
> haskell-parallel-3.2.0.6-i486-1_SBo.tgz \
> haskell-pointedlist-0.6.1-i486-1_SBo.tgz \
> haskell-polyparse-1.11-i486-1_SBo.tgz \
> haskell-prelude-extras-0.4.0.2-i486-1_SBo.tgz \
> haskell-primitive-0.5.4.0-i486-1_SBo.tgz \
> haskell-random-1.1-i486-1_SBo.tgz \
> haskell-safe-0.3.9-i486-1_SBo.tgz \
> haskell-split-0.2.2-i486-1_SBo.tgz \
> haskell-stm-2.4.4-i486-1_SBo.tgz \
> haskell-tagged-0.8.2-i486-1_SBo.tgz \
> haskell-text-1.2.0.3-i486-1_SBo.tgz \
> haskell-unix-compat-0.4.1.4-i486-1_SBo.tgz \
> haskell-utf8-string-0.3.8-i486-1_SBo.tgz \
> haskell-word-trie-0.3.0-i486-1_SBo.tgz \
> haskell-xdg-basedir-0.2.2-i486-1_SBo.tgz

...

bash-4.2#

Upgrade the SlackBuilds.org StateVar SlackBuild to version 1.1.0.2.

Downgrade the SlackBuilds.org transformers-compat SlackBuild
to version 0.4.0.3, and modify it as follows.

-  --docdir=/usr/doc/$PRGNAM-$VERSION \
-  --flags="three"

+  --docdir=/usr/doc/$PRGNAM-$VERSION

SlackBuilds for cpphs, dyre, and reflection are
located in the sidebar.

bash-4.2# installpkg happy-1.19.4-i486-1_SBo.tgz \
> haskell-StateVar-1.1.0.2-i486-1_SBo.tgz \
> haskell-blaze-builder-0.3.3.4-i486-1_SBo.tgz \
> haskell-cpphs-1.19.3-i486-1_SBo.tgz \
> haskell-data-default-instances-base-0.0.1-i486-1_SBo.tgz \
> haskell-data-default-instances-containers-0.0.1-i486-1_SBo.tgz \
> haskell-data-default-instances-dlist-0.0.1-i486-1_SBo.tgz \
> haskell-data-default-instances-old-locale-0.0.1-i486-1_SBo.tgz \
> haskell-dyre-0.8.12-i486-1_SBo.tgz \
> haskell-exceptions-0.6.1-i486-1_SBo.tgz \
> haskell-hashable-1.2.3.1-i486-1_SBo.tgz \
> haskell-parsec-3.1.7-i486-1_SBo.tgz \
> haskell-reflection-2.1-i486-1_SBo.tgz \
> haskell-regex-base-0.93.2-i486-3_SBo.tgz \
> haskell-text-icu-0.7.0.1-i486-1_SBo.tgz \
> haskell-tf-random-0.4-i486-1_SBo.tgz \
> haskell-transformers-compat-0.4.0.3-i486-1_SBo.tgz \
> haskell-vector-0.10.12.2-i486-1_SBo.tgz

...

bash-4.2#

I've omitted Värri's convention of prefixing of
SlackBuilds for haskell-src-exts-1.17.1.

SlackBuilds for distributive, hint, regex-tdfa, and
haskell-src-exts are located in the sidebar.

bash-4.2# haskell-QuickCheck-2.7.6-i486-1_SBo.tgz \
> haskell-distributive-0.4.4-i486-1_SBo.tgz \
> haskell-data-default-0.5.3-i486-1_SBo.tgz \
> haskell-hashtables-1.2.1.0-i486-1_SBo.tgz \
> haskell-hint-0.4.2.3-i486-1_SBo.tgz \
> haskell-nats-1-i486-1_SBo.tgz \
> haskell-regex-posix-0.95.2-i486-1_SBo.tgz \
> haskell-regex-tdfa-1.2.1-i486-1_SBo.tgz \
> haskell-src-exts-1.17.1-i486-1_SBo.tgz \
> haskell-transformers-base-0.4.4-i486-1_SBo.tgz \
> haskell-unordered-containers-0.2.5.1-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for are dynamic-state, ghc-mtl, and
uniplate are located in the sidebar.

bash-4.2# installpkg alex-3.1.3-i486-1_SBo.tgz \
> haskell-dynamic-state-0.2.0.0-i486-1_SBo.tgz \
> haskell-ghc-mtl-1.2.1.0-i486-1_SBo.tgz \
> haskell-semigroups-0.16.1-i486-1_SBo.tgz \
> haskell-uniplate-1.6.12-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for gtk2hs-buildtoolsbifunctors, and derive
are located in the sidebar.

bash-4.2# installpkg gtk2hs-buildtools-0.13.0.5-i486-1_SBo.tgz \
> haskell-bifunctors-5.1-i486-1_SBo.tgz \
> haskell-derive-2.5.23-i486-1_SBo.tgz \
> haskell-void-0.7-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for cairo and contravariant are located in the sidebar.

bash-4.2# installpkg haskell-cairo-0.13.1.1-i486-1_SBo.tgz \
> haskell-contravariant-1.3.3-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for comonad and glib are located in the sidebar.

bash-4.2# installpkg haskell-comonad-4.2.7.2-i486-1_SBo.tgz \
> haskell-glib-0.13.2.2-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for gio and semigroupoids are located in the sidebar.

bash-4.2# installpkg haskell-gio-0.13.1.1-i486-1_SBo.tgz \
> haskell-semigroupoids-5.0.0.4-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for pango and profunctors are located in the sidebar.

bash-4.2# installpkg haskell-pango-0.13.1.1-i486-1_SBo.tgz \
> haskell-profunctors-5.1.2-i486-1_SBo.tgz

...

bash-4.2#

SlackBuilds for free and gtk are located in the sidebar.

bash-4.2# installpkg haskell-free-4.12.1-i486-1_SBo.tgz \
> haskell-gtk-0.13.9-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for adjunctions is located in the sidebar.

bash-4.2# installpkg haskell-adjunctions-4.2.2-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for kan-extensions is located in the sidebar.

bash-4.2# installpkg haskell-kan-extensions-4.2.3-i486-1_SBo.tgz

...

bash-4.2#

A SlackBuild for lens is located in the sidebar.

bash-4.2# installpkg haskell-lens-4.13-i486-1_SBo.tgz

...

bash-4.2# exit

sh-4.2$ ls
vty-5.3.1 yi-0.11.2 yi-language-0.2.0 yi-rope-0.7.0.1
sh-4.2$

sh-4.2$ cd yi-language-0.2.0
sh-4.2$ export LANG=en_US.UTF-8
sh-4.2$ runghc Setup configure --user
sh-4.2$ runghc Setup build
sh-4.2$ runghc Setup haddock
sh-4.2$ find -print0 | xargs -0 file | grep -e "shared object" | grep ELF \
> | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
sh-4.2$ runghc Setup install

sh-4.2$ cd ../yi-rope-0.7.0.1
sh-4.2$ runghc Setup configure --user
sh-4.2$ runghc Setup build
sh-4.2$ runghc Setup haddock
sh-4.2$ find -print0 | xargs -0 file | grep -e "shared object" | grep ELF \
> | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
sh-4.2$ runghc Setup install

vty (optional)
sh-4.2$ cd ../vty-5.3.1
sh-4.2$ runghc Setup configure --user
sh-4.2$ runghc Setup build
sh-4.2$ runghc Setup haddock
sh-4.2$ find -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
> | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
sh-4.2$ runghc Setup install

(with pango)
sh-4.2$ cd ../yi-0.11.2
sh-4.2$ runghc Setup configure -f-vty -fpango --user
sh-4.2$ runghc Setup build
sh-4.2$ runghc Setup haddock
sh-4.2$ find -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
> | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
sh-4.2$ runghc Setup install

(with vty)
sh-4.2$ cd ../yi-0.11.2
sh-4.2$ runghc Setup configure --user
sh-4.2$ runghc Setup build
sh-4.2$ runghc Setup haddock
sh-4.2$ find -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
> | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
sh-4.2$ runghc Setup install

sh-4.2$ cd $HOME
sh-4.2$ ln -s yi .cabal/bin/yi
sh-4.2$

For pango or vty frontends one can copy the yi.hs file to .config/yi/yi.hs and uncomment,
remove the "--" before, the desired Yi.Keymap and Yi.UI lines, and respectively for Emacs
or Vim, leave myConfig set as defaultEmacsConfig or substutite defaultVimConfig. Further
customisations in the file indicate setting font size and adding a tilde '~' in the left column
as typical for Vim..

sh-2.4$ cat .cabal/share/i386-linux-ghc-7-8.4/yi-0.11.2/example-configs/yi.hs
import Yi

-- Import the desired keymap "template":
-- import Yi.Keymap.Emacs (keymap)
-- import Yi.Keymap.Cua (keymap)
-- import Yi.Keymap.Vim (keymapSet)

-- Import the desired UI as needed.
-- Some are not complied in, so we import none here.

-- import Yi.UI.Vty (start)
-- import Yi.UI.Pango (start)

myConfig :: Config
myConfig = defaultEmacsConfig -- replace with defaultVimConfig or defaultCuaConfig

defaultUIConfig :: UIConfig
defaultUIConfig = configUI myConfig

-- Change the below to your needs, following the explanation in comments. See
-- module Yi.Config for more information on configuration. Other configuration
-- examples can be found in the examples directory. You can also use or copy
-- another user configuration, which can be found in modules Yi.Users.*

main :: IO ()
main = yi $ myConfig
  {

   -- Keymap Configuration
   defaultKm = defaultKm myConfig,

   -- UI Configuration
   -- Override the default UI as such:
   startFrontEnd = startFrontEnd myConfig,
                    -- Yi.UI.Vty.start -- for Vty
   -- (can be overridden at the command line)
   -- Options:
   configUI = defaultUIConfig
     {
       configFontSize = Nothing,
                        -- 'Just 10' for specifying the size.
       configTheme = configTheme defaultUIConfig,
                     -- darkBlueTheme  -- Change the color scheme here.

       configWindowFill = ' '
                          -- '~'    -- Typical for Vim
     }
  }
sh-4.2$ exit