Difference between revisions of "DeveloperWiki:Ncurses Todo List"

From ArchWiki
Jump to: navigation, search
(Stage 4)
(Stage 4)
Line 183: Line 183:
 
  gphoto2
 
  gphoto2
 
  gstreamer-good-plugins  ''(Requires aalib, gnutls, libxml2)''
 
  gstreamer-good-plugins  ''(Requires aalib, gnutls, libxml2)''
 +
gutenprint  ''(Requires gnutls)''
 
  gvim  ''(Requires vim, gnutls)''
 
  gvim  ''(Requires vim, gnutls)''
 
  hexedit  ''(Add md5sum.  Add license)''
 
  hexedit  ''(Add md5sum.  Add license)''
Line 253: Line 254:
 
  giftcurs  ''(Add arch array.  Source not found)''
 
  giftcurs  ''(Add arch array.  Source not found)''
 
  ghc  ''(Build fails.  Haven't tested whether version bump works)''
 
  ghc  ''(Build fails.  Haven't tested whether version bump works)''
gutenprint  ''(Requires gnutls.  Build fails because of FS#11099)''
 
 
  hexcurse  ''(md5sum failure.  Url no longer exists.  Add arch array.  Add license)''
 
  hexcurse  ''(md5sum failure.  Url no longer exists.  Add arch array.  Add license)''
 
  kismet  ''(Requires gnutls.  gcc-4.3 header related build failure)''
 
  kismet  ''(Requires gnutls.  gcc-4.3 header related build failure)''

Revision as of 11:52, 4 August 2008

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

FAQ

Are there really FAQs?

No

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 ncurses.so 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

[ncursesw]
Server = http://dev.archlinux.org/~allan/ncursesw/os/i686

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 libncurses.so

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...

PKGBUILD

For those interested, here is the new ncurses PKGBUILD.

# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
# Maintainer: Allan McRae <allan@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>

pkgname=ncurses
pkgver=5.6
pkgrel=7
pkgdesc="A System V Release 4.0 curses emulation library"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/ncurses/ncurses.html"
license=('MIT')
groups=('base')
depends=('glibc')
source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz
        ftp://invisible-island.net/ncurses/${pkgver}/${pkgname}-${pkgver}-coverity.patch.gz)
md5sums=('b6593abe1089d6aab1551c105c9300e3'
         '27607b10fef869740cbcc408d86695b1')
options=(!makeflags)

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/libncursesw.so.5* ${pkgdir}/lib
  ln -sf ../../lib/libncursesw.so.5 ${pkgdir}/usr/lib/libncursesw.so  

  # 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 ; \
  done
  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/libcursesw.so
  echo "INPUT(-lncursesw)" >${pkgdir}/usr/lib/libcursesw.so
  ln -sf libncurses.so ${pkgdir}/usr/lib/libcurses.so
  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

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

Stage 2 - COMPLETE

The rest of base and base-devel:

dialog
gettext
grub  (Fix man and info directories)
less  (Not needed for i686)
nano  (Not needed for i686)
procinfo  (Fix man directory)
procps
psmisc  (Remove pidof cleanup)
texinfo
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]:

gpm
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)
netkit-telnet

Stage 4

Packages in [extra]:

DONE

aalib  (Fix info directory)
abook (Add md5sums.  Fix man directory)
afterstep  (Requires gnutls, libxml2)
alpine
alsa-utils  (Not needed for i686)
aspell
bc
blassic  (Requires patch for gcc-4.3 headers. Add arch array)
bs  (Add arch array)
bzflag  (Requires update to build)
cdargs  (Fix man directory)
cdcd  (Add arch array.  Fix man and info directories)
clisp
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)
ettercap
fortunelock  (Add arch array.  Add license.  Fix man directory)
freeciv  (Requires gnutls)
fvwm
fvwm-devel
gdb  (Fix man and info directories)
gftp
gnuchess  (Add arch array.  Add license.  Requires patch for gcc4)
gnome-terminal  (Not needed for i686)
gnugo
gnutls
gphoto2
gstreamer-good-plugins  (Requires aalib, gnutls, libxml2)
gutenprint  (Requires gnutls)
gvim  (Requires vim, gnutls)
hexedit  (Add md5sum.  Add license)
htop
hugs98  (Add license)
iptraf  (Add arch array.  Add license.  Fix man directory)
irssi
ispell
jack-audio-connection-kit
joe  (Fix man directory)
lame
lexter  (Add arch array. Fix man directory)
lftp
libcdio
libnjb
libxml2
lua
lynx  (Change md5sum for upstream -release5.  Fix man directory)
maxima  (Requires clisp.  Fix info 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)
multitail
mysql-clients
naim
ncftp  (Fix man directory)
ncmpc  (Fix man directory)
nethack  (Add arch array)
netris  (Add arch array.  Add md5sums.  Add license)
nph  (Requires termcap-compat.  Fix man directory)
ntp  (Fix install of ntpd, ntpdate, ntp.conf, ntp-client.conf.  Fix man directory)
octave  (Fix man and info directories)
openupsmart  (Not needed for i686)
pal  (Add arch array.  Add license)
pilot-link
pinentry  (Requires update and patch to build)
proftpd  (Requires patch to build)
postgresql-libs
r  (Not needed for i686)
ratpoison (Fix desktop install)
ruby  (Requires termcap-compat)
screen  (Fix man directory)\
sqlite2  (Add arch array.    Too lazy to add license...)
sqlite3
smbclient
swi-prolog
tcsh
termcap-compat  (Not needed for i686)
terminal  (Requires vte)
tin  (Fix man directory)
uml_utilities
unixodbc
vim  (Requires ruby)
vte  (Requires gnutls, libxml2)
w3m
wvstreams
xaos  (Requires aalib)
xfsdump  (Required version bump to find source)
xorg-server
xterm  (Fix man directory.  Too lazy to add license...)
zile
zsh  (Not needed for i686)
zsnes  (Add mesa to depends.  Fix man directory)

TODO

achessclock  (Source not found)
archboot  (Dependancies cannot be satisfied)
erlang  (Requires gnutls.  configure stalls "checking for JDK version 1.2...")
giftcurs  (Add arch array.  Source not found)
ghc  (Build fails.  Haven't tested whether version bump works)
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)
socat  (Build fails: make: makedepend: Command not found)
vice  (Build fails during install phase)
yabasic  (Add arch array.  Build failure)

Stage 5

Packages in [community]:

DONE

octave3

TODO

?

Voting

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