Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-68608

RCC? mangled incorrectly filename with number on it causing mangled qmlcache_loader.cpp definitions

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.11.2
    • 5.11.0
    • QML: Compiler
    • None
    • Windows 10 Enterprise 1803 x64.
      Visual Studio 2017 15.7.3.
      Self Compiled QT 5.11 branch from git (shared x64).
      QTCreator 4.6.2 from the git.

    Description

      I am trying to compiling qBittorrent latest Master branch from the github and currently stuck with rcc? outputting mangled filename definition if the filename inside the .qrc has version number on it.

      For example in qBittorrent webui.qrc it has the following content :

      // <RCC>
      <qresource prefix="/">
      <file>www/private/about.html</file>
      <file>www/private/addtrackers.html</file>
      <file>www/private/confirmdeletion.html</file>
      <file>www/private/css/Core.css</file>
      <file>www/private/css/dynamicTable.css</file>
      <file>www/private/css/Layout.css</file>
      <file>www/private/css/style.css</file>
      <file>www/private/css/Tabs.css</file>
      <file>www/private/css/Window.css</file>
      <file>www/private/download.html</file>
      <file>www/private/downloadlimit.html</file>
      <file>www/private/filters.html</file>
      <file>www/private/index.html</file>
      <file>www/private/newcategory.html</file>
      <file>www/private/preferences.html</file>
      <file>www/private/preferences_content.html</file>
      <file>www/private/properties.html</file>
      <file>www/private/properties_content.html</file>
      <file>www/private/rename.html</file>
      <file>www/private/scripts/client.js</file>
      <file>www/private/scripts/contextmenu.js</file>
      <file>www/private/scripts/download.js</file>
      <file>www/private/scripts/dynamicTable.js</file>
      <file>www/private/scripts/lib/clipboard.min.js</file>
      <file>www/private/scripts/lib/excanvas-compressed.js</file>
      <file>www/private/scripts/lib/mocha-yc.js</file>
      <file>www/private/scripts/lib/mootools-1.2-core-yc.js</file>
      <file>www/private/scripts/lib/mootools-1.2-more.js</file>
      <file>www/private/scripts/lib/parametrics.js</file>
      <file>www/private/scripts/misc.js</file>
      <file>www/private/scripts/mocha-init.js</file>
      <file>www/private/scripts/progressbar.js</file>
      <file>www/private/scripts/prop-files.js</file>
      <file>www/private/scripts/prop-general.js</file>
      <file>www/private/scripts/prop-trackers.js</file>
      <file>www/private/scripts/prop-webseeds.js</file>
      <file>www/private/setlocation.html</file>
      <file>www/private/shareratio.html</file>
      <file>www/private/statistics.html</file>
      <file>www/private/transferlist.html</file>
      <file>www/private/upload.html</file>
      <file>www/private/uploadlimit.html</file>
      <file>www/public/css/login.css</file>
      <file>www/public/login.html</file>
      <file>www/public/scripts/lib/mootools-1.2-core-yc.js</file>
      </qresource>
      </RCC>
      

      From above full content of webui.qrc pay attention into 3 fillename which has version number on it  :

      <file>www/private/scripts/lib/mootools-1.2-core-yc.js</file>
      <file>www/private/scripts/lib/mootools-1.2-more.js</file>
      <file>www/public/scripts/lib/mootools-1.2-core-yc.js</file>
      

      The rcc? outputting the following excerpt from the qmlcache_loader.cpp

      namespace _www_private_scripts_lib_mootools_1_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      namespace _www_public_scripts_lib_mootools_1_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      namespace _www_private_scripts_lib_mootools_1_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      
      

      As you can see above it seems that rcc? has problems with files which has number dot number in it's filename. Also "_core_js" and "_more_js" naming inside the qmlcache_loader.cpp being deleted by the rcc?.

       

      And of course QT projects compilation will failed with the following error example :

      release\qmlcache_loader.cpp(185): error C2374: 'QmlCacheGeneratedCode::_www_private_scripts_lib_mootools_1_js::unit': redefinition; multiple initialization
      

       

      Above example could be become like these if i am not mistaken?

      namespace _www_private_scripts_lib_mootools_1_2_core_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      namespace _www_public_scripts_lib_mootools_1_2_core_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      namespace _www_private_scripts_lib_mootools_1_2_more_js { 
      extern const unsigned char qmlData[];
      const QQmlPrivate::CachedQmlUnit unit = {
      reinterpret_cast<const QV4::CompiledData::Unit*>(&qmlData), nullptr, nullptr
      };
      }
      

      Thanks for reading, i hope it will be fixed soon.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            shausman Simon Hausmann
            echelon Aditya Nugraha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes