DeveloperWiki:Ncurses Todo List

From ArchWiki
Revision as of 13:28, 2 August 2008 by Allan (talk | contribs) (Stage 4)
Jump to: navigation, search

This page is to help me keep track of the ncurses rebuild so we can purge Arch of packages that link to


Are there really FAQs?


Why are you doing this?

Once upon a time, it was thought 8-bits was enough to code characters and life was good for people using English locales. But along came people who speak different languages that require many more characters and 8-bits was no longer enough. Thus the ncurses package introduced a wide-character library that could handle both 8-bit and multi-byte characters.

Currently the Arch package is a mixture of both the short (ncurses) and wide (ncursew) libraries. Given the wide-character version does everything the short-character version does and more, it would be good to remove the short character one completely. This should also fix some localization/UTF8 bugs.

Will this cause trouble building packages that look for the library?

No. A fancy bit of packaging will trick these packages into linking against the wide-character version. The two libraries are code compatible so there should be no build trouble (currently, only the wide character headers are packaged anyway).

Can help I test the new ncurses packages?

Yes you can, provided

  • You use the testing repo and are comfortable fixing problems
  • You realize that although everything is working for me, this could stop some packages working, hopefully only until they are rebuilt.
  • Look below for a list of packages I know need rebuilt. If you rely on one of them, then add a vote and wait for me to rebuild it.

How do I access the rebuilt packages to help testing?

Add this to your pacman.conf above your uncommented [testing] repo entry

Server =

Are there x86_64 pacakges?

Not yet. The previous ncurses PKGBUILD had extra configure flags in the x86_64 version compared to the i686 version to ensure backward compatibility with old packages. This seems a good time to remove that and so the x86_64 rebuild may be (slightly) more extensive.

Some packages need

Add them to the rebuild list below and I will update them soon. In the meantime you (should) know what to do...

You broke stuff! Can I go back?

I told you that could happen! Here is how to revert...

pacman -S pacman-contrib
paclist ncursesw | cut -f1 -d" " > ncursesw.list
(remove ncursesw repo from pacman.conf)
pacman -Sy $(cat ncursesw.list)

You sunk my battleship!

I have now rebuilt bs so you can play it again...


For those interested, here is the new ncurses PKGBUILD.

# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
# Maintainer: Allan McRae <>
# Contributor: judd <>

pkgdesc="A System V Release 4.0 curses emulation library"
arch=('i686' 'x86_64')

