coin-or / Clp

COIN-OR Linear Programming Solver
Other
408 stars 85 forks source link

'CoinTypes.hpp' file not found error while building #143

Closed crbinz closed 4 years ago

crbinz commented 4 years ago

Appears to already by fixed by 633bcb88, but the latest release is broken.

svigerske commented 4 years ago

What version exactly are you building?

CoinTypes.hpp became CoinTypes.h in CoinUtils/master, but not in any version that a current Clp release depends on.

crbinz commented 4 years ago

1.17.6, as prompted by coinbrew. Here's the full error:

##################################################
### Configuring Clp 1.17.6 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building Clp 1.17.6 
##################################################

In file included from /Users/cbinz/Code/Clp/Clp/src/ClpCholeskyBase.cpp:27:
/Users/cbinz/Code/Clp/Clp/src/ClpCholeskyBase.hpp:10:10: fatal error: 'CoinTypes.hpp' file not found
#include "CoinTypes.hpp"
         ^~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [ClpCholeskyBase.lo] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

Build failed, see error output above

I guess it's also possible that coinbrew wasn't quite doing what it said it was doing. I wouldn't be surprised - it was a rather unpleasant experience using it.

tkralphs commented 4 years ago

Could you post full sequence of commands, so I can replicate? Ideally, re-run with --verbosity 4 and then paste the output.

I've put a lot of effort into making coinbrew as pleasant to use as possible, but I would welcome feedback if there are specific ways it could be improved. Unless there's an unreported bug, it really is doing what it says it's doing. It's meant to make life better, but you are not forced to use it. You can always go around it and just download and build each dependency yourself if that seems better.

crbinz commented 4 years ago

@tkralphs First, let me apologize for the tone of my comment above - I know that kind of thing just isn't constructive or helpful, especially in open source projects. I certainly appreciate the fact that coinbrew exists at all - even with the workarounds I had to make (reported here), it surely saved me lots of time.

I got rid of (I think) everything and tried starting from scratch. Here's the whole sequence:

(base) Code 🛰️  $ ./coinbrew fetch Clp:releases/1.17.6
Welcome to the COIN-OR fetch and build utility

For help, run script with --help.

Entering interactive mode (suppress with --no-prompt)...

##################################################
### Fetching Clp releases/1.17.6 
##################################################

Cloning into 'Clp'...
remote: Enumerating objects: 76, done.
remote: Counting objects: 100% (76/76), done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 16836 (delta 33), reused 39 (delta 19), pack-reused 16760
Receiving objects: 100% (16836/16836), 13.15 MiB | 1.78 MiB/s, done.
Resolving deltas: 100% (13427/13427), done.
Note: switching to '756ddd3ed813eb1fa8b2d1b4fe813e6a4d7aa1eb'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

##################################################
### Fetching BuildTools releases/0.8.10 
##################################################

Cloning into 'BuildTools'...
remote: Enumerating objects: 119, done.
remote: Counting objects: 100% (119/119), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 2754 (delta 70), reused 83 (delta 39), pack-reused 2635
Receiving objects: 100% (2754/2754), 995.96 KiB | 2.10 MiB/s, done.
Resolving deltas: 100% (1675/1675), done.
Note: switching to '117dd29d8808aacff6f1255bcfe8ca0b18448edd'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

##################################################
### Switching ThirdParty/ASL to releases/1.4.3 
##################################################

Note: switching to 'releases/1.4.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at bf5d14b creating BuildTools/ThirdParty/ASL/releases/1.4.3 from BuildTools/ThirdParty/ASL/stable/1.4 (rev 4152)
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

(base) Code 🛰️  $ ./coinbrew build Clp --prefix=/Users/cbinz/Code/build --test --verbosity 4
Welcome to the COIN-OR fetch and build utility

For help, run script with --help.

Entering interactive mode (suppress with --no-prompt)...

################################################
### Building version 1.17.6
### with existing versions of dependencies.
### Run 'fetch' first to switch versions
### or to ensure correct dependencies
################################################

Fetch now? y/n
=> y

Installation is now done automatically following build and test of each project.

Installation directory is writable.

Package will be built in /Users/cbinz/Code/build

./coinbrew: line 1375: --with-coin-instdir=/Users/cbinz/Code/build: syntax error: operand expected (error token is "/Users/cbinz/Code/build")
Caching configuration options...

##################################################
### Updating Clp 1.17.6 
##################################################

You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

(base) Code 🛰️  $ ./coinbrew build Clp --prefix=/Users/cbinz/Code/build --test --verbosity 4
Welcome to the COIN-OR fetch and build utility

For help, run script with --help.

Entering interactive mode (suppress with --no-prompt)...

################################################
### Building version 1.17.6
### with existing versions of dependencies.
### Run 'fetch' first to switch versions
### or to ensure correct dependencies
################################################

Fetch now? y/n
=> n
###
### Cached configuration options from previous build found.
###

Installation is now done automatically following build and test of each project.

Installation directory is writable.

Package will be built in /Users/cbinz/Code/build

./coinbrew: line 1375: --with-coin-instdir=/Users/cbinz/Code/build: syntax error: operand expected (error token is "/Users/cbinz/Code/build")
Reading cached options from /Users/cbinz/Code/build/.config/Clp-1.17.6
./coinbrew: line 68: readarray: command not found

(base) Code 🛰️  $ ./coinbrew build Clp --prefix=/Users/cbinz/Code/build --test
Welcome to the COIN-OR fetch and build utility

For help, run script with --help.

Entering interactive mode (suppress with --no-prompt)...

################################################
### Building version 1.17.6
### with existing versions of dependencies.
### Run 'fetch' first to switch versions
### or to ensure correct dependencies
################################################

Fetch now? y/n
=> n
###
### Cached configuration options from previous build found.
###

Installation is now done automatically following build and test of each project.

Installation directory is writable.

Package will be built in /Users/cbinz/Code/build

./coinbrew: line 1375: --with-coin-instdir=/Users/cbinz/Code/build: syntax error: operand expected (error token is "/Users/cbinz/Code/build")
Reading cached options from /Users/cbinz/Code/build/.config/Clp-1.17.6
./coinbrew: line 68: readarray: command not found
(base) Code 🛰️  $ cd build/
(base) build 🛰️  $ rm -rf .config/
(base) build 🛰️  $ cd ..
(base) Code 🛰️  $ ./coinbrew build Clp --prefix=/Users/cbinz/Code/build --test
Welcome to the COIN-OR fetch and build utility

For help, run script with --help.

Entering interactive mode (suppress with --no-prompt)...

################################################
### Building version 1.17.6
### with existing versions of dependencies.
### Run 'fetch' first to switch versions
### or to ensure correct dependencies
################################################

Fetch now? y/n
=> n

Installation is now done automatically following build and test of each project.

Installation directory is writable.

Package will be built in /Users/cbinz/Code/build

./coinbrew: line 1375: --with-coin-instdir=/Users/cbinz/Code/build: syntax error: operand expected (error token is "/Users/cbinz/Code/build")
Caching configuration options...

Disabling uninstalled packages

##################################################
### Configuring ThirdParty/ASL 1.4.3 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building ThirdParty/ASL 1.4.3 
##################################################

##################################################
### Installing ThirdParty/ASL 1.4.3 
##################################################

##################################################
### Configuring ThirdParty/Blas 1.4.8 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building ThirdParty/Blas 1.4.8 
##################################################

##################################################
### Installing ThirdParty/Blas 1.4.8 
##################################################

##################################################
### Configuring ThirdParty/Lapack 1.6.1 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building ThirdParty/Lapack 1.6.1 
##################################################

##################################################
### Installing ThirdParty/Lapack 1.6.1 
##################################################

##################################################
### Configuring ThirdParty/Metis 1.3.9 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building ThirdParty/Metis 1.3.9 
##################################################

##################################################
### Installing ThirdParty/Metis 1.3.9 
##################################################

##################################################
### Configuring ThirdParty/Mumps 1.6.2 
##################################################

##################################################
### Building ThirdParty/Mumps 1.6.2 
##################################################

##################################################
### Installing ThirdParty/Mumps 1.6.2 
##################################################

##################################################
### Configuring ThirdParty/Glpk 1.10.7 
##################################################

##################################################
### Building ThirdParty/Glpk 1.10.7 
##################################################

##################################################
### Installing ThirdParty/Glpk 1.10.7 
##################################################

##################################################
### Configuring Data/Netlib 1.2.9 
##################################################

##################################################
### Building Data/Netlib 1.2.9 
##################################################

##################################################
### Installing Data/Netlib 1.2.9 
##################################################

##################################################
### Configuring Data/Sample 1.2.12 
##################################################

##################################################
### Building Data/Sample 1.2.12 
##################################################

##################################################
### Installing Data/Sample 1.2.12 
##################################################

##################################################
### Configuring CoinUtils 2.11.4 
##################################################

##################################################
### Building CoinUtils 2.11.4 
##################################################

##################################################
### Installing CoinUtils 2.11.4 
##################################################

##################################################
### Configuring Osi 0.108.6 
##################################################

##################################################
### Building Osi 0.108.6 
##################################################

##################################################
### Installing Osi 0.108.6 
##################################################

##################################################
### Configuring Clp 1.17.6 
##################################################

rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory
rm: cannot remove 'conftest.dSYM': Is a directory

##################################################
### Building Clp 1.17.6 
##################################################

In file included from /Users/cbinz/Code/Clp/Clp/src/ClpCholeskyBase.cpp:27:
/Users/cbinz/Code/Clp/Clp/src/ClpCholeskyBase.hpp:10:10: fatal error: 'CoinTypes.hpp' file not found
#include "CoinTypes.hpp"
         ^~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [ClpCholeskyBase.lo] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

Build failed, see error output above
tkralphs commented 4 years ago

Oh, whoops, sorry, I did see your report over in coinbrew and meant to get back to it. Will do that next. One problem is probably that Apple refuses to update its bash version. You will definitely need to install a modern bash with Homebrew (if you haven't already, read the documentation here. And speaking of Homebrew, I suppose you already noted the Homebrew recipes? That's a better option on OS X unless you need to work with the source distro for some reason.

For the above, you definitely aren't starting out clean. From this line:

### Switching ThirdParty/ASL to releases/1.4.3 

there seems to at least be a clone of ASL sitting around. I guess you didn't delete the ThirdParty directory? I would suggest starting in a newly created directory.

What happened after that is a gotcha that I already had on my TODO list. If you have already checked out a tagged version and then try to update it, the script does fail because it tried to do a git pull in detached HEAD state, which is not allowed. I will fix this. This caused the fetch command to fail, so it never actually finished fetching the dependencies.

Through trial and error, you got the build going again, so you must have already had things checked out. The only error that arose after that was because of your old bash version, which means that cached options were not read, which could cause some issues not sure. I will verify here that this should work, but please try from an empty directory with a modern version of bash and I guess this will fix things.

tkralphs commented 4 years ago

And you can suppress the question about fetching before building with --no-prompt.

tkralphs commented 4 years ago

Everything worked perfectly for me doing the same that you did, so it's environmental factors and/or corruption from half-finished fetches and such.

crbinz commented 4 years ago

You're right, I'm not sure what happened the first time around, but trying again in a clean directory worked.