weekdaze-0.0.0.1: README.markdown
# **WeekDaze**
[](https://travis-ci.org/functionalley/WeekDaze)
[](https://hackage.haskell.org/package/weekdaze)
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://haskell.org)
This is "**WeekDaze**", an application which searches for solutions to the [school-timetable](https://en.wikipedia.org/wiki/School_timetable) problem.
It can read problem-specifications either from a relational database or from an **XML**-file.
## Installation
* It can be built and installed using [Cabal](https://www.haskell.org/cabal/users-guide/installing-packages.html).
* Configuration can be read by either from a local [XML](https://en.wikipedia.org/wiki/XML)-file using the Haskell package [hxt](https://hackage.haskell.org/package/hxt),
or by establishing database-connectivity using one or more of the database-backend Haskell packages "[HDBC-odbc](https://hackage.haskell.org/package/HDBC-odbc)" & "[HDBC-mysql](https://hackage.haskell.org/package/HDBC-mysql)", & this affects how the product should be built.
* In order to connect to an arbitrary type of [RDBMS](https://en.wikipedia.org/wiki/Relational_database_management_system), **HDBC-odbc** should be installed,
but when connecting specifically to [MySQL](https://www.mysql.com/), one can alternatively install **HDBC-mysql** (which is slower).
* Before building these database-backend Haskell packages on GNU/Linux the following prerequisites must be observed:
+ **HDBC-odbc**: requires the development version of the package "[unixODBC](https://www.unixodbc.org/)".
+ **HDBC-mysql**: requires either "**libmariadb-devel**" or the development version of the package "**libmysqlclient**".
CAVEAT: **HDBC-mysql-0.6.6.1** is rather picky about the versions of other Haskell packages.
* Before using ODBC to establish database-connectivity:
+ An appropriate driver for the type of RDBMS, e.g. [MyODBC-unixODBC](https://en.wikipedia.org/wiki/MySQL_Connector/ODBC) for **MySQL**, must be installed.
+ A system-wide configuration-file "**odbcinst.ini**" must be created to define the above database-driver,
& a configuration-file "**.odbc.ini**" must be created to define the available [DSN](https://en.wikipedia.org/wiki/Data_source_name)s.
These files are described for a various types of DBMS in [odbcinst](https://www.unixodbc.org/odbcinst.html) & for **MySQL** in [MySQL Connector/ODBC](https://dev.mysql.com/doc/connector-odbc/en/) (examples for the latter case are included in this package).
* An initial **MySQL**-database can be constructed using the packaged SQL-files.
## Documentation
The documentation is in "**man/**".
## Examples
The directory "**xml/**" contains example-configurations and the directory "**xhtml/**" contains the corresponding solutions.
The packaged SQL-files contain the same example-configurations.
## License
For information on copying and distributing this package, see the file "**LICENSE**" in this directory.
## Bug-reporting
Bug-reports should be emailed to <weekdaze@functionalley.com>.
## Testing
The test-suite can be run using:
cabal configure --enable-tests;
cabal build;
cabal test --show-details=always;
## Author
This application is written and maintained by Dr. Alistair Ward.