[libmarpa-r2-perl] 01/06: Add doc re shared library testing
Jonas Smedegaard
dr at jones.dk
Sat May 17 21:24:18 UTC 2014
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag Marpa-R2-2.085_005
in repository libmarpa-r2-perl.
commit 85d24cc0f75d4e8155e17a9214c334d1d211277a
Author: Jeffrey Kegler <JKEGL at cpan.org>
Date: Sun Apr 27 11:09:20 2014 -0700
Add doc re shared library testing
---
cpan/etc/README_shared_test.txt | 72 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/cpan/etc/README_shared_test.txt b/cpan/etc/README_shared_test.txt
new file mode 100644
index 0000000..8e9b963
--- /dev/null
+++ b/cpan/etc/README_shared_test.txt
@@ -0,0 +1,72 @@
+I've added the ability to test external shared libraries to Marpa::R2.
+
+Note the primary intent is to test *external* shared libraries in
+arbitrary places, so by default the test fails because it cannot find a
+shared library. This behavior may be a little perplexing if you stumble
+into it by accident, because in the course of setting up shared library
+testing, you do need to create one.
+
+Doesn't let "principle of least surprise" dictate that Marpa::R2
+by default find the shared library it created? Here I invoke the
+"principle of least dangerous surprise". Forcing the user to specify
+explicitly which shared library minimizes the risk that he is testing
+against the wrong library, and usually the test results from the shared
+library inside Marpa::R2 will *not* be those of interest.
+
+Here are the details. (I am assuming a Linux environment.)
+
+1.) In the Marpa::R2 cpan directory:
+
+ rm -r blib_shared libmarpa_shared
+
+This step is optional, and assures you a clean environment.
+
+2.) In the Marpa::R2 cpan directory:
+
+ ./Build code --libmarpa-shared=1
+
+3.) To test you need to tell the system where to find the shared library
+that you are interested in. It does *not* assume that it is the one you've
+just built. This is done differently on different systems, but in Linux
+this works:
+
+ LD_LIBRARY_PATH=$HOME/stage/libmarpa_dist/.libs ./Build test --libmarpa-shared=1
+
+LD_LIBRARY_PATH tells Linux where to look for additional shared libraries.
+If LD_LIBRARY_PATH were not specified the test would fail.
+
+4.) If you really want to test the library that was built in step 2, you
+have to find it and point the library search path to it. Currently it is
+in libmarpa_shared/.libs in the cpan directory and so this works on Linux:
+
+ LD_LIBRARY_PATH=libmarpa_shared/.libs ./Build test --libmarpa-shared=1
+
+Note 1: You can't install the shared library that Marpa::R2 creates.
+This is a feature. To create a shared library for installation, you
+should copy the libmarpa distribution outside the Marpa::R2 directory
+structure, make the needed changes, (for example, you may need to convert
+libmarpa's version number to some new scheme), and then copy it to the
+destination you've picked.
+
+Note 2: In the "--libmarpa-shared=1" flag, the assignment to 1 is necessary.
+Otherwise Module::Build assumes that you've set "libmarpa-shared" to undefined.
+
+Note 3: To be sure you are actually testing the library you hope you
+are testing, libmarpa now has a "tag", which can be set at compile
+time and which can identify every compilation uniquely. By default,
+if you compile with GCC, the tag is a time stamp, recording when the
+preprocessor was run. You can also set the tag explicitly:
+
+ ./configure MARPA_DEBUG_FLAG=-DMARPA_TAG=testing123
+
+The tag appears early in the test output:
+
+ t/00-load.t ............ 1/4 # Marpa::R2 version is 2.085_004
+ # Libmarpa version is 6.0.3
+ # Libmarpa tag: testing123
+
+You can put spaces and other non-word characters into the tag, but you have to
+figure out how to make them run the guantlet from shell to Makefile to compiler
+command line. Here's an example who works on Linux:
+
+ ./configure MARPA_DEBUG_FLAG="\"-DMARPA_TAG=*This is a test*\""
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmarpa-r2-perl.git
More information about the Pkg-perl-cvs-commits
mailing list