Subject: Re: bug#29365: openmolar looking in /usr/share/openmolar

From: Chris Marusich <[email-masked]>
Date: Wed, 22 Nov 2017 01:35:59 -0800

Quiliro Ordonez Baca <[email-masked]> writes:

> When starting OpenMolar for the first time, it has an error when it
> creates the application database: 
>
> ERROR - error creating database tables
> Traceback (most recent call last):
>   File "/gnu/store/smx5rayf45ylqn59czjkvx2hcrl95p5x-openmolar-1.0.15-gd81f9e5/lib/python3.5/site-packages/openmolar/create_db.py", line 145, in create_tables
>     f = open(fp, "r")
> FileNotFoundError: [Errno 2] No existe el fichero o el directorio: '/usr/share/openmolar/resources/schema.sql'
>
> when it should look for the following file:
> /gnu/store/smx5rayf45ylqn59czjkvx2hcrl95p5x-openmolar-1.0.15-gd81f9e5/share/openmolar/resources/schema.sql
>
> The flaw in the definition is in:
> /gnu/store/smx5rayf45ylqn59czjkvx2hcrl95p5x-openmolar-1.0.15-gd81f9e5/lib/python3.5/site-packages/openmolar/settings/localsettings.py:    SHARE_DIR = os.path.join("/usr", "share", "openmolar")
>
> I do not know haw to fix it. Please instruct how to do it.

Based on your assessment, it looks like the problem is that the
application hard-codes the "/usr" directory path.

One solution for this problem is to replace that line of code in the
source with the correct path.  You can do this in the package definition
by using the substitute* macro provided by the (guix build utils)
module.  In fact, it looks like the current package definition for
openmolar already attempts to do this.  Run "guix edit openmolar" to
view the current package definition.

Perhaps you could modify the package definition to also replace the path
in localsettings.py?  You might also want to look around in the source
for other paths that need to be fixed (a command such as "grep -r /usr"
might be helpful).

For information on how to use substitute*, please refer to
guix/build/utils.scm in the Guix source tree.  For general information
on hacking on Guix, check the section titled "Contributing" in the
manual (e.g., run info '(guix) Contributing' in a terminal).

-- 
Chris