]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[Build-System] Add ARM64 support, extend Debian helper scripts. 2485/head
authorAndrey Volk <andywolk@gmail.com>
Sat, 11 May 2024 09:37:32 +0000 (12:37 +0300)
committers3rj1k <evasive.gyron@gmail.com>
Tue, 11 Jun 2024 14:47:14 +0000 (16:47 +0200)
Co-authored-by: s3rj1k <evasive.gyron@gmail.com>
debian/bootstrap.sh
debian/util.sh
debian/version-omit_revision.pl [new file with mode: 0755]

index aba9e38bf7047ebe6dc2ce72a6930027c1512819..fa407029385fec0fa16372fc5cd7a2265546a9d4 100755 (executable)
@@ -65,6 +65,9 @@ avoid_mods=(
 avoid_mods_armhf=(
   languages/mod_v8
 )
+avoid_mods_arm64=(
+  languages/mod_v8
+)
 avoid_mods_sid=(
   directories/mod_ldap
 )
@@ -352,7 +355,7 @@ EOF
 print_core_control () {
 cat <<EOF
 Package: freeswitch-all
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: freeswitch-meta-all (= \${binary:Version}), freeswitch-meta-all-dbg (= \${binary:Version})
 Conflicts: freeswitch-all (<= 1.6.7)
 Description: Cross-Platform Scalable Multi-Protocol Soft Switch
@@ -361,7 +364,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  This is a package which depends on all packaged FreeSWITCH modules.
 
 Package: freeswitch
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${shlibs:Depends}, \${perl:Depends}, \${misc:Depends},
  libfreeswitch1 (= \${binary:Version})
 Recommends:
@@ -373,7 +376,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  This package contains the FreeSWITCH core.
 
 Package: libfreeswitch1
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${shlibs:Depends}, \${misc:Depends}, libsofia-sip-ua0 (>= 1.13.17)
 Recommends:
 Suggests: libfreeswitch1-dbg
@@ -385,7 +388,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
 
 Package: python-esl
 Section: python
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${shlibs:Depends}, \${misc:Depends}, \${python:Depends}
 Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  $(debian_wrap "${fs_description}")
@@ -394,7 +397,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
 
 Package: libesl-perl
 Section: perl
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${shlibs:Depends}, \${misc:Depends}, \${perl:Depends}
 Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  $(debian_wrap "${fs_description}")
@@ -402,7 +405,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  This package contains the Perl binding for FreeSWITCH Event Socket Library (ESL).
 
 Package: freeswitch-meta-bare
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version})
 Recommends:
  freeswitch-doc (= \${binary:Version}),
@@ -420,7 +423,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  bare FreeSWITCH install.
 
 Package: freeswitch-meta-default
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-mod-commands (= \${binary:Version}),
  freeswitch-mod-conference (= \${binary:Version}),
@@ -462,7 +465,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  reasonably basic FreeSWITCH install.
 
 Package: freeswitch-meta-vanilla
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-init,
  freeswitch-mod-console (= \${binary:Version}),
@@ -511,7 +514,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  running the FreeSWITCH vanilla example configuration.
 
 Package: freeswitch-meta-sorbet
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
 Recommends:
  freeswitch-init,
@@ -594,7 +597,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  modules except a few which aren't recommended.
 
 Package: freeswitch-meta-all
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-init,
  freeswitch-lang (= \${binary:Version}),
@@ -705,7 +708,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  FreeSWITCH modules.
 
 Package: freeswitch-meta-codecs
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-mod-amr (= \${binary:Version}),
  freeswitch-mod-amrwb (= \${binary:Version}),
@@ -732,7 +735,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  most FreeSWITCH codecs.
 
 Package: freeswitch-meta-codecs-dbg
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-mod-amr-dbg (= \${binary:Version}),
  freeswitch-mod-amrwb-dbg (= \${binary:Version}),
@@ -759,7 +762,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  most FreeSWITCH codecs.
 
 Package: freeswitch-meta-conf
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-conf-curl (= \${binary:Version}),
  freeswitch-conf-insideout (= \${binary:Version}),
@@ -773,7 +776,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  examples for FreeSWITCH.
 
 Package: freeswitch-meta-lang
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-lang-de (= \${binary:Version}),
  freeswitch-lang-en (= \${binary:Version}),
@@ -789,7 +792,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  FreeSWITCH.
 
 Package: freeswitch-meta-mod-say
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-mod-say-de (= \${binary:Version}),
  freeswitch-mod-say-en (= \${binary:Version}),
@@ -814,7 +817,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  FreeSWITCH.
 
 Package: freeswitch-meta-mod-say-dbg
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-mod-say-de-dbg (= \${binary:Version}),
  freeswitch-mod-say-en-dbg (= \${binary:Version}),