build() {
  cd ${srcdir}/${pkgname}-${pkgver}
  patch -Np1 -i ${srcdir}/${pkgname}-${pkgver}-coverity.patch 

  ./configure --prefix=/usr --mandir=/usr/share/man \
     --with-shared --with-normal --without-debug --without-ada \
     --with-install-prefix=${pkgdir} --enable-widec 
  make || return 1
  make install

  # fix library permissions
  chmod 644 ${pkgdir}/usr/lib/libncurses++w.a

  # move libraries needed for boot to /lib (we call tput in initscripts)
  mkdir -p ${pkgdir}/lib
  mv ${pkgdir}/usr/lib/* ${pkgdir}/lib
  ln -sf ../../lib/ ${pkgdir}/usr/lib/  

  # Fool packages looking to link to non-wide-character ncurses libraries
  for lib in curses ncurses form panel menu ; do \
    rm -f ${pkgdir}/usr/lib/lib${lib}.so ; \
    echo "INPUT(-l${lib}w)" >${pkgdir}/usr/lib/lib${lib}.so ; \
    ln -sf lib${lib}w.a ${pkgdir}/usr/lib/lib${lib}.a ; \
  ln -sf libncurses++w.a ${pkgdir}/usr/lib/libncurses++.a 

  # install tput to /bin
  mkdir ${pkgdir}/bin/
  mv ${pkgdir}/usr/bin/tput ${pkgdir}/bin/tput

  # Some packages look for -lcurses during build
  rm -f ${pkgdir}/usr/lib/
  echo "INPUT(-lncursesw)" >${pkgdir}/usr/lib/
  ln -sf ${pkgdir}/usr/lib/
  ln -sf libncursesw.a ${pkgdir}/usr/lib/libcursesw.a
  ln -sf libncurses.a ${pkgdir}/usr/lib/libcurses.a

  # install license, rip it from the readme
  cd ${srcdir}/${pkgname}-${pkgver}
  mkdir -p ${pkgdir}/usr/share/licenses/$pkgname
  grep -B 100 '$Id' README > ${pkgdir}/usr/share/licenses/${pkgname}/license.txt

Rebuild List

Stage 1 - COMPLETE

Packages required for bash to continue working with only ncursesw library. Note: this requires some bootstraping

readline  (Fix man and info directories)
bash  (Fix info directory)

Stage 2 - COMPLETE

The rest of base and base-devel:

grub  (Fix man and info directories)
less  (Not needed for i686)
nano  (Not needed for i686)
procinfo  (Fix man directory)
psmisc  (Remove pidof cleanup)
util-linux-ng  (Requires update and new patch to build)
vi  (Requires gettext.  Bump patch level.  Add gettext to makedepends)

Stage 3 - COMPLETE

Rebuild rest of [core]:

heimdal  (Fix man directory.  Adjust all man page cleanup.)
initscrits  (No rebuild needed. Only runtime dependancy)
isdn4k-utils  (Not needed for i686)
links  (Requires gpm)

Stage 4

Packages in [extra]:


aalib  (Fix info directory)
alsa-utils  (Not needed for i686)
bs  (Add arch array)
cdargs  (Fix man directory)
cmatrix  (Add arch array.  Add license)
cscope  (Add license.  Fix man directory)
ddd  (Fix man and info directories)
duhdraw  (Add arch array)
emacs  (Requires gnutls.  Replace libungif with giflib)
enigma  (Add arch array. Add license)
ethstatus  (Add arch array. Add license.  Fix man directory)
fortunelock  (Add arch array.  Add license.  Fix man directory)
gdb  (Fix man and info directories)
gnuchess  (Add arch array.  Add license.  Requires patch for gcc4)
gnome-terminal  (Not needed for i686)
gnutls  TODO - rebuild to remove /usr/share/info/dir
gstreamer-good-plugins  (Requires aalib, gnutls, libxml2)
gvim  (Requires vim, gnutls)
hexedit  (Add md5sum.  Add license)
iptraf  (Add arch array.  Add license.  Fix man directory)
joe  (Fix man directory)
lexter  (Add arch array. Fix man directory)
lynx  (Change md5sum for upstream -release5.  Fix man directory)
mc  (Not needed for i686)
mplayer  (Requires aalib, gnutls, jack-audio-connection-kit, lame, smbclient.  Replace libungif with giflib)
moon-buggy  (Add arch array.  Add license.  Fix man and info directories.  Remove /usr/com directory)
mtr  (Requires gnutls.  Fix man directory)
ncftp  (Fix man directory)
ncmpc  (Fix man directory)
nethack  (Add arch array)
netris  (Add arch array.  Add md5sums.  Add license)
openupsmart  (Not needed for i686)
screen  (Fix man directory)
termcap-compat  (Not needed for i686)
terminal  (Requires vte)
tin  (Fix man directory)
r  (Not needed for i686)
ruby  (Requires termcap-compat)
vim  (Requires ruby)
vte  (Requires gnutls, libxml2)
xaos  (Requires aalib)
xterm  (Fix man directory.  Too lazy to add license...)
zsh  (Not needed for i686)


achessclock  (Source not found)
archboot  (Dependancies cannot be satisfied)
blassic  (Add arch array.  gcc-4.3 header related build failure)
bzflag  (Build failure)
erlang  (Requires gnutls.  configure stalls "checking for JDK version 1.2...")
giftcurs  (Add arch array.  Source not found)
hexcurse  (md5sum failure.  Url no longer exists.  Add arch array.  Add license)
kismet  (Requires gnutls.  gcc-4.3 header related build failure)
mp3blaster  (gcc-4.3 header related build failure)
ne  (Add arch array.  Source not found)
netkit-ftp  (gcc-4.3 header related build failure)
nppangband  (Add arch array.  Source not found)
pente  (Add arch array.  Build failure)
php  (need to figure out dependancies prior to makechrootpkg - imap/smtpserver)
pinentry  (Build failure)
proftpd  (build failure)
yabasic  (Add arch array.  Build failure)
zsnes  (Build failure)


Add a vote below this for a package you use that is broken by this and I will prioritize its rebuild