]> git.xonotic.org Git - xonotic/netradiant.git/commitdiff
freebsd: add freebsd support to library-bundler
authorThomas Debesse <dev@illwieckz.net>
Sat, 6 Mar 2021 22:55:05 +0000 (23:55 +0100)
committerThomas Debesse <dev@illwieckz.net>
Sun, 7 Mar 2021 01:06:23 +0000 (02:06 +0100)
- use gsed/gcp (from coreutils) like macos
- use ldd/patchelf like linux
- use linux library filtering like linux for now (may be improved)

library-bundler

index a1ac9ebf6a645026c303f725ce03868e20f98b79..756ebf89a25b6869e127ee86c286046c796c89d7 100755 (executable)
@@ -7,7 +7,7 @@ export LANGUAGE="${LANG}"
 
 _sed () {
        case "${system_name}" in
-               'macos')
+               'macos'|'freebsd')
                        gsed "${@}"
                        ;;
                *)
@@ -18,11 +18,11 @@ _sed () {
 
 _cp () {
        case "${system_name}" in
-               'macos')
-                       gcp -R --preserve=timestamps -H -L "${@}"
+               'macos'|'freebsd')
+                       gcp -R --preserve=timestamps -H -L "${1}" "${2}"
                        ;;
                *)
-                       cp -R --preserve=timestamps -H -L "${@}"
+                       cp -R --preserve=timestamps -H -L "${1}" "${2}"
                        ;;
        esac
 }
@@ -79,7 +79,7 @@ Common::stripLdd () {
 
 Multi::excludeLdd () {
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        # - always bundle built-in libraries
                        # - always rely on up-to-date x11 and gl libraries, bundling them will break on future distros
                        # - gtk is not easily bundlable on linux because it looks for harcoded system path to optional
@@ -128,7 +128,7 @@ Multi::printLdd () {
        local exe_file="${1}"
 
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        ldd "${exe_file}"
                        ;;
                'windows')
@@ -141,7 +141,7 @@ Multi::printLdd () {
 
 Multi::getGtkThemeName () {
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        echo 'Adwaita'
                        ;;
                'windows')
@@ -155,7 +155,7 @@ Multi::getGtkThemeName () {
 
 Multi::getGtkLibName () {
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        echo 'libgtk-x11-2.0.so.0'
                        ;;
                'windows')
@@ -171,7 +171,7 @@ Multi::getRootPrefix () {
        local lib_file="${1}"
 
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        echo "${lib_file}" \
                        | cut -f2 -d'/'
                        ;;
@@ -189,7 +189,7 @@ Multi::getLibPrefix () {
        local lib_file="${1}"
 
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        dirname "${lib_file}" \
                        | cut -f3- -d'/'
                        ;;
@@ -207,7 +207,7 @@ Multi::getGtkDeps () {
        local gtk_theme_name="${2}"
 
        case "${system_name}" in
-               'linux'|'windows')
+               'linux'|'freebsd'|'windows')
                        cat <<-EOF
                        share/themes/${gtk_theme_name}/gtk-2.0
                        share/icons/hicolor
@@ -229,7 +229,7 @@ Multi::getGtkDeps () {
        esac
 
        case "${system_name}" in
-               'linux')
+               'linux'|'freebsd')
                        cat <<-EOF
                        ${lib_prefix}/libatk-bridge-2.0.so.0
                        ${lib_prefix}/libcanberra-0.30
@@ -381,6 +381,7 @@ Linux::patchExe () {
        local exe_file="${1}"
 
        local linux_rpath_string=$"$(Linux::getRpath "${exe_file}")"
+       chmod u+w,go-w "${exe_file}"
        patchelf --set-rpath "${linux_rpath_string}" "${exe_file}"
 }
 
@@ -394,6 +395,7 @@ Linux::patchLib () {
        | while read exe_file
        do
                Linux::patchExe "${exe_file}"
+               chmod ugo-x "${exe_file}"
        done
 }
 
@@ -476,7 +478,7 @@ case "${system_name}" in
                Common::getPath "${exe_file}" > "${registry_dir}/$(uuidgen)"
                exit
                ;;
-       'linux')
+       'linux'|'freebsd')
                exe_action='Linux::patchExe'
                lib_action='Linux::patchLib'
                ;;