What is Projects

Projects is a MinGW and MSYS controlled installation allowing the user to specify a target for the installation that is project based.  It is possible with MinGW and MSYS to have several base environments where one can influence the environment of one project without influencing the environment of the other.  The installation creates a /usr/share/projects/PROJECTID directory where the project environment variables can be mapped as well as a todo action list maintained.  Messages can be created for the project team to see when they log into the system.

How Do I Use Projects

Download distribution zip file from, extract the files into a folder of your choosing, then execute proj_install.bat from a Windows command window.  You will be asked the drive letter and directory for the installation as well as the project id and project name.  The directory and project id should not contain spaces in the text.  After this the proj_install.bat file will install a version of mingw-get into the mingw directory of the install directory and execute a series of mingw-get install commands to install a base system.  It will also execute a bash shell script to create a /etc/fstab for MSYS that matches your given installation.  The script also creates a desktop icon for you to start your project by clicking the mouse.

Directory Structure

Assuming D: is the drive given and P is your installation directory giving D:\P the following directories will be created D:\P\home, D:\P\mingw, D:\P\msys, D:\P\tmp and D:\P\src.  These are all mapped in /etc/fstab to /home, /mingw, /msys, /tmp and /usr/src.  A file named D:\P\proj_start.bat is also created to setup initial environment variables and start MSYS.  Spaces in USERNAME variable are translated to the underscore (_) character so that MSYS will create /home/$USERNAME when first started.

The project control directory is created as /usr/share/projects/PROJECTID from within the MSYS environment.  A /etc/profile.d/ file is executed by the /etc/profile file that looks for /usr/share/projects/PROJECTID/projenv, /usr/share/projects/PROJECTID/message and /usr/share/projects/PROJECTID/todo and gives the user a review of actions and messages needing to occur.

Future Planning

I would like to develop Projects to give the project administration more tools to control the actions needing done as well as messages to the team.  Currently a user can type the todo command to see the list of actions but the todo file must be manually edited with an editor to modify it.  A database of actions would be a better fit perhaps using a modern scripting language like Python or perhaps Perl.

Copyright © 2011 Earnie Boyd

All rights reserved and no part of this document may be used without expressed written agreement.