Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python build error #3

Closed
mdavidsaver opened this issue Dec 2, 2016 · 6 comments
Closed

python build error #3

mdavidsaver opened this issue Dec 2, 2016 · 6 comments
Labels

Comments

@mdavidsaver
Copy link

I'm not sure if this is an error in README.md or my reading of it. By my understanding the build process, including pvaPy, from a release tar should be

tar -xaf EPICS-CPP-4.6.0.tar.gz
cd EPICS-CPP-4.6.0/
make -j4 EPICS_BASE=/home/mdavidsaver/work/epics/base-git
make -j4  EPICS_BASE=/home/mdavidsaver/work/epics/base-git python

However, it doesn't seem that the 'python' target runs the configure step for pvaPy. I find that the following does work.

tar -xaf EPICS-CPP-4.6.0.tar.gz
cd EPICS-CPP-4.6.0/
make -j4 EPICS_BASE=/home/mdavidsaver/work/epics/base-git
make -j4  EPICS_BASE=/home/mdavidsaver/work/epics/base-git config.pvaPy
make -j4  EPICS_BASE=/home/mdavidsaver/work/epics/base-git pvaPy

The error from the python target

make[1]: Leaving directory `/home/train/EPICS-CPP-4.6.0/pvaClientCPP'
perl tools/genRelease.pl -o pvaPy/configure/RELEASE.linux-x86_64.Common
-B /usr/lib/epics 
make -C pvaPy linux-x86_64
make[1]: Entering directory `/home/train/EPICS-CPP-4.6.0/pvaPy'
The required file configure/RELEASE.local does not exist.
See README.txt for instructions on configuring this module
by hand, or autoconfigure the module by running

    make configure EPICS_BASE=<path> EPICS4_DIR=<path>
@anjohnson
Copy link
Contributor

Does it make any difference if you leave off the -j4? This may be a Makefile dependency issue, and I might not have tested parallel builds of the Python config or build parts.

@mdavidsaver
Copy link
Author

Does it make any difference if you leave off the -j4?

No difference (this was the first thing I tried).

@anjohnson
Copy link
Contributor

Confirmed, I get the same behavior, which your workaround fixes. Does this patch solve the issue for you?

diff --git a/Makefile b/Makefile
index f02388a..6e20d17 100644
--- a/Makefile
+++ b/Makefile
@@ -135,6 +135,7 @@ endif
 
 # Special rules for pvaPy
 pvaPy: host.pvaPy
+host.pvaPy: config.pvaPy
 config.pvaPy: pvaPy/configure/RELEASE.local
 pvaPy/configure/RELEASE.local: host.pvaClientCPP
        $(MAKE) -C pvaPy configure $(PVAPY_CONFIG)

I'd like to stop the subsequent python build from rebuilding all the other modules unnecessarily, but that's not trivial to do.

Note that the EPICS_BASE argument is only required the first time you run make, you can leave it off of later runs.

@mdavidsaver
Copy link
Author

With this change the 'python' target runs configure (even for rebuilds).

@anjohnson
Copy link
Contributor

I can adjust the rules so that make host.pvaPy will not run configure unnecessarily, but make python has to check whether the earlier V4 modules have been built yet before running the configure script for pyaPy. The way it does that above is to have pvaPy/configure/RELEASE.local depend on the host.pvaClientCPP target, and since that's a phony target it is always regarded as out-of-date, triggering configure.

The bundleCPP/Makefile was designed to make life convenient for V4's users (especially beginners), not for its developers. For better control after make config.pvaPy use make -C pvaPy <target>.

@anjohnson
Copy link
Contributor

This should be fixed in the 4.7.0 release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants