Loading ...
Sorry, an error occurred while loading the content.

ES7.3 - WinXP 32bit - VD77 error when trying to use precompiled libraries.....

Expand Messages
  • paulg_ca
    Greetings, ... Error Code: VD77 Configuration error: general error durning the loading of the configuration of a precompile. What to do: fix the error in the
    Message 1 of 4 , Aug 1, 2013
    • 0 Attachment
      Greetings,

      I am having a issue with EiffelStudio 7 (7.3.9.2766 GPL Edition) on Windows XP (32bit). I don't have this issue with ES 7.3 (x64) on Windows 7. When I try to use a pre-compiled library (base_pre) during a compile, ES fails with the error code:

      ----------------------
      Error Code: VD77

      Configuration error: general error durning the loading of the configuration of a precompile.
      What to do: fix the error in the precompile configuration file.

      Could not open file: \base.ecf
      -------------------------------

      By the way, I am just using the basic Hello World default project.

      In my precompile project settings, the location setting for base_pre is "$ISE_PRECOMP\base.ecf". But from the error listed above, it is as if ES is dropping the $ISE_PRECOMP variable.

      Here is my default .ecf file...

      ======= default.ecf =======
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <system xmlns="http://www.eiffel.com/developers/xml/configuration-1-5-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-5-0 http://www.eiffel.com/developers/xml/configuration-1-5-0.xsd" name="$system_name" uuid="$uuid">
      <target name="$system_name">
      <root feature="$root_class_feature" class="$root_class_name"/>
      <option warning="true">
      <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
      </option>
      <setting name="console_application" value="true"/>
      <precompile name="base_pre" location="$ISE_PRECOMP/base.ecf"/>
      <library name="espec" location="$ISE_LIBRARY/contrib/library/testing/framework/espec/library/espec.ecf"/>
      <library name="base" location="$ISE_LIBRARY/library/base/base.ecf"/>
      <cluster name="$root_cluster_name" location=".\" recursive="true">
      <file_rule>
      <exclude>/EIFGENs$</exclude>
      <exclude>/.svn$</exclude>
      <exclude>/CVS$</exclude>
      </file_rule>
      </cluster>
      </target>
      </system>
      ======= default.ecf =======

      Here is my registry settings

      ===============================
      Windows Registry Editor Version 5.00

      [HKEY_LOCAL_MACHINE\SOFTWARE\ISE\Eiffel73]
      "ISE_EIFFEL"="C:\\Eiffel73"
      "ISE_C_COMPILER"="msc"
      "ISE_PLATFORM"="windows"
      "ISE_LANG"="en_US"
      "ISE_PROJECTS"="Z:\\Projects\\Eiffel73"
      "ISE_PRECOMP"="C:\\Eiffel73\\precomp\\spec\\windows"

      [HKEY_LOCAL_MACHINE\SOFTWARE\ISE\Eiffel73\finish_freezing]
      "ISE_CFLAGS"=""
      "ISE_SHAREDLIBS"=""

      [HKEY_LOCAL_MACHINE\SOFTWARE\ISE\Eiffel73\wizards]
      "ISE_PROJECTS"="Z:\\Projects\\Eiffel73"
      ==================================


      I fired up Process Monitor from Microsoft and as you can see from the CSV dump below, ec.exe reads the right value from the registry but then it tries to read the base.ecf file from the root of the C: drive. It totally forgets about ISE_PRECOMP.

      ====Logfile.CSV=====
      "Time of Day","Process Name","PID","Operation","Path","Result","Detail"
      "12:23:54.5540097 PM","ec.exe","668","RegOpenKey","HKLM","SUCCESS","Desired Access: Maximum Allowed"
      "12:23:54.5540454 PM","ec.exe","668","RegOpenKey","HKLM\Software","SUCCESS","Desired Access: Read"
      "12:23:54.5540829 PM","ec.exe","668","RegCloseKey","HKLM","SUCCESS",""
      "12:23:54.5540974 PM","ec.exe","668","RegOpenKey","HKLM\SOFTWARE\ISE","SUCCESS","Desired Access: Read"
      "12:23:54.5541323 PM","ec.exe","668","RegCloseKey","HKLM\SOFTWARE","SUCCESS",""
      "12:23:54.5541466 PM","ec.exe","668","RegOpenKey","HKLM\SOFTWARE\ISE\Eiffel73","SUCCESS","Desired Access: Read"
      "12:23:54.5541820 PM","ec.exe","668","RegCloseKey","HKLM\SOFTWARE\ISE","SUCCESS",""
      "12:23:54.5541971 PM","ec.exe","668","RegQueryValue","HKLM\SOFTWARE\ISE\Eiffel73\ise_precomp","SUCCESS","Type: REG_SZ, Length: 66, Data: C:\Eiffel73\precomp\spec\windows"
      "12:23:54.5542200 PM","ec.exe","668","RegQueryValue","HKLM\SOFTWARE\ISE\Eiffel73\ise_precomp","SUCCESS","Type: REG_SZ, Length: 66, Data: C:\Eiffel73\precomp\spec\windows"
      "12:23:54.5542547 PM","ec.exe","668","RegCloseKey","HKLM\SOFTWARE\ISE\Eiffel73","SUCCESS",""
      "12:23:54.5546212 PM","ec.exe","668","CreateFile","C:\Eiffel73\precomp\spec","SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory$
      "12:23:54.5546715 PM","ec.exe","668","QueryDirectory","C:\Eiffel73\precomp\spec\windows","SUCCESS","Filter: windows, 1: windows"
      "12:23:54.5547385 PM","ec.exe","668","CloseFile","C:\Eiffel73\precomp\spec","SUCCESS",""
      "12:23:54.5550891 PM","ec.exe","668","CreateFile","C:\","SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-$
      "12:23:54.5551179 PM","ec.exe","668","QueryDirectory","C:\base.ecf","NO SUCH FILE","Filter: base.ecf"
      "12:23:54.5551458 PM","ec.exe","668","CloseFile","C:\","SUCCESS",""
      ========


      If I set ISE_PRECOMP as a Windows environmental variable and try to compile the project with ES, my compile works. If I replace $ISE_PRECOMP\base.ecf in the project settings with "C:\Eiffel73\precomp\spec\windows\base.ecf" everything works.

      So it looks like ES can't keep track of the data it reads from the registry.....


      Thank You
      Paul
    • Emmanuel Stapf
      This is hard to tell why the value computed by EiffelStudio to find the precompiled libraries gets truncated to an empty path. Are you sure that your other
      Message 2 of 4 , Aug 2, 2013
      • 0 Attachment
        This is hard to tell why the value computed by EiffelStudio to find the precompiled
        libraries gets truncated to an empty path. Are you sure that your other machine is
        configured in the exact same manner?

        Also why do you set ISE_PRECOMP?

        Manu
      • paulg_ca
        ... Hi Manu, I am fairly sure the other machine is configured the same, it is a automated install and there isn t much difference between the two scripts. We
        Message 3 of 4 , Aug 2, 2013
        • 0 Attachment
          --- In eiffel_software@yahoogroups.com, "Emmanuel Stapf" <manus@...> wrote:
          >
          > This is hard to tell why the value computed by EiffelStudio to find the precompiled
          > libraries gets truncated to an empty path. Are you sure that your other machine is
          > configured in the exact same manner?
          >
          > Also why do you set ISE_PRECOMP?
          >
          > Manu
          >

          Hi Manu,

          I am fairly sure the other machine is configured the same, it is a automated install and there isn't much difference between the two scripts.

          We set ISE_PRECOMP so that EiffelStudio can find our precompiled libraries. For the students who will be using EiffelStudio, it means they avoid having to do the pre-compiling themselves. Is there a better way I should be doing this? Should I be setting any ISE_* variables manually ?

          I am going to do some more digging.

          Thank You
          Paul
        • paulg_ca
          ... I ended up setting my pre-compile location to $ISE_EIFFEL/precomp/spec/windows/base.ecf which works and allows me to support multiple versions of
          Message 4 of 4 , Aug 6, 2013
          • 0 Attachment
            --- In eiffel_software@yahoogroups.com, "paulg_ca" <paulg_ca@...> wrote:
            >
            >
            >
            > --- In eiffel_software@yahoogroups.com, "Emmanuel Stapf" <manus@> wrote:
            > >
            > > This is hard to tell why the value computed by EiffelStudio to find the precompiled
            > > libraries gets truncated to an empty path. Are you sure that your other machine is
            > > configured in the exact same manner?
            > >
            > > Also why do you set ISE_PRECOMP?
            > >
            > > Manu
            > >
            >
            > Hi Manu,
            >
            > I am fairly sure the other machine is configured the same, it is a automated install and there isn't much difference between the two scripts.
            >
            > We set ISE_PRECOMP so that EiffelStudio can find our precompiled libraries. For the students who will be using EiffelStudio, it means they avoid having to do the pre-compiling themselves. Is there a better way I should be doing this? Should I be setting any ISE_* variables manually ?
            >
            > I am going to do some more digging.
            >
            > Thank You
            > Paul
            >

            I ended up setting my pre-compile location to "$ISE_EIFFEL/precomp/spec/windows/base.ecf" which works and allows me to support multiple versions of EiffelStudio.

            Cheers,
            Paul
          Your message has been successfully submitted and would be delivered to recipients shortly.