{"id":17978604,"url":"https://github.com/ad-si/htk","last_synced_at":"2025-08-03T04:33:00.346Z","repository":{"id":142369413,"uuid":"170875615","full_name":"ad-si/htk","owner":"ad-si","description":"Graphical User Interfaces for Haskell Programs (Mirror)","archived":false,"fork":false,"pushed_at":"2019-02-15T14:15:15.000Z","size":25538,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T06:51:15.583Z","etag":null,"topics":["gui","haskell","tcl","tcl-tk","tcltk"],"latest_commit_sha":null,"homepage":"http://www.informatik.uni-bremen.de/htk/","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ad-si.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-15T14:14:30.000Z","updated_at":"2024-06-17T18:02:33.000Z","dependencies_parsed_at":"2024-04-07T18:15:25.996Z","dependency_job_id":null,"html_url":"https://github.com/ad-si/htk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ad-si/htk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ad-si%2Fhtk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ad-si%2Fhtk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ad-si%2Fhtk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ad-si%2Fhtk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ad-si","download_url":"https://codeload.github.com/ad-si/htk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ad-si%2Fhtk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268495882,"owners_count":24259397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","haskell","tcl","tcl-tk","tcltk"],"created_at":"2024-10-29T17:34:30.553Z","updated_at":"2025-08-03T04:32:59.584Z","avatar_url":"https://github.com/ad-si.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"This directory contains Uni, the central part of the UniForM workbench.\nThe source of Uni and the MMiSS Workbench is in the following directories,\nwhich are listed in the order they are compiled.\n\n\n   directory    |  contents\n\n   mk           |  Makefile magic which set up default rules and variables\n   util         |  Miscellanous Haskell functions used all over Uni\n   events       |  Events, providing a way for concurrent events to\n                |  communicated\n   reactor      |  Miscellaneous things for running processes and tools\n   posixutil    |  Various utilities that only work under Posix.\n   htk          |  This is an encapsulation of Tcl/Tk in Haskell\n                |  See htk/examples for a few short introductory examples.\n                |  The htk code is divided among several sub-directories.\n   server       |  Stuff for client-server relationships\n   graphs       |  General framework for shared graphs.\n   davinci      |  This is an encapsulation of uDra(Graph) in Haskell\n   simpledb     |  A very simple database system.\n   imports      |\n   types        |  Repository\n   emacs        |  Contains the code for editing MMiSS objects with XEmacs\n   mmiss/parser |  (Un)Parses LaTeX sources for MMiSS objects.\n   mmiss        |  General code for MMiSS objects.\n   mmiss/api    |  Code for interfacing MMiSS via an API\n\nRequirements for compiling UniForM\n----------------------------------\n\nAt the moment, the Uni sources and the MMiSS workbench have been\nsuccessfully compiled on Linux/x86. Microsoft Windows XP (running\nMinGW),  Sparc Solaris, and MacOS Darwin should work, too.\nThe HTk part also used to work on FreeBSD.\n\nThe following things are specifically required if you want to compile\neverything.  If you just want HTk, you only need (1)-(3).  If you just want\nHTk + uDraw(Graph), you only need (1)-(4).\n\n(1) Glasgow Haskell. http://www.haskell.org/ghc/\n\n    This release specifically requires version 6.10.x or 6.12.x\n\n(2) A standard Unix-ish environment.  On\n    Linux/Solaris/MacOS Darwin/FreeBSD this is a given.  On Windows there is\n    a choice between MinGW and Cygwin, both of which provide you with\n    Unix-like shells, gcc, libraries, and so on.  For compiling the Workbench,\n    I recommend MinGW, which seems to be simpler than Cygwin, and friendlier\n    about working with other (non MinGW/Cygwin) programs.  MinGW is also, by\n    the way, capable of compiling GHC.  You can get it from\n\n       http://www.mingw.org\n\n    You will need at least MSYS, MinGW and the MSYS Developer Tool Kit.\n    You will probably also want TclTK (for (3).\n\n    However Cygwin (http://www.cygwin.com) may well work as well.\n\n(3) Tcl/Tk.  htk uses the (very common) \"wish\" program for all its basic user\n    interaction.  Typing \"wish\" at your command prompt should produce\n    a small empty window called \"wish\" if you have it (typing \"exit\" will\n    then allow you to escape).  If you don't have it, you should be able to\n    find somewhere to download it from\n\n       http://www.tcl.tk\n\n    If you want another look-and-feel, try tixwish\n    ( http://tix.sourceforge.net ).\n\n(4) uDraw(Graph) formerly daVinci.  This is what the Workbench uses to\n    display graphs. You can get version 3.1.1 from\n\n       http://www.informatik.uni-bremen.de/uDrawGraph\n\n(5) The Berkeley Database is used for all storage by the repository.\n    You can get this from\n\n       http://www.sleepycat.com\n\n    I recommend using the option --disable-shared when you compile it,\n    since that will prevent you needing to the BDB shared library around\n    when you run executables.\n\n    Thus in BDB's directory [BDB source]/build-unix, you might use\n    the command\n\n       ../dist/configure --disable-shared\n\n    configure has other useful, sometimes essential, options, which\n    you can find out by type\n\n       ../dist/configure --help\n\n    For example if you are using MinGW, you need the --enable-mingw option;\n    if you want the compiled code to go somewhere other than the standard\n    system locations (for example, because you don't have administrator\n    permissions on your machine) you will need --prefix, and so on.\n\n    Versions of BDB including 4.1.25, 4.2.52, and 4.3.21 have all been\n    found to work with the Workbench.  You do not need a version with\n    cryptography.\n\n    The Workbench still needs to be able to FIND the BDB files, if they\n    are not installed in the standard place.  You can tell it either\n    by setting the environment variable BDBDIR, or by giving UniForM's\n    ./configure script an option --with-bdb=[directory path].\n\n(6) XEmacs.  This is used directly by the Workbench for editing objects.\n    At the moment I am using XEmacs 21.4 patch 8, but I've had no\n    trouble with other versions which are slightly earlier or slightly later.\n    Do not, however, expect normal GNU Emacs to work, as it won't.\n    (This is mainly because we make heavy use of XEmacs' extent mechanism.\n    GNU Emacs has a similar mechanism, but it has a different interface.\n    Anyone wishing to convert uni/emacs/extents.el to GNU Emacs is welcome\n    to try.)   You can get XEmacs from\n\n       http://www.xemacs.org\n\n    The Workbench communicates with XEmacs using the \"gnuserv\".\n    This needs to be enabled from XEmacs. You can do this by running\n    the Lisp command \"(gnuserv-start)\" within XEmacs.  Alternatively you\n    can add the same command to your .xemacs/init.el so that it is run\n    every time XEmacs start.\n\n    Annoyingly, there are some releases of XEmacs which do not include\n    gnuserv, in particular the Netinstaller version of XEmacs currently\n    available for Windows.  I have however been able to get an XEmacs working\n    with gnuserv on Windows by compiling the Netinstaller version with a\n    version of gnuclient/gnuserv compiled from source.  For the latter, I\n    followed the instructions for compiling XEmacs on cygwin, but instead\n    of compiling all the XEmacs sources I just went to the xemacs-21.4.5/\n    directory, ran ./configure (following carefully the instructions here\n\n       http://www.xemacs.org/Documentation/21.5/html/xemacs-faq_3.html#SEC76\n\n    ), and then went into lib-src directory and typed \"make\".  This saves\n    you the bother of compiling all the rest of XEmacs, which you don't want,\n    since the Netinstaller version has them.  Make sure when you've done that\n    that the cygwin1.dll file is where you keep DLLs on your Windows system\n    (such as C:\\WINDOWS\\SYSTEM), that gnuserv.exe is where your Netinstaller\n    version of XEmacs can find it (look for mmencode.exe and put it in the\n    same directory), and that gnuclient.exe is on your PATH.  Yes, as I said\n    it's annoying.\n\n(7) To run the Workbench and TeX the output, you will need MMiSS TeX.  This is\n    *not* currently in the public domain.  However assuming you have it,\n    and have configure'd it, UniForM again needs to know where to find it.\n    It will guess /usr/local/MMISS/tex, but if MMiSS-LaTeX is not there\n    you can specify its location with the environment variable MMISSLATEXDIR,\n    or by a ./configure option --with-MMiSS-LaTeX=[MMiSS-LaTeX directory]).\n    (The name of this directory will most likely end \"MMISS/tex\".)\n\n    If you don't have MMiSS TeX, you can still compile and run the Workbench,\n    but won't be able to TeX anything.\n\nOf course you also need the sources to Uni!  They should be with this\nREADME file, but in case they are not, or in case you want to update\nyour copies, here are details.  The Uni sources are kept in a\npublicly accessible SVN repository at svn-agbkb.informatik.uni-bremen.de.\n\nSo for example to get a complete set of the latest version of the sources you\ntype (in bash or sh)\n\n  svn co https://svn-agbkb.informatik.uni-bremen.de/uni/trunk uni\n\nThis will create a directory uni in your current directory containing\nthe latest sources for uni.\n\nWhat To Do Before Compiling\n----------------------------\n\n1) Do you want a debugging version of Uni?  By default you won't\n   get it. (grep for isDebug)\n\n2) How much do you want to compile?  The default is everything,\n   but you can give configure the option --enable-HTk, if all you\n   want to compile is HTk or --enable-Het if you just want to\n   compile the things needed for Hets (HTk + uDraw(Graph)).\n   If ./configure can't find the files it needs it may decide not\n   to compile everything anyway; for example if it can't find\n   a Berkeley Data Base it will just compile HTk and uDrawGraph.\n\n3) The programs (ghc, wish, uDrawGraph, gnuclient) should\n   be in your PATH  when you run your applications\n   (./configure just checks them).\n   If you want to compile everything, you will also\n   need to tell ./configure where to find the Berkeley Data Base, see\n   (5) in the \"Requirements section\".\n\nCompiling\n---------\n\nOnce you've done all that, the following commands are supposed to do\nit, assuming that you are in the same directory as this README file\n(that is, at the top of the Uni distribution).  Here, and elsewhere in this\ndocument, I shall use \"gmake\" to mean \"whatever command corresponds to\nGNU make on your system\".  Other versions of make, such as that called \"make\"\non Solaris, do not work.\n\n# Configure the Makefiles\n./configure\n# Compile Uni\ngmake cabal\n\nCompiling the Emacs Lisp files\n------------------------------\n\nYou can compile the Emacs lisp files by starting the XEmacs server\n(see instructions above) and then typing\ngmake objsemacs\n\n\nOther Make targets for UniForM developers\n-----------------------------------------\n\nThe\n   ./configure\n   gmake cabal\nsequence described above is just if you want to build the whole thing from\nscratch.  Once you've done this, you may want to modify a file and then\nrecompile.\n\nThe Make targets described in this section all work in any directory of uni\nthat contains a Makefile.  If you use then in a subdirectory, they will only\napply to that subdirectory.  For example, if you have modified a file, you\ncan do\n   gmake cabal\nin the directory containing that file\n\nAs described in the next section \"Makefiles for uni\", source files are\ndivided into package files, test files and main files.  You can use\n   gmake testcabal\nto compile just the files you are interested in.  Of course, to compile\nthe test and main files, you should already have compiled the cabal packages.\n\nMakefiles for uni\n-----------------\n\nIn each subdirectory of uni there is a file Makefile.in.  If you want to\ncreate another new package you will need to copy this file.  It normally has\nthe following format:\n\n---- cut here --------------\nSRCS = foo1.hs foo2.hs foo3.lhs . . .\nPACKAGE = [package name]\nPACKAGES = package1 package2 . . .\n\ninclude @TOP@/mk/boilerplate.mk\n---- cut here --------------\n\nThus we have a list of variable settings (which may be in any order),\nthen we include the general Make magic.\n\nSRCS contains all the Haskell source files in this directory.\n   The Makefiles interpret these specially according to name.\n   Files with names of the type \"Test*.hs\" are test programs,\n      should contain a module Main, and will be compiled to an executable\n      with name \"test*\", or \"test*.exe\" on Windows, for example \"TestFoo.hs\"\n      will go to \"Foo\" or \"Foo.exe\"\n   Files with names \"Main*.hs\" are just the same\n      as files \"Test*.hs\", except that the final executable\n      is just called \"*\", so \"MainFoo.hs\" goes to \"Foo\".\n   All other files are package files.  They should contain a module with the\n      name of the file (so the file Foo.hs must contain the module Foo; the\n      module subdir/Bar.hs must contain the module Bar).\n\nPACKAGE is the name you want to give to the package contained in this\n   directory.  Normally this name begins with \"uni-\". This should be\n   specified if and only if the directory contains library files.\nPACKAGES is the list of packages you will need.  This includes\n   GHC packages (net and posix for example) and also UniForM packages\n   (like uni-htk).  You only have to give direct dependencies here; for\n   example uni-htk imports uni-util, so if you specify uni-htk, you do not\n   need uni-util.\n\nThe following variables also occur occasionally:\nSUBDIRS specifies a list of subdirectories of this directory also containing\n   Makefiles, into which we should recurse.\nSRCSC is like SRCS, but expects a list of C files.\n\nBasically SUBDIRS is currently used to create all cabal packages.\n\nAfter you've modified a Makefile.in, you should run\n   ./configure\n(from the top directory)\nfollowed by\n   gmake cabal\nto recompile the cabal packages.\n(Use \"ghc-pkg unregister\" to remove older or corrupt versions)\n\n\nOther Specific Issues for Windows (untested)\n---------------------------------\n\nIt is possible to specify the file names\ndirectly, by setting the environment variables UNIWISH, UNIDAVINCI and\nUNIGNUCLIENT to the location of the executables.  If they are in your PATH,\nyou can in fact just set them to \"wish\", \"uDrawGraph\" and \"gnuclient\".\n\nMore information about Make targets\n-----------------------------------\n\nMake targets are those names you put after \"gmake\", like \"cabal\"\nin the above instructions.\n\nMost Make targets can be used in any directory of the UniForM source\ncontaining a makefile, not just the top one.\n\n\"clean\" deletes all object files\n\nThere are some other targets, but you will have to look in mk/suffix.mk\nand Makefile.in to see what they are.\n\nOther Makefile Hacking\n----------------------\n\nThe file mk/local.mk (mentioned above) is included in every Makefile if\npresent, and can be used to change the options and provide extra targets.\n\nConclusion\n----------\n\nPlease report problems to chr.maeder@web.de.\n\nGood luck!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fad-si%2Fhtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fad-si%2Fhtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fad-si%2Fhtk/lists"}