I am trying to build Waffles on CentOS6.4 64 bit, I have changed the Makefile under src to
export INSTALL_LOCATION_LIB="/opt/waffles/lib"
export INSTALL_LOCATION_INCLUDE="/opt/waffles/include"
export INSTALL_LOCATION_BIN="/opt/waffles/bin"
The sudo make install command failed with this:
[root@lix src]# sudo make install
make -C GClasses install
make[1]: Entering directory /home/amber/soft/waffles/src/GClasses'
make: Entering directory/home/amber/soft/waffles/src/GClasses'
rm -f ../../lib/GClassesDbg.a
make: *** No rule to make target ../../obj/GClasses/dbg/G3D.o', needed by../../lib/GClassesDbg.a'. Stop.
make: Leaving directory /home/amber/soft/waffles/src/GClasses'
make[1]: *** [install] Error 2
make[1]: Leaving directory/home/amber/soft/waffles/src/GClasses'
make: *** [INSTALL_GClasses] Error 2 [root@lix src]#
And I do issue make clean before this.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The rule to make that target is located in waffles/obj/GClasses/dbg/G3D.d. Does this file exist on your machine? The contents of this file should be generated to be something like this:
Oh, I know what the problem is! I recently added some lines to the Makefile to prevent it from building as root. The reason for this change is because it is common to build and install Waffles with a single command:
sudo make install
but it is problematic if the object files are owned by root, because then the normal user cannot easily delete them, and they will prevent future compiles from completing successfully. So, the Makefile switches to ${SUDO_USER} to do the compilation.
In your case, however, ${SUDO_USER} is root, so it never switches to any user besides root, so it never builds the files at all. If you become any other user before you build, it should work as expected.
Anyone know a better solution to this issue?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The following step works:
1. add my normal user amber to sudoers
2. chown -R amber /home , (without this step I get permission denied error)
3. sudo make install under $waffles_root/src
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
But there is another problem, after the sudo make install command finished,
the binaries under $waffles_root/bin are not copied to the installation target path, which is specified in the Makefile as "export INSTALL_LOCATION_BIN="/opt/waffles/bin"
but the executeable file called bin is created under /opt/waffles, and the output of ./opt/waffles/bin is
The "test" application expects the waffles binaries (waffles_transform, waffles_learn, etc.) to be installed in a location contained in the $PATH environment variable. The errors above are due to it not being able to find them. These error messages definitely do not identify the problem very well, so I will try to improve them.
The issue regarding the installation location must have something to do with the Makefiles. Unfortunately, I am not very good with Gnu Make, so I cannot immediately identify what needs to be fixed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Another question, why do we have to use sudo users, why not just use the plain user account?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
Anonymous
-
2013-09-24
You can do "make dbg" or "make opt" as any user. "make install", however, requires sudo because, by default, it copies the binaries to /usr/local/bin, which is usually owned by root.
I think this aspect of our Makefiles is not currently very well designed. I am open to any suggestions about how to make them better.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The disadvantage of using sudo user account is that:
I can't build Waffles inside Eclipse for C++
* Build of configuration Default for project Waffles *
make all
make -C GClasses install
make[1]: Entering directory /home/amber/soft/waffles/src/GClasses'
You must use sudo to install
make[1]: *** [install] Error 1
make: *** [INSTALL_GClasses] Error 2
make[1]: Leaving directory/home/amber/soft/waffles/src/GClasses'
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think you can use "make dbg" with Eclipse instead of "sudo make install". Eclipse does not need the binaries to be copied to the /use/local/bin folder.
It is not clear to me whether "make all" should be the same as "make dbg" or "make opt". Is it expected to build with debug symbols, or to make optimized binaries?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I am trying to build Waffles on CentOS6.4 64 bit, I have changed the Makefile under src to
export INSTALL_LOCATION_LIB="/opt/waffles/lib"
export INSTALL_LOCATION_INCLUDE="/opt/waffles/include"
export INSTALL_LOCATION_BIN="/opt/waffles/bin"
The sudo make install command failed with this:
[root@lix src]# sudo make install
make -C GClasses install
make[1]: Entering directory
/home/amber/soft/waffles/src/GClasses' make: Entering directory
/home/amber/soft/waffles/src/GClasses'rm -f ../../lib/GClassesDbg.a
make: *** No rule to make target
../../obj/GClasses/dbg/G3D.o', needed by
../../lib/GClassesDbg.a'. Stop.make: Leaving directory
/home/amber/soft/waffles/src/GClasses' make[1]: *** [install] Error 2 make[1]: Leaving directory
/home/amber/soft/waffles/src/GClasses'make: *** [INSTALL_GClasses] Error 2
[root@lix src]#
And I do issue make clean before this.
The rule to make that target is located in waffles/obj/GClasses/dbg/G3D.d. Does this file exist on your machine? The contents of this file should be generated to be something like this:
../../obj/GClasses/dbg/G3D.o: G3D.cpp G3D.h GError.h GRand.h GDom.h GHeap.h GMath.h GImage.h \
GVec.h
g++ -Wall -g -D_DEBUG -c G3D.cpp -o ../../obj/GClasses/dbg/G3D.o
No, even the obj directory is not created by make.
I issue the command under waffles/src directory.
Oh, I know what the problem is! I recently added some lines to the Makefile to prevent it from building as root. The reason for this change is because it is common to build and install Waffles with a single command:
sudo make install
but it is problematic if the object files are owned by root, because then the normal user cannot easily delete them, and they will prevent future compiles from completing successfully. So, the Makefile switches to ${SUDO_USER} to do the compilation.
In your case, however, ${SUDO_USER} is root, so it never switches to any user besides root, so it never builds the files at all. If you become any other user before you build, it should work as expected.
Anyone know a better solution to this issue?
The following step works:
1. add my normal user amber to sudoers
2. chown -R amber /home , (without this step I get permission denied error)
3. sudo make install under $waffles_root/src
But there is another problem, after the sudo make install command finished,
the binaries under $waffles_root/bin are not copied to the installation target path, which is specified in the Makefile as "export INSTALL_LOCATION_BIN="/opt/waffles/bin"
but the executeable file called bin is created under /opt/waffles, and the output of ./opt/waffles/bin is
Expected a command
waffles_transform [command]
add [dataset1] [dataset2]
addindexcolumn [dataset] <options>
addnoise [dataset] [dev] <options>
aggregatecols [n]
aggregaterows [n]
align [a] [b]
autocorrelation [dataset]
cholesky [dataset]
correlation [dataset] [attr1] [attr2] <options>
cumulativecolumns [dataset] [column-list]
determinant [dataset]
discretize [dataset] <options>
dropcolumns [dataset] [column-list]
drophomogcols [dataset]
dropiftooclose [dataset] [col] [gap]
dropmissingvalues [dataset]
droprandomvalues [dataset] [portion] <options>
dropunusedvalues [dataset]
export [dataset] <options>
droprows [dataset] [after-size]
fillmissingvalues [dataset] <options>
import [dataset] <options>
enumeratevalues [dataset] [col]
keeponlycolumns [dataset] [column-list]
measuremeansquarederror [dataset1] [dataset2] <options>
mergehoriz [dataset1] [dataset2]
mergevert [dataset1] [dataset2]
multiply [a] [b] <options>
multiplyscalar [dataset] [scalar]
normalize [dataset] <options>
normalizemagnitude [dataset]
nominaltocat [dataset] <options>
obfuscate [data]
overlay [base] [over]
powercolumns [dataset] [column-list] [exponent]
prettify [json-file]
pseudoinverse [dataset]
reducedrowechelonform [dataset]
rotate [dataset] [col_x] [col_y] [angle_degrees]
samplerows [dataset] [portion]
scalecolumns [dataset] [column-list] [scalar]
shiftcolumns [dataset] [column-list] [offset]
shuffle [dataset] <options>
significance [dataset] [attr1] [attr2] <options>
sortcolumn [dataset] [col] <options>
split [dataset] [rows] [filename1] [filename2] <options>
splitclass [data] [attr] <options>
splitfold [dataset] [i] [n] <options>
squareddistance [a] [b]
svd [matrix] <options>
swapcolumns [dataset] [col1] [col2]
transition [action-sequence] [state-sequence] <options>
threshold [dataset] [column] [threshold]
transpose [dataset]
uglify [json-file]
zeromean [dataset]
usage</options></options></options></options></options></options></options></options></options></options></options></options></options></options></options></options></options></options></options></options>
For more specific usage information, enter as much of the command as you know.
To see full usage information, run:
bin usage
For a graphical tool that will help you to build a command, run:
waffles_wizard
[amber@cent64 waffles]$
And there are errors when run the test programe
waffles_transform mergevert FAILED!!!
need a bigger buffer
waffles_recommend fillmissingvalues FAILED!!!
need a bigger buffer
waffles_transform keeponlycolumns FAILED!!!
Substring match test failed: Unexpected output from golf dataset with no columns listed
waffles_dimred attributeselector FAILED!!!
Test for equality failed: Unexpected output from golf dataset with no labels and no ignored
document classification FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
Error calling execvp. errno=2
Done.
FAILED!!!
failed
Done.
The "test" application expects the waffles binaries (waffles_transform, waffles_learn, etc.) to be installed in a location contained in the $PATH environment variable. The errors above are due to it not being able to find them. These error messages definitely do not identify the problem very well, so I will try to improve them.
The issue regarding the installation location must have something to do with the Makefiles. Unfortunately, I am not very good with Gnu Make, so I cannot immediately identify what needs to be fixed.
Another question, why do we have to use sudo users, why not just use the plain user account?
You can do "make dbg" or "make opt" as any user. "make install", however, requires sudo because, by default, it copies the binaries to /usr/local/bin, which is usually owned by root.
I think this aspect of our Makefiles is not currently very well designed. I am open to any suggestions about how to make them better.
You'd better add an "all" target in the Makefile, that's the default target when user can just iusse make to make all the staff.
The disadvantage of using sudo user account is that:
I can't build Waffles inside Eclipse for C++
* Build of configuration Default for project Waffles *
make all
make -C GClasses install
make[1]: Entering directory
/home/amber/soft/waffles/src/GClasses' You must use sudo to install make[1]: *** [install] Error 1 make: *** [INSTALL_GClasses] Error 2 make[1]: Leaving directory
/home/amber/soft/waffles/src/GClasses'I think you can use "make dbg" with Eclipse instead of "sudo make install". Eclipse does not need the binaries to be copied to the /use/local/bin folder.
It is not clear to me whether "make all" should be the same as "make dbg" or "make opt". Is it expected to build with debug symbols, or to make optimized binaries?