This happens because DECLARE_ZORBA_MODULE() uses a glob pattern to find
all .cpp files in the module's source directory. When you make a change
which adds new .cpp files, as you did here, it's unfortunately necessary
to re-run CMake. There's no way CMake can detect this change
automatically, so it doesn't build the new files. I tried doing your
experiment and was able to reproduce the bug (it actually gave a runtime
linking error after updating to r10491, but I'll put that down to an OS
difference). Then I tried it again but adding a call to "cmake" after
updating to r10491, and the query ran fine.

CMake recommends against using glob patterns for naming source files for
exactly this reason, but I couldn't think of any other way to make a
general-purpose DECLARE_ZORBA_MODULE() macro. I suppose it could take a
list of source files rather than doing a glob pattern... hard to know
whether this would be an ease-of-use improvement or not. What I
certainly will do, though, is update the documentation to indicate this
problem, and to instruct users to re-run CMake after adding any new .cpp
files.

** Changed in: zorba
       Status: New => Confirmed

** Tags added: doc

** Changed in: zorba
    Milestone: None => 2.1

** Changed in: zorba
   Importance: Undecided => Medium

** Summary changed:

- inconsistent build and install directories
+ doc: re-run CMake after adding module .cpp files

-- 
You received this bug notification because you are a member of Zorba
Coders, which is the registrant for Zorba.
https://bugs.launchpad.net/bugs/872386

Title:
  doc: re-run CMake after adding module .cpp files

Status in Zorba - The XQuery Processor:
  Confirmed

Bug description:
  I have refactored a few classes in the http_client module and brought the 
CMake build directory in an inconsistent state with the install directory. That 
is, running any query using the http-client module I got this error:
  zerr::ZXQP0028_TARGET_NAMESPACE_NOT_PROVIDED. And this without changing the 
module URI.

  This look like a problem in the cmake build system around the modules
  (in this case only internal ones) and the loading of those form the
  install/build directories.

  To solve this I had to delete from the build directory:
  - zorba_modules/zorba_http-client_module
  - modules
  and the install directory

  To replicate this, try:
  - build from lp:~gabipetrovay/zorba/cpp-xml-parsing rev. 10490
  - (n)make install
  - run a query from install directory and make sure that it runs (at r.10490 
you will get a segmentation fault but that is another problem and a sign that 
it find the module)
  - update to rev. 10491
  - run cmake and build again
  - (n)make install
  - now running the query again you should get: 
zerr::ZXQP0028_TARGET_NAMESPACE_NOT_PROVIDED
  - deleting the directories above will solve the problem

To manage notifications about this bug go to:
https://bugs.launchpad.net/zorba/+bug/872386/+subscriptions

-- 
Mailing list: https://launchpad.net/~zorba-coders
Post to     : zorba-coders@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zorba-coders
More help   : https://help.launchpad.net/ListHelp

Reply via email to