@@ -839,7 +842,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  FreeSWITCH.
 
 Package: freeswitch-meta-all-dbg
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  freeswitch-meta-codecs-dbg (= \${binary:Version}),
  freeswitch-meta-mod-say (= \${binary:Version}),
@@ -943,7 +946,7 @@ Description: Cross-Platform Scalable Multi-Protocol Soft Switch
 Package: freeswitch-all-dbg
 Section: debug
 Priority: optional
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch-meta-all (= \${binary:Version}), freeswitch-meta-all-dbg (= \${binary:Version})
 Description: debugging symbols for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -953,7 +956,7 @@ Description: debugging symbols for FreeSWITCH
 Package: freeswitch-dbg
 Section: debug
 Priority: optional
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch (= \${binary:Version})
 Description: debugging symbols for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -963,7 +966,7 @@ Description: debugging symbols for FreeSWITCH
 Package: libfreeswitch1-dbg
 Section: debug
 Priority: optional
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, libfreeswitch1 (= \${binary:Version})
 Description: debugging symbols for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -972,7 +975,7 @@ Description: debugging symbols for FreeSWITCH
 
 Package: libfreeswitch-dev
 Section: libdevel
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, freeswitch
 Description: development libraries and header files for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -981,7 +984,7 @@ Description: development libraries and header files for FreeSWITCH
 
 Package: freeswitch-doc
 Section: doc
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}
 Description: documentation for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -994,7 +997,7 @@ Description: documentation for FreeSWITCH
 ## languages
 
 Package: freeswitch-lang
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-lang-en (= \${binary:Version})
 Description: Language files for FreeSWITCH
@@ -1006,7 +1009,7 @@ Description: Language files for FreeSWITCH
 ## timezones
 
 Package: freeswitch-timezones
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}
 Description: Timezone files for FreeSWITCH
  $(debian_wrap "${fs_description}")
@@ -1020,7 +1023,7 @@ EOF
 if [ ${use_sysvinit} = "true" ]; then
     cat <<EOF
 Package: freeswitch-sysvinit
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, lsb-base (>= 3.0-6), sysvinit | sysvinit-utils
 Conflicts: freeswitch-init
 Provides: freeswitch-init
@@ -1033,7 +1036,7 @@ EOF
 else
     cat <<EOF
 Package: freeswitch-systemd
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}, systemd
 Conflicts: freeswitch-init, freeswitch-all (<= 1.6.7)
 Provides: freeswitch-init
@@ -1051,7 +1054,7 @@ print_mod_control () {
   cat <<EOF
 Package: freeswitch-${module_name//_/-}
 Section: ${m_section}
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 $(debian_wrap "Depends: \${shlibs:Depends}, \${misc:Depends}, libfreeswitch1 (= \${binary:Version}), ${depends}")
 $(debian_wrap "Recommends: ${recommends}")
 $(debian_wrap "Suggests: freeswitch-${module_name//_/-}-dbg, ${suggests}")
@@ -1066,7 +1069,7 @@ Description: ${description} for FreeSWITCH
 Package: freeswitch-${module_name//_/-}-dbg
 Section: debug
 Priority: optional
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends},
  freeswitch-${module_name//_/-} (= \${binary:Version})
 Description: ${description} for FreeSWITCH (debug)
@@ -1131,7 +1134,7 @@ print_conf_overrides () {
 print_conf_control () {
   cat <<EOF
 Package: freeswitch-conf-${conf//_/-}
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}
 Conflicts: freeswitch-all (<= 1.6.7)
 Description: FreeSWITCH ${conf} configuration
@@ -1165,7 +1168,7 @@ print_lang_control () {
   esac
   cat <<EOF
 Package: freeswitch-lang-${lang//_/-}
-Architecture: amd64 armhf
+Architecture: amd64 armhf arm64
 Depends: \${misc:Depends}
 Recommends: freeswitch-sounds-${lang}
 Conflicts: freeswitch-all (<= 1.6.7)
index bc11f0bac1fcd7863dd0f161aac38659231ebb72..46c1f953461a643a9a5f78ee13d9731d4d159a63 100755 (executable)
@@ -140,14 +140,16 @@ prep_create_orig () {
     set -e
 
     local OPTIND OPTARG
-    local uver="" hrev="" bundle_deps=true
+    local uver="" hrev="" bundle_deps=true soft_reset=false
 
-    while getopts 'bm:nv:z:' o "$@"; do
+    while getopts 'bm:nv:V:xz:' o "$@"; do
       case "$o" in
         b) ;;
         m) ;;
         n) uver="nightly";;
         v) uver="$OPTARG";;
+        V) uver="$OPTARG";;
+        x) soft_reset=true;;
         z) ;;
       esac
     done
@@ -161,8 +163,12 @@ prep_create_orig () {
     local treeish="$1"
     [ -n "$treeish" ] || treeish="HEAD"
 
-    check_repo_clean
-    git reset --hard "$treeish"
+    if $soft_reset; then
+      git reset --soft "$treeish"
+    else
+      check_repo_clean
+      git reset --hard "$treeish"
+    fi
 
     if $bundle_deps; then
       (cd libs && getlibs)
@@ -180,23 +186,29 @@ create_orig () {
     set -e
 
     local OPTIND OPTARG
-    local bundle_deps=true modules_list="" zl=9e
+    local bundle_deps=true modules_list="" soft_reset=false auto_orig=false zl=9e
 
     local uver="$(prep_create_orig "$@")"
 
-    while getopts 'bm:nv:z:' o "$@"; do
+    while getopts 'bm:nv:V:xz:' o "$@"; do
       case "$o" in
         b) ;;
         m) modules_list="$OPTARG";;
         n) ;;
         v) ;;
