From Fedora Project Wiki

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. You can see the full list of packages that I maintain at:

https://admin.fedoraproject.org/pkgdb/users/packages/wart?acls=owner

An incomplete list grouped by category:

Tcl Packages

  • 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

Games

  • 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

WorldForge

  • 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

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)]