Fix install to account for new directory structure. Optimize build.

master
poikilos 2021-02-18 12:29:31 -05:00
parent 0170567e66
commit a8b9085a4e
5 changed files with 133 additions and 70 deletions

1
.gitignore vendored
View File

@ -40,3 +40,4 @@ CMakeLists.txt.user
nohup.out nohup.out
*.tmp *.tmp
err.txt err.txt
/build/b3view

View File

@ -2,6 +2,15 @@
if [ -z "$PREFIX" ]; then if [ -z "$PREFIX" ]; then
PREFIX="/usr" PREFIX="/usr"
fi fi
if [ -z "$DEBUG" ]; then
DEBUG=false
fi
OPTION1="-O2"
OPTION2=""
if [ "@$DEBUG" = "@true" ]; then
OPTION1="-g"
#OPTION2="-DQT_QML_DEBUG"
fi
#IRR_INCDIR= #IRR_INCDIR=
#IRR_LIBDIR= #IRR_LIBDIR=
FT2_INCDIR=$PREFIX/include/freetype2 FT2_INCDIR=$PREFIX/include/freetype2
@ -25,28 +34,17 @@ fi
#^ can't find a pc file #^ can't find a pc file
# gcc -o build/b3view main.cpp Debug.cpp Engine.cpp EventHandler.cpp settings.cpp UserInterface.cpp Utility.cpp View.cpp -I$FT2_INCDIR # gcc -o build/b3view main.cpp Debug.cpp Engine.cpp EventHandler.cpp settings.cpp UserInterface.cpp Utility.cpp View.cpp -I$FT2_INCDIR
# Qmake does the following: # based on qtcreator's build after clean (see contributing.md; some options are unclear):
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/main.o ../b3view/main.cpp eche
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Engine.o ../b3view/Engine.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/main.o ../b3view/main.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/EventHandler.o ../b3view/EventHandler.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Engine.o ../b3view/Engine.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/UserInterface.o ../b3view/UserInterface.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/EventHandler.o ../b3view/EventHandler.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Debug.o ../b3view/Debug.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/UserInterface.o ../b3view/UserInterface.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/View.o ../b3view/View.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/View.o ../b3view/View.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/CGUITTFont.o ../b3view/extlib/CGUITTFont.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Debug.o ../b3view/Debug.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Utility.o ../b3view/Utility.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/CGUITTFont.o ../b3view/extlib/CGUITTFont.cpp
#g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/settings.o ../b3view/settings.cpp g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Utility.o ../b3view/Utility.cpp
#g++ -o build/b3view tmp/main.o tmp/Engine.o tmp/EventHandler.o tmp/UserInterface.o tmp/Debug.o tmp/View.o tmp/CGUITTFont.o tmp/Utility.o tmp/settings.o -lIrrlicht -lX11 -lGL -lXxf86vm -lXcursor -lstdc++fs -lfreetype g++ -c -pipe $OPTION1 -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/settings.o ../b3view/settings.cpp
# based on the above (some options are unclear):
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/main.o ../b3view/main.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Engine.o ../b3view/Engine.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/EventHandler.o ../b3view/EventHandler.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/UserInterface.o ../b3view/UserInterface.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/View.o ../b3view/View.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Debug.o ../b3view/Debug.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/CGUITTFont.o ../b3view/extlib/CGUITTFont.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/Utility.o ../b3view/Utility.cpp
g++ -c -pipe -g -fPIC -I../b3view -I$FT2_INCDIR -o $OBJDIR/settings.o ../b3view/settings.cpp
#-w: suppress warning #-w: suppress warning
# -I.: include the current directory (suppresses errors when using include < instead of include " # -I.: include the current directory (suppresses errors when using include < instead of include "
#-pipe: "Use pipes rather than intermediate files." #-pipe: "Use pipes rather than intermediate files."
@ -69,6 +67,15 @@ fi
INSTALLED_BIN="$HOME/.local/bin/b3view" INSTALLED_BIN="$HOME/.local/bin/b3view"
if [ -f "$INSTALLED_BIN" ]; then if [ -f "$INSTALLED_BIN" ]; then
echo "* updating $INSTALLED_BIN..." echo "* updating $INSTALLED_BIN..."
rm "$INSTALLED_BIN" ./$OUT_BIN
cp -f "$OUT_BIN" "$INSTALLED_BIN" if [ $? -eq 0 ]; then
# if no errors occur, install it
rm "$INSTALLED_BIN"
cp -f "$OUT_BIN" "$INSTALLED_BIN"
if [ $? -eq 0 ]; then
echo "* installed $INSTALLED_BIN successfully."
else
echo "* FAILED to install $INSTALLED_BIN."
fi
fi
fi fi

