Hi,

Thanks for having a look at this.

Am 05.09.2020 um 21:30 schrieb Adolf Belka <ahb.ipfire@gmail.com>:

Hallo Jonatan,

Having looked at /usr/lib further I have noted that programmes such as conntrack-tools and collectd just use .so files and the solution with them is to have their own directory under /usr/lib.

So I could do the same with bacula and change the libdir in configure to be /usr/lib/bacula. I think that should solve the problem. Just have to remember to do the change when the next bacula update occurs.

Regards,

Adolf

On 05/09/2020 21:14, Adolf Belka wrote:
Hallo Jonatan,

I see that you have a rule to remove all .so shared libraries from /usr/lib

With the bacula addon, this will give a problem as bacula have a different approach to the naming of their shared libraries

/usr/lib/libbac-9.6.5.so
/usr/lib/libbaccfg-9.6.5.so
/usr/lib/libbaccfg.so -> libbaccfg-9.6.5.so
/usr/lib/libbacfind-9.6.5.so
/usr/lib/libbacfind.so -> libbacfind-9.6.5.so
/usr/lib/libbac.so -> libbac-9.6.5.so

Thanks for pointing this out. So the patch shows that our wiki is inaccurate. You are right that the patch in the current version, is not suitable for production.

As you can see the .so is at the end of all the files so that rule would remove all shared libraries causing bacula to fail to load.

If this rule is implemented in make.sh then the only option I can think of for bacula would be to change the library location from /usr/lib to /lib unless someone else has any suggestions for how I could deal with it.

suggest dropping the patch in the current version 😉. Sometimes a good workaround is worth a lot, but here I should improve the script to detect these situations and handle them gracefully.

So no need to do anything 🙂. The only one which need to do things is myself 😒.
I will raise this topic in the telephone conference tomorrow.



Greetings Jonatan

Regards,

Adolf

On 05/09/2020 10:40, Jonatan Schlag wrote:
There are some rules which files should be definitely not included in a
rootfile. Applying these rules by hand is error prone and annoying. So I
wrote these simple command, because computer can apply these rules
faster and better than humans :-;

It removes all lines starting with '-' and comment out all lines which
point to files which should not be included in the distribution. This
list needs to be extended, but I think this is a good starting point to
make the creating of rootfiles easier.

Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
  make.sh | 37 ++++++++++++++++++++++++++++++++++++-
  1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/make.sh b/make.sh
index 4a9dd3cb6..909d4a4de 100755
--- a/make.sh
+++ b/make.sh
@@ -1895,6 +1895,41 @@ downloadsrc)
      fi
      cd - >/dev/null 2>&1
      ;;
+format-rootfile)
+    if [ ! -f $2 ]; then
+        echo -n "'$2' is not a regular file"
+        beautify message FAIL
+        exit 1
+    fi
+
+    ROOTFILE_TO_FORMAT="$2"
+
+    # Remove all .so files in /usr/lib
+    sed -i '/^\+usr\/lib\/.*\.so$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all .a files in /usr/lib
+    sed -i '/^\+usr\/lib\/.*\.a$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+
+    # Remove all .la files in /usr/lib
+    sed -i '/^\+usr\/lib\/.*\.la$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all .hpp files in /usr/include
+    sed -i '/^\+usr\/include\/.*\.hpp$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all .h files in /usr/include
+    sed -i '/^\+usr\/include\/.*\.h$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all .ipp files in /usr/include
+    sed -i '/^\+usr\/include\/.*\.ipp$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all .m4 files in /usr/share/aclocal
+    sed -i '/^\+usr\/share\/aclocal\/.*\.h$/s/+/#/g' "$ROOTFILE_TO_FORMAT"
+
+    # Remove all lines starting with -
+    sed -i '/^-.*$/d' "$ROOTFILE_TO_FORMAT"
+
+;;
  toolchain)
      # Clear screen
      ${INTERACTIVE} && clear
@@ -1990,7 +2025,7 @@ find-dependencies)
      exec "${BASEDIR}/tools/find-dependencies" "${BASEDIR}/build" "$@"
      ;;
  *)
-    echo "Usage: $0 {build|changelog|clean|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors|find-dependencies}"
+    echo "Usage: $0 {build|changelog|clean|format-rootfile|gettoolchain|downloadsrc|shell|sync|toolchain|update-contributors|find-dependencies}"
      cat doc/make.sh-usage
      ;;
  esac