+        V) auto_orig=true;;
+        x) soft_reset=true;;
         z) zl="$OPTARG";;
       esac
     done
     shift $(($OPTIND-1))
 
-    local dver="$(mk_dver "$uver")"
-    local orig="../freeswitch_$dver~$(lsb_release -sc).orig.tar.xz"
+    local orig
+    if $auto_orig; then
+      orig="../freeswitch_$(debian/version-omit_revision.pl).orig.tar.xz"
+    else
+      orig="../freeswitch_$(mk_dver "$uver")~$(lsb_release -sc).orig.tar.xz"
+    fi
 
     mv .gitattributes .gitattributes.orig
 
@@ -223,7 +235,11 @@ create_orig () {
 
     mv .gitattributes.orig .gitattributes
 
-    git reset --hard HEAD^ && git clean -fdx
+    if $soft_reset; then
+      git reset --soft HEAD^
+    else
+      git reset --hard HEAD^ && git clean -fdx
+    fi
   } 1>&2
   echo $orig
 }
@@ -292,9 +308,9 @@ create_dsc () {
 
     prep_create_dsc "$@"
 
-    local OPTIND OPTARG suite_postfix="" suite_postfix_p=false zl=9
+    local OPTIND OPTARG suite_postfix="" suite_postfix_p=false soft_reset=false zl=9
 
-    while getopts 'a:f:m:p:s:u:z:' o "$@"; do
+    while getopts 'a:f:m:p:s:u:xz:' o "$@"; do
       case "$o" in
         a) ;;
         f) ;;
@@ -302,6 +318,7 @@ create_dsc () {
         p) ;;
         s) ;;
         u) suite_postfix="$OPTARG"; suite_postfix_p=true;;
+        x) soft_reset=true;;
         z) zl="$OPTARG";;
       esac
     done
@@ -328,7 +345,11 @@ create_dsc () {
 
     local dsc="../$(dsc_base).dsc"
 
-    git reset --hard HEAD^ && git clean -fdx
+    if $soft_reset; then
+      git reset --soft HEAD^
+    else
+      git reset --hard HEAD^ && git clean -fdx
+    fi
   } 1>&2
   echo $dsc
 }
@@ -686,6 +707,7 @@ commands:
       Set FS bootstrap/build -j flags
     -u <suite-postfix>
       Specify a custom suite postfix
+    -x Use git soft reset instead of hard reset
     -z Set compression level
 
   create-orig <treeish> (same for 'prep_create_orig')
@@ -694,6 +716,8 @@ commands:
       Choose custom list of modules to build
     -n Nightly build
     -v Set version
+    -V Set version (without replacing every '-' to '~')
+    -x Use git soft reset instead of hard reset
     -z Set compression level
 
 EOF
diff --git a/debian/version-omit_revision.pl b/debian/version-omit_revision.pl
new file mode 100755 (executable)
index 0000000..c6f5767
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Dpkg::Version;
+
+my $version;
+
+open(my $fh, '-|', 'dpkg-parsechangelog -S version') or die "Failed to execute dpkg-parsechangelog: $!";
+{
+    local $/;
+    $version = <$fh>;
+}
+close $fh;
+
+$version =~ s/\s+$//;
+
+die "No version found or empty output from dpkg-parsechangelog" unless defined $version and $version ne '';
+
+my $v = Dpkg::Version->new($version);
+my $vs = $v->as_string(omit_epoch => 1, omit_revision => 1);
+
+print "$vs\n";