50
contributing.md Normal file
View File

@ -0,0 +1,50 @@
# Contributing
<https://github.com/poikilos/b3view>
## Regression Tests
### Manipulating mesh on failed load
- steps to reproduce
- File, Open, choose a mesh file such as animal_bat.b3d
- File, Open, choose a texture (purposely incorrect input)
- incorrect behaviors:
- manipulating the loaded scene, such as calling remove()
- SEGFAULT
- correct behaviors:
- Do nothing to the current scene.
- Show a message saying that the format is incorrect.
## What Qt Creator does
When building after clean, you can see the g++ commands in the "Compiler Output" bottom tab. See Debug and Release sections below.
### Debug
```
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/main.o ../b3view/main.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Engine.o ../b3view/Engine.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/EventHandler.o ../b3view/EventHandler.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/UserInterface.o ../b3view/UserInterface.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Debug.o ../b3view/Debug.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/View.o ../b3view/View.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/CGUITTFont.o ../b3view/extlib/CGUITTFont.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Utility.o ../b3view/Utility.cpp
g++ -c -pipe -g -w -fPIC -DQT_QML_DEBUG -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/settings.o ../b3view/settings.cpp
g++ -o build/b3view tmp/main.o tmp/Engine.o tmp/EventHandler.o tmp/UserInterface.o tmp/Debug.o tmp/View.o tmp/CGUITTFont.o tmp/Utility.o tmp/settings.o -lIrrlicht -lX11 -lGL -lXxf86vm -lXcursor -lstdc++fs -lfreetype
```
### Release
```
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/main.o ../b3view/main.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Engine.o ../b3view/Engine.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/EventHandler.o ../b3view/EventHandler.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/UserInterface.o ../b3view/UserInterface.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Debug.o ../b3view/Debug.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/View.o ../b3view/View.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/CGUITTFont.o ../b3view/extlib/CGUITTFont.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/Utility.o ../b3view/Utility.cpp
g++ -c -pipe -O2 -w -fPIC -I../b3view -I. -I/usr/include/freetype2 -I/../lib64/qt5/mkspecs/linux-g++ -o tmp/settings.o ../b3view/settings.cpp
g++ -Wl,-O1 -o build/b3view tmp/main.o tmp/Engine.o tmp/EventHandler.o tmp/UserInterface.o tmp/Debug.o tmp/View.o tmp/CGUITTFont.o tmp/Utility.o tmp/settings.o -lIrrlicht -lX11 -lGL -lXxf86vm -lXcursor -lstdc++fs -lfreetype
```

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
customDie() { customExit() {
echo echo
echo "ERROR:" echo "ERROR:"
echo "$1" echo "$1"
@ -9,10 +9,10 @@ customDie() {
exit 1 exit 1
} }
echo "Use the install.sh in build instead. Switching to build/install.sh..." DIST_DIR="`realpath dist`"
DIST_DIR=dist BUILD_DIR="build"
if [ ! -d "$DIST_DIR" ]; then if [ ! -d "$DIST_DIR" ]; then
customDie "ERROR: There is no $DIST_DIR directory in `pwd`" customExit "ERROR: There is no $DIST_DIR directory in `pwd`"
fi fi
# chmod +x install.sh # chmod +x install.sh
echo echo
@ -23,63 +23,70 @@ dest_share_dir="$PREFIX/share"
project_unix_name=b3view project_unix_name=b3view
dest_name=$project_unix_name dest_name=$project_unix_name
src_name="$project_unix_name" src_name="$project_unix_name"
src_path="$src_name" src_path="$src_name" # detected later (dependent on how built)
try_dest_bin="$dest_bin_dir/$dest_name" dest_bin="$dest_bin_dir/$dest_name"
icon_name="b3view.png" icon_name="b3view.png"
icon_src_path="icons/$icon_name" icon_src_path="$DIST_DIR/icons/$icon_name"
shortcut_name="org.poikilos.b3view.desktop" shortcut_name="org.poikilos.b3view.desktop"
shortcut_src_path="applications/$shortcut_name" shortcut_src_path="$DIST_DIR/applications/$shortcut_name"
icons_root=$PREFIX/share/pixmaps icons_root=$PREFIX/share/pixmaps
applications_path=$PREFIX/share/applications applications_path=$PREFIX/share/applications
mimes_path="share/mime/packages" mimes_path="$DIST_DIR/share/mime/packages"
USER_MIMETYPES_DB_PATH=$HOME/.local/share/mime USER_MIMETYPES_DB_PATH=$HOME/.local/share/mime
#USER_MIMETYPES_PATH="$USER_MIMETYPES_DB_PATH/packages" #USER_MIMETYPES_PATH="$USER_MIMETYPES_DB_PATH/packages"
SYSTEM_MIMETYPES_DB_PATH=/usr/share/mime SYSTEM_MIMETYPES_DB_PATH=/usr/share/mime
#SYSTEM_MIMETYPES_PATH=$SYSTEM_MIMETYPES_DB_PATH/packages #SYSTEM_MIMETYPES_PATH=$SYSTEM_MIMETYPES_DB_PATH/packages
MIMETYPES_DB_PATH=$SYSTEM_MIMETYPES_DB_PATH MIMETYPES_DB_PATH=$SYSTEM_MIMETYPES_DB_PATH
try_build_path="../../build-$project_unix_name-Desktop-Release/build/" for try_build_path in "$BUILD_DIR" "../build" "../../build-$project_unix_name-Desktop-Release/build/"
try_src_path="$try_build_path/$src_name" do
if [ ! -f $src_path ]; then try_src_path="$try_build_path/$src_name"
echo "Checking for $src_path...NOT FOUND" if [ ! -f $src_path ]; then
if [ -f "$try_src_path" ]; then echo "Checking for $src_path...NOT FOUND"
echo "Checking for $src_name in $try_build_path...FOUND" if [ -f "$try_src_path" ]; then
src_path="$try_src_path" echo "* Checking for $src_name in $try_build_path...FOUND"
else src_path="$try_src_path"
echo "Checking for $src_name in $try_build_path...NOT FOUND" break
else
echo "* Checking for $src_name in $try_build_path...NOT FOUND"
fi
fi fi
fi done
if [ ! -f "$src_path" ]; then if [ ! -f "$src_path" ]; then
customDie "(Nothing done) missing $src_name (You must build first, such as using Qt Creator)." customExit "(Nothing done) missing $src_name (You must build first, such as using build.sh or Qt Creator (Release))."
else else
echo "Checking for $src_path...FOUND" echo "Checking for $src_path...FOUND"
echo "* current directory: `pwd`" echo "* current directory: `pwd`"
fi fi
if [ -d "$try_dest_bin" ]; then if [ -d "$dest_bin" ]; then
customDie "(Nothing done) '$try_dest_bin' is a directory (should be deleted or a binary file of old version)" customExit "(Nothing done) '$dest_bin' is a directory (should be deleted or a binary file of old version)"
fi fi
PROFILE_ENABLE=false PROFILE_ENABLE=false
if [ -f "$try_dest_bin" ]; then if [ -f "$dest_bin" ]; then
rm -f "$try_dest_bin" rm -f "$dest_bin"
if [ -f "$try_dest_bin" ]; then if [ -f "$dest_bin" ]; then
echo "WARNING: can't remove old $try_dest_bin, so" echo "WARNING: can't remove old $dest_bin, so"
PROFILE_ENABLE=true PROFILE_ENABLE=true
fi fi
fi fi
# echo "* using '$src_path'..." # echo "* using '$src_path'..."
cp -f "$src_path" "$try_dest_bin" if [ ! -f "$src_path" ]; then
customExit "* Error: missing $src_path in `pwd`"
fi
cp -f "$src_path" "$dest_bin"
if [ ! -f "$try_dest_bin" ]; then if [ ! -f "$dest_bin" ]; then
PROFILE_ENABLE=true PROFILE_ENABLE=true
prev_dir="$dest_bin_dir" prev_dir="$dest_bin_dir"
echo "WARNING: can't write to $prev_dir, so" echo "WARNING: can't write to $prev_dir, so"
fi fi
if [ "@$PROFILE_ENABLE" = "@true" ]; then if [ "@$PROFILE_ENABLE" = "@true" ]; then
dest_bin_dir="$HOME/.local/bin" dest_bin_dir="$HOME/.local/bin"
echo "installing to '$dest_bin_dir'." dest_bin="$dest_bin_dir/$src_name"
echo "installing as '$dest_bin'."
echo "Press Ctrl C to cancel..." echo "Press Ctrl C to cancel..."
#sleep 1 #sleep 1
#echo "3..." #echo "3..."
@ -89,11 +96,20 @@ if [ "@$PROFILE_ENABLE" = "@true" ]; then
#echo "1..." #echo "1..."
#sleep 1 #sleep 1
else else
echo "Successfully installed as '$try_dest_bin'" echo "Successfully installed as '$dest_bin'"
fi fi
if [ "@$PROFILE_ENABLE" = "@true" ]; then if [ "@$PROFILE_ENABLE" = "@true" ]; then
if [ ! -d "$dest_bin_dir" ]; then mkdir "$dest_bin_dir"; fi if [ ! -d "$dest_bin_dir" ]; then mkdir "$dest_bin_dir"; fi
cp -f $src_path "$dest_bin_dir/" if [ -L "$dest_bin" ]; then
realpath="`readlink "$dest_bin"`"
echo "* \"$dest_bin\" was a symlink to \"$realpath\""
if [ ! -f "$realpath" ]; then
echo " * removing dangling symlink..."
rm "$dest_bin"
fi
fi
cp -f $src_path "$dest_bin" || customExit "* copying to $dest_bin_dir/ FAILED"
icons_root="$HOME/.local/share/icons" icons_root="$HOME/.local/share/icons"
applications_path="$HOME/.local/share/applications" applications_path="$HOME/.local/share/applications"
MIMETYPES_DB_PATH="$USER_MIMETYPES_DB_PATH" MIMETYPES_DB_PATH="$USER_MIMETYPES_DB_PATH"
@ -102,10 +118,11 @@ if [ ! -d "$icons_root" ]; then
mkdir -p "$icons_root" mkdir -p "$icons_root"
fi fi
cp -f "$icon_src_path" "$icons_root/" cp -f "$icon_src_path" "$icons_root/"
if [ -f "$icons_root/$icon_name" ]; then if [ $? -eq 0 ]; then
echo "Successfully copied '$icons_root/$icon_name'" echo "Successfully copied '$icons_root/$icon_name'"
else else
echo "FAILED to install '$icons_root/$icon_name'" echo "FAILED to install '$icons_root/$icon_name' from `pwd`"
exit 1
fi fi
if [ ! -d "$applications_path" ]; then if [ ! -d "$applications_path" ]; then

View File

@ -224,16 +224,4 @@ only applies to Visual Studio users.)
## Developer Notes ## Developer Notes
See contributing.md
### Regression Tests
#### Manipulating mesh on failed load
- steps to reproduce
- File, Open, choose a mesh file such as animal_bat.b3d
- File, Open, choose a texture (purposely incorrect input)
- incorrect behaviors:
- manipulating the loaded scene, such as calling remove()
- SEGFAULT
- correct behaviors:
- Do nothing to the current scene.
- Show a message saying that the format is incorrect.