From Fedora Project Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Michael Thomas

I'm a Tcl developer who wants to see more of the popular Tcl extensions included in Fedora, as well as more high quality Games . As a Fedora Sponsor, I am willing to help other Tcl'ers and gamers through the Fedora sponsorship process. I have written Tcl packaging guidelines and maintain the packaging for a large number of games and Tcl extensions for both Fedora and EPEL, including:

  • tclhttpd - The Tcl web/application server
  • tclxml - XML parsing for Tcl
  • tcldom - DOM bindings for Tcl
  • tdom - Another DOM API for Tcl
  • tcllib - A library of utility modules for Tcl
  • tklib - A library of utility modules for Tk
  • tclsoap - SOAP support for Tcl
  • tkcon - Tcl console
  • itcl - A Tcl extension that adds object-oriented features to Tcl
  • itk - A Tk extension that adds object-oriented features and megawidget support to Tk
  • iwidgets - A set of megawidgets based on Itcl
  • tk-tktreectrl - Tree widget for Tk
  • tcl-tcldict - The 'dict' command backported from Tcl 8.5 to Tcl 8.4
  • tile - Theme support for the Tk widget library
  • bwidget - Extended widget set for Tk
  • memchan - Memory-based channels for Tcl
  • tclcompiler - Tcl bytecode compiler
  • tbcload - Tcl bytecoad loader
  • tclparser - Tcl syntax parser
  • tclchecker - Tcl syntax checker
  • tcldebugger - Tcl debugging library
  • tclpro - Tcl development and debugging GUI
  • spr - Statistical Pattern Recognition
  • nsca - Nagios Service Check Adapter
  • xpilot-ng - An addictive multiplayer space game
  • tong - Another game
  • neverball - 3D game
  • abe - old-school C-64 style side scrolling game
  • freedroidrpg - A Tux-based rpg game
  • rogue - A classic roguelike game
  • ularn - Yet another roguelike game
  • prboom - GPL DOOM game engine
  • freedoom - Freely redistributable replacement game files for DOOM
  • freedoom-freedm - Deathmatch levels for freedoom
  • yadex - doom level editor
  • deutex - Doom wad manipulator
  • bsd-games - A collection of classic text-based games
  • crossfire - A mutliplayer network RPG game server
  • crossfire-client - Client applications for crossfire
  • crossfire-maps - Map files for crossfire
  • wormux - Clone of the popular 'Worms' game
  • guichan - 3D graphics and widget library
  • compat-guichan05 - compatibility libraries for guichan-0.5
  • manaworld - 2D MMORPG
  • manaworld-music - Music for the manaworld game
  • atlascpp - WorldForge message protocol
  • skstream - WorldForge IO library
  • libmodelfile - library for accessing various 3d model file formats
  • eris - Client-side session layer for atlascpp
  • mercator - Terrain library for WorldForge applications
  • sage - OpenGL extensions library using SDL
  • varconf - WorldForge configuration library
  • wfmath - WorldForge math library
  • wfut - WorldForge updater tool
  • cyphesis - WorldForge game server
  • sear - WorldForge client
  • sear-media - media files for sear

Pending contributions waiting for approval:

  • None

Future contributions still being packaged:

  • tclxslt - XSLT processing library for Tcl
  • ember - Another WorldForge client

Personal Fedora bookmarks

Spec file tricks for copy-and-paste

  • To convert a file from some encoding to UTF-8
iconv --from=ISO-8859-1 --to=UTF-8 file.txt > file.txt.new
  • To remove DOS line endings from a file in-place
sed -i 's/\r//' file.txt
  • Give a desktop icon a transparent background and convert to png
BuildRequires: ImageMagick
...
convert -transparent black njamicon.ico %{name}.png
  • Preserve the timestamp on a patched autotools source file to prevent unnecessary triggering of autoconf/automake/etc.
touch -r configure.ac configure.ac.stamp
%patch0 -p0
touch -r configure.ac.stamp configure.ac
  • %pre/%post scripts for managing an init.d script
%pre
user_uid=<code>id -u crossfire 2>/dev/null</code>
if [ x"$user_uid" = x ]  ; then
%{_sbindir}/fedora-useradd  27 -r -s /sbin/nologin \
-d %{_datadir}/%{name} -M -c 'Crossfire Server' \
crossfire >/dev/null || :
fi

%post
/sbin/chkconfig --add crossfire

%preun
if [ "$1" -le "0" ] ; then
/sbin/service crossfire stop > /dev/null 2>&1
/sbin/chkconfig --del crossfire
fi

%postun
if [ "$1" -ge "1" ] ; then
/sbin/service crossfire condrestart >/dev/null 2>&1
fi
  • spec file header for defining tcl package directories
%{!?tcl_sitearch: %define tcl_sitearch %{_libdir}/tcl%(echo 'puts $tcl_version' | tclsh)}
%{!?tcl_sitelib: %define tcl_sitelib %{_datadir}/tcl%(echo 'puts $tcl_version' | tclsh)}

[[MailTo(wart AT kobold DOT org)]