Ask Reuben

License Controller (fglWrt)

What is the License Controller? 

Why do I need to update the License Controller?

What is Patching the License Controller?

If you look in $FGLDIR/bin, you will see in amongst fglcomp, fglform, fglrun, a script/executable named “fglWrt“.  fglWrt is known as the “License Controller“.  I don’t know why fglWrt has a capital W in its name.

The License Controller is called by the compilation and runner programs to verify that the installation is correctly licensed and that the compilation and runner programs can execute.  It reads the license configuration by reading either fglprofile (prior to 4.00) or from FGL 4.00/FLM 6.00 a new file fgllicense.

If the license has been licensed locally, fglWrt examines the installed license and allows the compilation and runner script to execute.   You may also be aware that fglWrt is the command executed with various arguments at the command line to install and manage the license locally.

If the FourJs License Manager is in use then fglWrt communicates with the license manager daemon process (flmprg) to determine if the compilation and runner script are allowed to execute.  In this instance the communication is …

fglcomp/fglrun ---(1)--> fglWrt --------- flmprg

fglcomp/fglrun --------- fglWrt ---(2)--> flmprg

fglcomp/fglrun --------- fglWrt <--(3)--- flmprg

fglcomp/fglrun <--(4)--- fglWrt --------- flmprg
  1. fglcomp/fglrun calls fglWrt to determine if it can compile/execute
  2. fglWrt communicates with the license manager daemon (flmprg) and asks if this process can compile/execute
  3. flmprg returns a response to fglWrt
  4. fglWrt passes the response onto fglcomp/fglrun

The protocol used for communication between fglcomp/fglrun and fglWrt is very static and stable.

The protocol and information that is passed between fglWrt and flmprg is more subject to change as extra functionality is added to the licensing mechanism.

For this reason, you will observe that if you run "fglWrt -V" you should get a version number returned that is not the same as the result of fglcomp -V / fglrun -V but instead is the same or similar to the result of "flmprg -V".    For instance with FGL 3.20.13, if you run fglWrt -V you might get a result  5.20.17.  (the fact that 20 is the same is a coincidence).

If you upgrade the Four Js License Manager or want an older version of FGL to communicate the Four Js License Manager, you typically have to "Patch the License Controller" so that both sides of the communication are using the same protocol.

To determine if you need to "Patch The License Controller",  compare the output of fglWrt -V and flmprg -V, ideally the two version numbers in the format X.Y.Z are the same.  If the Z number if different e.g. 5.20.16 vs 5.20.17 then you should be ok (this is similar to a situation where the GDC and FGL version numbers vary only by the Z number).  If the X or Y numbers are different e.g. 5.19.16 vs 5.20.17 then you definitely should "Patch the License Controller".

The process of patching the License Controller effectively replaces the copy of fglWrt shipped with a fgl package with a newer version.  If you look in the downloads area of the website, where you download the license manager, you will also see an an entry for the License Controller, as the following screenshot shows ...

... this is a zip file and all that is required as per the instructions here is to uncompress this file in the FGLDIR directory (or GREDIR in the case of the Genero Report Writer).  To understand what it is replacing, uncompress the zip file in another directory and note what it contains.  The important thing is that in the bin directory there will be a newer fglWrt.

After patching the License Controller, if you execute fglWrt -V, you should see that the version number has gone up and should now match the version number of flmprg.

This patching the License Controller is something you will most likely encounter in a development environment.  You maybe using the Four Js License Manager to share your development license across many different Genero versions.  If you update the Four Js License Manager then you should patch the license controller on the many different Genero versions you have installed so that they can communicate effectively with the newer version of the Four Js License Manager.