bootstrap.sh 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517
  1. #!/bin/bash
  2. ##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*-
  3. ##### Author: Travis Cross <tc@traviscross.com>
  4. codename="sid"
  5. modulelist_opt=""
  6. modules_add=""
  7. use_sysvinit=""
  8. while getopts "a:c:m:p:v" o; do
  9. case "$o" in
  10. a) avoid_mods_arch="$OPTARG" ;;
  11. c) codename="$OPTARG" ;;
  12. m) modulelist_opt="$OPTARG" ;;
  13. p) modules_add="$modules_add $OPTARG";;
  14. v) use_sysvinit="true";;
  15. esac
  16. done
  17. shift $(($OPTIND-1))
  18. if [ x${use_sysvinit} = x ]; then
  19. case "$codename" in
  20. wheezy|trusty|utopic|xenial) use_sysvinit="true";;
  21. *) use_sysvinit="false";;
  22. esac
  23. fi
  24. mod_dir="../src/mod"
  25. conf_dir="../conf"
  26. lang_dir="../conf/vanilla/lang"
  27. fs_description="FreeSWITCH is a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media."
  28. mod_build_depends="." mod_depends="." mod_recommends="." mod_suggests="."
  29. supported_debian_distros="wheezy jessie stretch buster bullseye bookworm sid"
  30. supported_ubuntu_distros="trusty utopic xenial"
  31. supported_distros="$supported_debian_distros $supported_ubuntu_distros"
  32. avoid_mods=(
  33. applications/mod_sms_flowroute
  34. applications/mod_limit
  35. applications/mod_mongo
  36. applications/mod_mp4
  37. applications/mod_mp4v2
  38. applications/mod_osp
  39. applications/mod_rad_auth
  40. applications/mod_skel
  41. applications/mod_cluechoo
  42. asr_tts/mod_cepstral
  43. codecs/mod_com_g729
  44. codecs/mod_openh264
  45. codecs/mod_siren
  46. codecs/mod_sangoma_codec
  47. codecs/mod_skel_codec
  48. endpoints/mod_gsmopen
  49. endpoints/mod_h323
  50. endpoints/mod_khomp
  51. endpoints/mod_opal
  52. endpoints/mod_reference
  53. endpoints/mod_skypopen
  54. endpoints/mod_unicall
  55. event_handlers/mod_smpp
  56. event_handlers/mod_event_zmq
  57. formats/mod_webm
  58. sdk/autotools
  59. xml_int/mod_xml_ldap
  60. xml_int/mod_xml_radius
  61. )
  62. avoid_mods_armhf=(
  63. languages/mod_v8
  64. )
  65. avoid_mods_arm64=(
  66. languages/mod_v8
  67. )
  68. avoid_mods_sid=(
  69. directories/mod_ldap
  70. )
  71. avoid_mods_jessie=(
  72. directories/mod_ldap
  73. )
  74. avoid_mods_bookworm=(
  75. languages/mod_python
  76. )
  77. avoid_mods_wheezy=(
  78. event_handlers/mod_amqp
  79. languages/mod_java
  80. languages/mod_managed
  81. applications/mod_av
  82. applications/mod_cv
  83. applications/mod_hiredis
  84. formats/mod_shout
  85. applications/mod_sonar
  86. applications/mod_soundtouch
  87. formats/mod_vlc
  88. )
  89. avoid_mods_trusty=(
  90. event_handlers/mod_amqp
  91. loggers/mod_raven
  92. )
  93. avoid_mods_utopic=(
  94. directories/mod_ldap
  95. loggers/mod_raven
  96. )
  97. avoid_mods_xenial=(
  98. event_handlers/mod_ldap
  99. event_handlers/mod_amqp
  100. asr_tts/mod_flite
  101. loggers/mod_raven
  102. )
  103. manual_pkgs=(
  104. freeswitch-all
  105. freeswitch
  106. libfreeswitch1
  107. freeswitch-meta-bare
  108. freeswitch-meta-default
  109. freeswitch-meta-vanilla
  110. freeswitch-meta-sorbet
  111. freeswitch-meta-all
  112. freeswitch-meta-codecs
  113. freeswitch-meta-conf
  114. freeswitch-meta-lang
  115. freeswitch-meta-mod-say
  116. freeswitch-all-dbg
  117. freeswitch-dbg
  118. libfreeswitch1-dbg
  119. libfreeswitch-dev
  120. freeswitch-doc
  121. freeswitch-lang
  122. freeswitch-timezones
  123. )
  124. if [ ${use_sysvinit} = "true" ]; then
  125. manual_pkgs=( "${manual_pkgs[@]}" "freeswitch-sysvinit" )
  126. else
  127. manual_pkgs=( "${manual_pkgs[@]}" "freeswitch-systemd" )
  128. fi
  129. err () {
  130. echo "$0 error: $1" >&2
  131. exit 1
  132. }
  133. xread () {
  134. local xIFS="$IFS"
  135. IFS=''
  136. read $@
  137. local ret=$?
  138. IFS="$xIFS"
  139. return $ret
  140. }
  141. intersperse () {
  142. local sep="$1"
  143. awk "
  144. BEGIN {
  145. first=1;
  146. sep=\"${sep}\";
  147. }"'
  148. /.*/ {
  149. if (first == 0) {
  150. printf "%s%s", sep, $0;
  151. } else {
  152. printf "%s", $0;
  153. }
  154. first=0;
  155. }
  156. END { printf "\n"; }'
  157. }
  158. postfix () {
  159. local px="$1"
  160. awk "
  161. BEGIN { px=\"${px}\"; }"'
  162. /.*/ { printf "%s%s\n", $0, px; }'
  163. }
  164. avoid_mod_filter () {
  165. local x="avoid_mods_$codename[@]"
  166. local y="avoid_mods_$avoid_mods_arch[@]"
  167. local -a mods=("${avoid_mods[@]}" "${!x}" "${!y}")
  168. for x in "${mods[@]}"; do
  169. if [ "$1" = "$x" ]; then
  170. [ "$2" = "show" ] && echo "excluding module $x" >&2
  171. return 1
  172. fi
  173. done
  174. return 0
  175. }
  176. modconf_filter () {
  177. while xread l; do
  178. if [ "$1" = "$l" ]; then
  179. [ "$2" = "show" ] && echo "including module $l" >&2
  180. return 0
  181. fi
  182. done < modules.conf
  183. return 1
  184. }
  185. mod_filter () {
  186. if test -f modules.conf; then
  187. modconf_filter $@
  188. else
  189. avoid_mod_filter $@
  190. fi
  191. }
  192. mod_filter_show () {
  193. mod_filter "$1" show
  194. }
  195. map_fs_modules () {
  196. local filterfn="$1" percatfns="$2" permodfns="$3"
  197. for x in $mod_dir/*; do
  198. test -d $x || continue
  199. test ! ${x##*/} = legacy || continue
  200. category=${x##*/} category_path=$x
  201. for f in $percatfns; do $f; done
  202. for y in $x/*; do
  203. module_name=${y##*/} module_path=$y
  204. module=$category/$module_name
  205. if $filterfn $category/$module; then
  206. [ -f ${y}/module ] && . ${y}/module
  207. for f in $permodfns; do $f; done
  208. fi
  209. unset module_name module_path module
  210. done
  211. unset category category_path
  212. done
  213. }
  214. map_modules () {
  215. local filterfn="$1" percatfns="$2" permodfns="$3"
  216. for x in $parse_dir/*; do
  217. test -d $x || continue
  218. category=${x##*/} category_path=$x
  219. for f in $percatfns; do $f; done
  220. for y in $x/*; do
  221. test -f $y || continue
  222. module=${y##*/} module_path=$y
  223. $filterfn $category/$module || continue
  224. module="" category="" module_name=""
  225. section="" description="" long_description=""
  226. build_depends="" depends="" recommends="" suggests=""
  227. distro_conflicts=""
  228. distro_vars=""
  229. for x in $supported_distros; do
  230. distro_vars="$distro_vars build_depends_$x"
  231. eval build_depends_$x=""
  232. done
  233. . $y
  234. [ -n "$description" ] || description="$module_name"
  235. [ -n "$long_description" ] || description="Adds ${module_name}."
  236. for f in $permodfns; do $f; done
  237. unset \
  238. module module_name module_path \
  239. section description long_description \
  240. build_depends depends recommends suggests \
  241. distro_conflicts $distro_vars
  242. done
  243. unset category category_path
  244. done
  245. }
  246. map_confs () {
  247. local fs="$1"
  248. for x in $conf_dir/*; do
  249. test ! -d $x && continue
  250. conf=${x##*/} conf_dir=$x
  251. for f in $fs; do $f; done
  252. unset conf conf_dir
  253. done
  254. }
  255. map_langs () {
  256. local fs="$1"
  257. for x in $lang_dir/*; do
  258. test ! -d $x && continue
  259. lang=${x##*/} lang_dir=$x
  260. for f in $fs; do $f; done
  261. unset lang lang_dir
  262. done
  263. }
  264. map_pkgs () {
  265. local fsx="$1"
  266. for x in "${manual_pkgs[@]}"; do
  267. $fsx $x
  268. done
  269. map_pkgs_confs () { $fsx "freeswitch-conf-${conf//_/-}"; }
  270. map_confs map_pkgs_confs
  271. map_pkgs_langs () { $fsx "freeswitch-lang-${lang//_/-}"; }
  272. map_langs map_pkgs_langs
  273. map_pkgs_mods () {
  274. $fsx "freeswitch-${module//_/-}"
  275. $fsx "freeswitch-${module//_/-}-dbg"; }
  276. map_modules map_pkgs_mods
  277. }
  278. list_pkgs () {
  279. list_pkgs_thunk () { printf '%s\n' "$1"; }
  280. map_pkgs list_pkgs_thunk
  281. }
  282. print_source_control () {
  283. local libtool_dep="libtool, libtool-bin"
  284. case "$codename" in
  285. wheezy|trusty) libtool_dep="libtool" ;;
  286. esac
  287. local debhelper_dep="debhelper (>= 8.0.0)"
  288. if [ ${use_sysvinit} = "false" ]; then
  289. debhelper_dep=${debhelper_dep}", dh-systemd | debhelper (>= 8.0.0)"
  290. fi
  291. cat <<EOF
  292. Source: freeswitch
  293. Section: comm
  294. Priority: optional
  295. Maintainer: SignalWire, Inc <support@signalwire.com>
  296. Build-Depends:
  297. # for debian
  298. ${debhelper_dep},
  299. # bootstrapping
  300. automake (>= 1.9), autoconf, ${libtool_dep},
  301. # core build
  302. dpkg-dev (>= 1.15.8.12), gcc (>= 4:4.4.5), g++ (>= 4:4.4.5),
  303. libc6-dev (>= 2.11.3), make (>= 3.81),
  304. libpcre3-dev,
  305. libedit-dev (>= 2.11),
  306. libsqlite3-dev,
  307. libtiff5-dev,
  308. wget, pkg-config,
  309. yasm,
  310. # core codecs
  311. libogg-dev, libspeex-dev, libspeexdsp-dev,
  312. # configure options
  313. libssl1.0-dev | libssl-dev, unixodbc-dev, libpq-dev,
  314. libncurses5-dev, libjpeg62-turbo-dev | libjpeg-turbo8-dev | libjpeg62-dev | libjpeg8-dev,
  315. python-dev | python-dev-is-python2 | python-dev-is-python3, python3-dev, python-all-dev | python3-all-dev, python-support (>= 0.90) | dh-python, erlang-dev, libtpl-dev (>= 1.5),
  316. # documentation
  317. doxygen,
  318. # for APR (not essential for build)
  319. uuid-dev, libexpat1-dev, libgdbm-dev, libdb-dev,
  320. # used by many modules
  321. libcurl4-openssl-dev | libcurl4-gnutls-dev | libcurl-dev,
  322. bison, zlib1g-dev, libsofia-sip-ua-dev (>= 1.13.17),
  323. libspandsp3-dev,
  324. # used to format the private freeswitch apt-repo key properly
  325. gnupg,
  326. # module build-depends
  327. $(debian_wrap "${mod_build_depends}")
  328. Standards-Version: 3.9.3
  329. Homepage: https://freeswitch.org/
  330. Vcs-Git: https://github.com/signalwire/freeswitch.git
  331. Vcs-Browser: https://github.com/signalwire/freeswitch
  332. EOF
  333. }
  334. print_core_control () {
  335. cat <<EOF
  336. Package: freeswitch-all
  337. Architecture: amd64 armhf arm64
  338. Depends: freeswitch-meta-all (= \${binary:Version}), freeswitch-meta-all-dbg (= \${binary:Version})
  339. Conflicts: freeswitch-all (<= 1.6.7)
  340. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  341. $(debian_wrap "${fs_description}")
  342. .
  343. This is a package which depends on all packaged FreeSWITCH modules.
  344. Package: freeswitch
  345. Architecture: amd64 armhf arm64
  346. Depends: \${shlibs:Depends}, \${perl:Depends}, \${misc:Depends},
  347. libfreeswitch1 (= \${binary:Version})
  348. Recommends:
  349. Suggests: freeswitch-dbg
  350. Conflicts: freeswitch-all (<= 1.6.7)
  351. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  352. $(debian_wrap "${fs_description}")
  353. .
  354. This package contains the FreeSWITCH core.
  355. Package: libfreeswitch1
  356. Architecture: amd64 armhf arm64
  357. Depends: \${shlibs:Depends}, \${misc:Depends}, libsofia-sip-ua0 (>= 1.13.17)
  358. Recommends:
  359. Suggests: libfreeswitch1-dbg
  360. Conflicts: freeswitch-all (<= 1.6.7)
  361. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  362. $(debian_wrap "${fs_description}")
  363. .
  364. This package contains the FreeSWITCH core library.
  365. Package: python-esl
  366. Section: python
  367. Architecture: amd64 armhf arm64
  368. Depends: \${shlibs:Depends}, \${misc:Depends}, \${python:Depends}
  369. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  370. $(debian_wrap "${fs_description}")
  371. .
  372. This package contains the Python binding for FreeSWITCH Event Socket Library (ESL).
  373. Package: libesl-perl
  374. Section: perl
  375. Architecture: amd64 armhf arm64
  376. Depends: \${shlibs:Depends}, \${misc:Depends}, \${perl:Depends}
  377. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  378. $(debian_wrap "${fs_description}")
  379. .
  380. This package contains the Perl binding for FreeSWITCH Event Socket Library (ESL).
  381. Package: freeswitch-meta-bare
  382. Architecture: amd64 armhf arm64
  383. Depends: \${misc:Depends}, freeswitch (= \${binary:Version})
  384. Recommends:
  385. freeswitch-doc (= \${binary:Version}),
  386. freeswitch-mod-commands (= \${binary:Version}),
  387. freeswitch-init,
  388. freeswitch-lang (= \${binary:Version}),
  389. freeswitch-timezones (= \${binary:Version}),
  390. freeswitch-music,
  391. freeswitch-sounds
  392. Suggests:
  393. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  394. $(debian_wrap "${fs_description}")
  395. .
  396. This is a metapackage which depends on the packages needed for a very
  397. bare FreeSWITCH install.
  398. Package: freeswitch-meta-default
  399. Architecture: amd64 armhf arm64
  400. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  401. freeswitch-mod-commands (= \${binary:Version}),
  402. freeswitch-mod-conference (= \${binary:Version}),
  403. freeswitch-mod-db (= \${binary:Version}),
  404. freeswitch-mod-dptools (= \${binary:Version}),
  405. freeswitch-mod-fifo (= \${binary:Version}),
  406. freeswitch-mod-hash (= \${binary:Version}),
  407. freeswitch-mod-pgsql (= \${binary:Version}),
  408. freeswitch-mod-spandsp (= \${binary:Version}),
  409. freeswitch-mod-voicemail (= \${binary:Version}),
  410. freeswitch-mod-dialplan-xml (= \${binary:Version}),
  411. freeswitch-mod-loopback (= \${binary:Version}),
  412. freeswitch-mod-sofia (= \${binary:Version}),
  413. freeswitch-mod-local-stream (= \${binary:Version}),
  414. freeswitch-mod-native-file (= \${binary:Version}),
  415. freeswitch-mod-sndfile (= \${binary:Version}),
  416. freeswitch-mod-tone-stream (= \${binary:Version}),
  417. freeswitch-mod-lua (= \${binary:Version}),
  418. freeswitch-mod-console (= \${binary:Version}),
  419. freeswitch-mod-say-en (= \${binary:Version})
  420. Recommends:
  421. freeswitch-init,
  422. freeswitch-lang (= \${binary:Version}),
  423. freeswitch-timezones (= \${binary:Version}),
  424. freeswitch-meta-codecs (= \${binary:Version}),
  425. freeswitch-music,
  426. freeswitch-sounds
  427. Suggests:
  428. freeswitch-mod-cidlookup (= \${binary:Version}),
  429. freeswitch-mod-curl (= \${binary:Version}),
  430. freeswitch-mod-directory (= \${binary:Version}),
  431. freeswitch-mod-enum (= \${binary:Version}),
  432. freeswitch-mod-spy (= \${binary:Version}),
  433. freeswitch-mod-valet-parking (= \${binary:Version})
  434. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  435. $(debian_wrap "${fs_description}")
  436. .
  437. This is a metapackage which depends on the packages needed for a
  438. reasonably basic FreeSWITCH install.
  439. Package: freeswitch-meta-vanilla
  440. Architecture: amd64 armhf arm64
  441. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  442. freeswitch-init,
  443. freeswitch-mod-console (= \${binary:Version}),
  444. freeswitch-mod-logfile (= \${binary:Version}),
  445. freeswitch-mod-enum (= \${binary:Version}),
  446. freeswitch-mod-cdr-csv (= \${binary:Version}),
  447. freeswitch-mod-event-socket (= \${binary:Version}),
  448. freeswitch-mod-sofia (= \${binary:Version}),
  449. freeswitch-mod-loopback (= \${binary:Version}),
  450. freeswitch-mod-commands (= \${binary:Version}),
  451. freeswitch-mod-conference (= \${binary:Version}),
  452. freeswitch-mod-db (= \${binary:Version}),
  453. freeswitch-mod-dptools (= \${binary:Version}),
  454. freeswitch-mod-expr (= \${binary:Version}),
  455. freeswitch-mod-fifo (= \${binary:Version}),
  456. freeswitch-mod-hash (= \${binary:Version}),
  457. freeswitch-mod-pgsql (= \${binary:Version}),
  458. freeswitch-mod-voicemail (= \${binary:Version}),
  459. freeswitch-mod-esf (= \${binary:Version}),
  460. freeswitch-mod-fsv (= \${binary:Version}),
  461. freeswitch-mod-valet-parking (= \${binary:Version}),
  462. freeswitch-mod-httapi (= \${binary:Version}),
  463. freeswitch-mod-dialplan-xml (= \${binary:Version}),
  464. freeswitch-mod-dialplan-asterisk (= \${binary:Version}),
  465. freeswitch-mod-spandsp (= \${binary:Version}),
  466. freeswitch-mod-g723-1 (= \${binary:Version}),
  467. freeswitch-mod-g729 (= \${binary:Version}),
  468. freeswitch-mod-amr (= \${binary:Version}),
  469. freeswitch-mod-h26x (= \${binary:Version}),
  470. freeswitch-mod-sndfile (= \${binary:Version}),
  471. freeswitch-mod-native-file (= \${binary:Version}),
  472. freeswitch-mod-local-stream (= \${binary:Version}),
  473. freeswitch-mod-tone-stream (= \${binary:Version}),
  474. freeswitch-mod-lua (= \${binary:Version}),
  475. freeswitch-mod-say-en (= \${binary:Version}),
  476. Recommends:
  477. freeswitch-lang (= \${binary:Version}),
  478. freeswitch-timezones (= \${binary:Version}),
  479. freeswitch-music,
  480. freeswitch-sounds,
  481. freeswitch-conf-vanilla (= \${binary:Version}),
  482. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  483. $(debian_wrap "${fs_description}")
  484. .
  485. This is a metapackage which depends on the packages needed for
  486. running the FreeSWITCH vanilla example configuration.
  487. Package: freeswitch-meta-sorbet
  488. Architecture: amd64 armhf arm64
  489. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  490. Recommends:
  491. freeswitch-init,
  492. freeswitch-lang (= \${binary:Version}),
  493. freeswitch-timezones (= \${binary:Version}),
  494. freeswitch-meta-codecs (= \${binary:Version}),
  495. freeswitch-music,
  496. freeswitch-sounds,
  497. freeswitch-mod-abstraction (= \${binary:Version}),
  498. freeswitch-mod-avmd (= \${binary:Version}),
  499. freeswitch-mod-blacklist (= \${binary:Version}),
  500. freeswitch-mod-callcenter (= \${binary:Version}),
  501. freeswitch-mod-cidlookup (= \${binary:Version}),
  502. freeswitch-mod-commands (= \${binary:Version}),
  503. freeswitch-mod-conference (= \${binary:Version}),
  504. freeswitch-mod-curl (= \${binary:Version}),
  505. freeswitch-mod-db (= \${binary:Version}),
  506. freeswitch-mod-directory (= \${binary:Version}),
  507. freeswitch-mod-distributor (= \${binary:Version}),
  508. freeswitch-mod-dptools (= \${binary:Version}),
  509. freeswitch-mod-easyroute (= \${binary:Version}),
  510. freeswitch-mod-enum (= \${binary:Version}),
  511. freeswitch-mod-esf (= \${binary:Version}),
  512. freeswitch-mod-esl (= \${binary:Version}),
  513. freeswitch-mod-expr (= \${binary:Version}),
  514. freeswitch-mod-fifo (= \${binary:Version}),
  515. freeswitch-mod-fsk (= \${binary:Version}),
  516. freeswitch-mod-fsv (= \${binary:Version}),
  517. freeswitch-mod-hash (= \${binary:Version}),
  518. freeswitch-mod-httapi (= \${binary:Version}),
  519. freeswitch-mod-http-cache (= \${binary:Version}),
  520. freeswitch-mod-lcr (= \${binary:Version}),
  521. freeswitch-mod-nibblebill (= \${binary:Version}),
  522. freeswitch-mod-oreka (= \${binary:Version}),
  523. freeswitch-mod-pgsql (= \${binary:Version}),
  524. freeswitch-mod-redis (= \${binary:Version}),
  525. freeswitch-mod-rss (= \${binary:Version}),
  526. freeswitch-mod-sms (= \${binary:Version}),
  527. freeswitch-mod-snapshot (= \${binary:Version}),
  528. freeswitch-mod-snom (= \${binary:Version}),
  529. freeswitch-mod-sonar (= \${binary:Version}),
  530. freeswitch-mod-soundtouch (= \${binary:Version}),
  531. freeswitch-mod-spandsp (= \${binary:Version}),
  532. freeswitch-mod-spy (= \${binary:Version}),
  533. freeswitch-mod-stress (= \${binary:Version}),
  534. freeswitch-mod-valet-parking (= \${binary:Version}),
  535. freeswitch-mod-vmd (= \${binary:Version}),
  536. freeswitch-mod-voicemail (= \${binary:Version}),
  537. freeswitch-mod-voicemail-ivr (= \${binary:Version}),
  538. freeswitch-mod-flite (= \${binary:Version}),
  539. freeswitch-mod-pocketsphinx (= \${binary:Version}),
  540. freeswitch-mod-tts-commandline (= \${binary:Version}),
  541. freeswitch-mod-dialplan-xml (= \${binary:Version}),
  542. freeswitch-mod-loopback (= \${binary:Version}),
  543. freeswitch-mod-rtmp (= \${binary:Version}),
  544. freeswitch-mod-skinny (= \${binary:Version}),
  545. freeswitch-mod-sofia (= \${binary:Version}),
  546. freeswitch-mod-cdr-csv (= \${binary:Version}),
  547. freeswitch-mod-cdr-sqlite (= \${binary:Version}),
  548. freeswitch-mod-event-socket (= \${binary:Version}),
  549. freeswitch-mod-json-cdr (= \${binary:Version}),
  550. freeswitch-mod-local-stream (= \${binary:Version}),
  551. freeswitch-mod-native-file (= \${binary:Version}),
  552. freeswitch-mod-shell-stream (= \${binary:Version}),
  553. freeswitch-mod-sndfile (= \${binary:Version}),
  554. freeswitch-mod-tone-stream (= \${binary:Version}),
  555. freeswitch-mod-lua (= \${binary:Version}),
  556. freeswitch-mod-console (= \${binary:Version}),
  557. freeswitch-mod-logfile (= \${binary:Version}),
  558. freeswitch-mod-syslog (= \${binary:Version}),
  559. freeswitch-mod-say-en (= \${binary:Version}),
  560. freeswitch-mod-posix-timer (= \${binary:Version}),
  561. freeswitch-mod-timerfd (= \${binary:Version}),
  562. freeswitch-mod-xml-cdr (= \${binary:Version}),
  563. freeswitch-mod-xml-curl (= \${binary:Version}),
  564. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  565. $(debian_wrap "${fs_description}")
  566. .
  567. This is a metapackage which recommends most packaged FreeSWITCH
  568. modules except a few which aren't recommended.
  569. Package: freeswitch-meta-all
  570. Architecture: amd64 armhf arm64
  571. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  572. freeswitch-init,
  573. freeswitch-lang (= \${binary:Version}),
  574. freeswitch-timezones (= \${binary:Version}),
  575. freeswitch-meta-codecs (= \${binary:Version}),
  576. freeswitch-meta-conf (= \${binary:Version}),
  577. freeswitch-meta-lang (= \${binary:Version}),
  578. freeswitch-meta-mod-say (= \${binary:Version}),
  579. freeswitch-music,
  580. freeswitch-sounds,
  581. freeswitch-mod-abstraction (= \${binary:Version}),
  582. freeswitch-mod-avmd (= \${binary:Version}),
  583. freeswitch-mod-av (= \${binary:Version}),
  584. freeswitch-mod-blacklist (= \${binary:Version}),
  585. freeswitch-mod-callcenter (= \${binary:Version}),
  586. freeswitch-mod-cidlookup (= \${binary:Version}),
  587. freeswitch-mod-commands (= \${binary:Version}),
  588. freeswitch-mod-conference (= \${binary:Version}),
  589. freeswitch-mod-curl (= \${binary:Version}),
  590. freeswitch-mod-db (= \${binary:Version}),
  591. freeswitch-mod-directory (= \${binary:Version}),
  592. freeswitch-mod-distributor (= \${binary:Version}),
  593. freeswitch-mod-dptools (= \${binary:Version}),
  594. freeswitch-mod-easyroute (= \${binary:Version}),
  595. freeswitch-mod-enum (= \${binary:Version}),
  596. freeswitch-mod-esf (= \${binary:Version}),
  597. freeswitch-mod-esl (= \${binary:Version}),
  598. freeswitch-mod-expr (= \${binary:Version}),
  599. freeswitch-mod-fifo (= \${binary:Version}),
  600. freeswitch-mod-fsk (= \${binary:Version}),
  601. freeswitch-mod-fsv (= \${binary:Version}),
  602. freeswitch-mod-hash (= \${binary:Version}),
  603. freeswitch-mod-httapi (= \${binary:Version}),
  604. freeswitch-mod-http-cache (= \${binary:Version}),
  605. freeswitch-mod-lcr (= \${binary:Version}),
  606. freeswitch-mod-memcache (= \${binary:Version}),
  607. freeswitch-mod-nibblebill (= \${binary:Version}),
  608. freeswitch-mod-oreka (= \${binary:Version}),
  609. freeswitch-mod-mariadb (= \${binary:Version}),
  610. freeswitch-mod-pgsql (= \${binary:Version}),
  611. freeswitch-mod-png (= \${binary:Version}),
  612. freeswitch-mod-redis (= \${binary:Version}),
  613. freeswitch-mod-rss (= \${binary:Version}),
  614. freeswitch-mod-signalwire (= \${binary:Version}),
  615. freeswitch-mod-shout (= \${binary:Version}),
  616. freeswitch-mod-sms (= \${binary:Version}),
  617. freeswitch-mod-snapshot (= \${binary:Version}),
  618. freeswitch-mod-snom (= \${binary:Version}),
  619. freeswitch-mod-sonar (= \${binary:Version}),
  620. freeswitch-mod-soundtouch (= \${binary:Version}),
  621. freeswitch-mod-spandsp (= \${binary:Version}),
  622. freeswitch-mod-spy (= \${binary:Version}),
  623. freeswitch-mod-stress (= \${binary:Version}),
  624. freeswitch-mod-translate (= \${binary:Version}),
  625. freeswitch-mod-valet-parking (= \${binary:Version}),
  626. freeswitch-mod-video-filter (= \${binary:Version}),
  627. freeswitch-mod-voicemail (= \${binary:Version}),
  628. freeswitch-mod-voicemail-ivr (= \${binary:Version}),
  629. freeswitch-mod-flite (= \${binary:Version}),
  630. freeswitch-mod-pocketsphinx (= \${binary:Version}),
  631. freeswitch-mod-tts-commandline (= \${binary:Version}),
  632. freeswitch-mod-dialplan-asterisk (= \${binary:Version}),
  633. freeswitch-mod-dialplan-directory (= \${binary:Version}),
  634. freeswitch-mod-dialplan-xml (= \${binary:Version}),
  635. freeswitch-mod-loopback (= \${binary:Version}),
  636. freeswitch-mod-portaudio (= \${binary:Version}),
  637. freeswitch-mod-rtc (= \${binary:Version}),
  638. freeswitch-mod-rtmp (= \${binary:Version}),
  639. freeswitch-mod-skinny (= \${binary:Version}),
  640. freeswitch-mod-sofia (= \${binary:Version}),
  641. freeswitch-mod-verto (= \${binary:Version}),
  642. freeswitch-mod-cdr-csv (= \${binary:Version}),
  643. freeswitch-mod-cdr-mongodb (= \${binary:Version}),
  644. freeswitch-mod-cdr-sqlite (= \${binary:Version}),
  645. freeswitch-mod-erlang-event (= \${binary:Version}),
  646. freeswitch-mod-event-multicast (= \${binary:Version}),
  647. freeswitch-mod-event-socket (= \${binary:Version}),
  648. freeswitch-mod-json-cdr (= \${binary:Version}),
  649. freeswitch-mod-snmp (= \${binary:Version}),
  650. freeswitch-mod-local-stream (= \${binary:Version}),
  651. freeswitch-mod-native-file (= \${binary:Version}),
  652. freeswitch-mod-portaudio-stream (= \${binary:Version}),
  653. freeswitch-mod-shell-stream (= \${binary:Version}),
  654. freeswitch-mod-sndfile (= \${binary:Version}),
  655. freeswitch-mod-tone-stream (= \${binary:Version}),
  656. freeswitch-mod-java (= \${binary:Version}),
  657. freeswitch-mod-lua (= \${binary:Version}),
  658. freeswitch-mod-perl (= \${binary:Version}),
  659. freeswitch-mod-python3 (= \${binary:Version}),
  660. freeswitch-mod-yaml (= \${binary:Version}),
  661. freeswitch-mod-console (= \${binary:Version}),
  662. freeswitch-mod-logfile (= \${binary:Version}),
  663. freeswitch-mod-syslog (= \${binary:Version}),
  664. freeswitch-mod-posix-timer (= \${binary:Version}),
  665. freeswitch-mod-timerfd (= \${binary:Version}),
  666. freeswitch-mod-xml-cdr (= \${binary:Version}),
  667. freeswitch-mod-xml-curl (= \${binary:Version}),
  668. freeswitch-mod-xml-rpc (= \${binary:Version}),
  669. freeswitch-mod-xml-scgi (= \${binary:Version}),
  670. Recommends:
  671. Suggests:
  672. freeswitch-mod-vmd (= \${binary:Version}),
  673. freeswitch-mod-vlc (= \${binary:Version}),
  674. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  675. $(debian_wrap "${fs_description}")
  676. .
  677. This is a metapackage which recommends or suggests all packaged
  678. FreeSWITCH modules.
  679. Package: freeswitch-meta-codecs
  680. Architecture: amd64 armhf arm64
  681. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  682. freeswitch-mod-amr (= \${binary:Version}),
  683. freeswitch-mod-amrwb (= \${binary:Version}),
  684. freeswitch-mod-b64 (= \${binary:Version}),
  685. freeswitch-mod-bv (= \${binary:Version}),
  686. freeswitch-mod-codec2 (= \${binary:Version}),
  687. freeswitch-mod-dahdi-codec (= \${binary:Version}),
  688. freeswitch-mod-g723-1 (= \${binary:Version}),
  689. freeswitch-mod-g729 (= \${binary:Version}),
  690. freeswitch-mod-h26x (= \${binary:Version}),
  691. freeswitch-mod-isac (= \${binary:Version}),
  692. freeswitch-mod-mp4v (= \${binary:Version}),
  693. freeswitch-mod-opus (= \${binary:Version}),
  694. freeswitch-mod-silk (= \${binary:Version}),
  695. freeswitch-mod-spandsp (= \${binary:Version}),
  696. freeswitch-mod-theora (= \${binary:Version}),
  697. Suggests:
  698. freeswitch-mod-ilbc (= \${binary:Version}),
  699. freeswitch-mod-siren (= \${binary:Version})
  700. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  701. $(debian_wrap "${fs_description}")
  702. .
  703. This is a metapackage which depends on the packages needed to install
  704. most FreeSWITCH codecs.
  705. Package: freeswitch-meta-codecs-dbg
  706. Architecture: amd64 armhf arm64
  707. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  708. freeswitch-mod-amr-dbg (= \${binary:Version}),
  709. freeswitch-mod-amrwb-dbg (= \${binary:Version}),
  710. freeswitch-mod-b64-dbg (= \${binary:Version}),
  711. freeswitch-mod-bv-dbg (= \${binary:Version}),
  712. freeswitch-mod-codec2-dbg (= \${binary:Version}),
  713. freeswitch-mod-dahdi-codec-dbg (= \${binary:Version}),
  714. freeswitch-mod-g723-1-dbg (= \${binary:Version}),
  715. freeswitch-mod-g729-dbg (= \${binary:Version}),
  716. freeswitch-mod-h26x-dbg (= \${binary:Version}),
  717. freeswitch-mod-isac-dbg (= \${binary:Version}),
  718. freeswitch-mod-mp4v-dbg (= \${binary:Version}),
  719. freeswitch-mod-opus-dbg (= \${binary:Version}),
  720. freeswitch-mod-silk-dbg (= \${binary:Version}),
  721. freeswitch-mod-spandsp-dbg (= \${binary:Version}),
  722. freeswitch-mod-theora-dbg (= \${binary:Version}),
  723. Suggests:
  724. freeswitch-mod-ilbc-dbg (= \${binary:Version}),
  725. freeswitch-mod-siren-dbg (= \${binary:Version})
  726. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  727. $(debian_wrap "${fs_description}")
  728. .
  729. This is a metapackage which depends on the packages needed to install
  730. most FreeSWITCH codecs.
  731. Package: freeswitch-meta-conf
  732. Architecture: amd64 armhf arm64
  733. Depends: \${misc:Depends},
  734. freeswitch-conf-curl (= \${binary:Version}),
  735. freeswitch-conf-insideout (= \${binary:Version}),
  736. freeswitch-conf-sbc (= \${binary:Version}),
  737. freeswitch-conf-softphone (= \${binary:Version}),
  738. freeswitch-conf-vanilla (= \${binary:Version}),
  739. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  740. $(debian_wrap "${fs_description}")
  741. .
  742. This is a metapackage which depends on the available configuration
  743. examples for FreeSWITCH.
  744. Package: freeswitch-meta-lang
  745. Architecture: amd64 armhf arm64
  746. Depends: \${misc:Depends},
  747. freeswitch-lang-de (= \${binary:Version}),
  748. freeswitch-lang-en (= \${binary:Version}),
  749. freeswitch-lang-es (= \${binary:Version}),
  750. freeswitch-lang-fr (= \${binary:Version}),
  751. freeswitch-lang-he (= \${binary:Version}),
  752. freeswitch-lang-pt (= \${binary:Version}),
  753. freeswitch-lang-ru (= \${binary:Version}),
  754. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  755. $(debian_wrap "${fs_description}")
  756. .
  757. This is a metapackage which depends on all language files for
  758. FreeSWITCH.
  759. Package: freeswitch-meta-mod-say
  760. Architecture: amd64 armhf arm64
  761. Depends: \${misc:Depends},
  762. freeswitch-mod-say-de (= \${binary:Version}),
  763. freeswitch-mod-say-en (= \${binary:Version}),
  764. freeswitch-mod-say-es (= \${binary:Version}),
  765. freeswitch-mod-say-fa (= \${binary:Version}),
  766. freeswitch-mod-say-fr (= \${binary:Version}),
  767. freeswitch-mod-say-he (= \${binary:Version}),
  768. freeswitch-mod-say-hr (= \${binary:Version}),
  769. freeswitch-mod-say-hu (= \${binary:Version}),
  770. freeswitch-mod-say-it (= \${binary:Version}),
  771. freeswitch-mod-say-ja (= \${binary:Version}),
  772. freeswitch-mod-say-nl (= \${binary:Version}),
  773. freeswitch-mod-say-pl (= \${binary:Version}),
  774. freeswitch-mod-say-pt (= \${binary:Version}),
  775. freeswitch-mod-say-ru (= \${binary:Version}),
  776. freeswitch-mod-say-th (= \${binary:Version}),
  777. freeswitch-mod-say-zh (= \${binary:Version}),
  778. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  779. $(debian_wrap "${fs_description}")
  780. .
  781. This is a metapackage which depends on all mod_say languages for
  782. FreeSWITCH.
  783. Package: freeswitch-meta-mod-say-dbg
  784. Architecture: amd64 armhf arm64
  785. Depends: \${misc:Depends},
  786. freeswitch-mod-say-de-dbg (= \${binary:Version}),
  787. freeswitch-mod-say-en-dbg (= \${binary:Version}),
  788. freeswitch-mod-say-es-dbg (= \${binary:Version}),
  789. freeswitch-mod-say-fa-dbg (= \${binary:Version}),
  790. freeswitch-mod-say-fr-dbg (= \${binary:Version}),
  791. freeswitch-mod-say-he-dbg (= \${binary:Version}),
  792. freeswitch-mod-say-hr-dbg (= \${binary:Version}),
  793. freeswitch-mod-say-hu-dbg (= \${binary:Version}),
  794. freeswitch-mod-say-it-dbg (= \${binary:Version}),
  795. freeswitch-mod-say-ja-dbg (= \${binary:Version}),
  796. freeswitch-mod-say-nl-dbg (= \${binary:Version}),
  797. freeswitch-mod-say-pl-dbg (= \${binary:Version}),
  798. freeswitch-mod-say-pt-dbg (= \${binary:Version}),
  799. freeswitch-mod-say-ru-dbg (= \${binary:Version}),
  800. freeswitch-mod-say-th-dbg (= \${binary:Version}),
  801. freeswitch-mod-say-zh-dbg (= \${binary:Version}),
  802. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  803. $(debian_wrap "${fs_description}")
  804. .
  805. This is a metapackage which depends on all mod_say languages for
  806. FreeSWITCH.
  807. Package: freeswitch-meta-all-dbg
  808. Architecture: amd64 armhf arm64
  809. Depends: \${misc:Depends}, freeswitch (= \${binary:Version}),
  810. freeswitch-meta-codecs-dbg (= \${binary:Version}),
  811. freeswitch-meta-mod-say (= \${binary:Version}),
  812. freeswitch-mod-abstraction-dbg (= \${binary:Version}),
  813. freeswitch-mod-avmd-dbg (= \${binary:Version}),
  814. freeswitch-mod-av-dbg (= \${binary:Version}),
  815. freeswitch-mod-blacklist-dbg (= \${binary:Version}),
  816. freeswitch-mod-callcenter-dbg (= \${binary:Version}),
  817. freeswitch-mod-cidlookup-dbg (= \${binary:Version}),
  818. freeswitch-mod-commands-dbg (= \${binary:Version}),
  819. freeswitch-mod-conference-dbg (= \${binary:Version}),
  820. freeswitch-mod-curl-dbg (= \${binary:Version}),
  821. freeswitch-mod-db-dbg (= \${binary:Version}),
  822. freeswitch-mod-directory-dbg (= \${binary:Version}),
  823. freeswitch-mod-distributor-dbg (= \${binary:Version}),
  824. freeswitch-mod-dptools-dbg (= \${binary:Version}),
  825. freeswitch-mod-easyroute-dbg (= \${binary:Version}),
  826. freeswitch-mod-enum-dbg (= \${binary:Version}),
  827. freeswitch-mod-esf-dbg (= \${binary:Version}),
  828. freeswitch-mod-esl-dbg (= \${binary:Version}),
  829. freeswitch-mod-expr-dbg (= \${binary:Version}),
  830. freeswitch-mod-fifo-dbg (= \${binary:Version}),
  831. freeswitch-mod-fsk-dbg (= \${binary:Version}),
  832. freeswitch-mod-fsv-dbg (= \${binary:Version}),
  833. freeswitch-mod-hash-dbg (= \${binary:Version}),
  834. freeswitch-mod-httapi-dbg (= \${binary:Version}),
  835. freeswitch-mod-http-cache-dbg (= \${binary:Version}),
  836. freeswitch-mod-lcr-dbg (= \${binary:Version}),
  837. freeswitch-mod-memcache-dbg (= \${binary:Version}),
  838. freeswitch-mod-nibblebill-dbg (= \${binary:Version}),
  839. freeswitch-mod-oreka-dbg (= \${binary:Version}),
  840. freeswitch-mod-mariadb-dbg (= \${binary:Version}),
  841. freeswitch-mod-pgsql-dbg (= \${binary:Version}),
  842. freeswitch-mod-png-dbg (= \${binary:Version}),
  843. freeswitch-mod-redis-dbg (= \${binary:Version}),
  844. freeswitch-mod-rss-dbg (= \${binary:Version}),
  845. freeswitch-mod-sms-dbg (= \${binary:Version}),
  846. freeswitch-mod-snapshot-dbg (= \${binary:Version}),
  847. freeswitch-mod-snom-dbg (= \${binary:Version}),
  848. freeswitch-mod-sonar-dbg (= \${binary:Version}),
  849. freeswitch-mod-soundtouch-dbg (= \${binary:Version}),
  850. freeswitch-mod-spandsp-dbg (= \${binary:Version}),
  851. freeswitch-mod-spy-dbg (= \${binary:Version}),
  852. freeswitch-mod-stress-dbg (= \${binary:Version}),
  853. freeswitch-mod-translate-dbg (= \${binary:Version}),
  854. freeswitch-mod-valet-parking-dbg (= \${binary:Version}),
  855. freeswitch-mod-video-filter-dbg (= \${binary:Version}),
  856. freeswitch-mod-voicemail-dbg (= \${binary:Version}),
  857. freeswitch-mod-voicemail-ivr-dbg (= \${binary:Version}),
  858. freeswitch-mod-flite-dbg (= \${binary:Version}),
  859. freeswitch-mod-pocketsphinx-dbg (= \${binary:Version}),
  860. freeswitch-mod-tts-commandline-dbg (= \${binary:Version}),
  861. freeswitch-mod-dialplan-asterisk-dbg (= \${binary:Version}),
  862. freeswitch-mod-dialplan-directory-dbg (= \${binary:Version}),
  863. freeswitch-mod-dialplan-xml-dbg (= \${binary:Version}),
  864. freeswitch-mod-loopback-dbg (= \${binary:Version}),
  865. freeswitch-mod-portaudio-dbg (= \${binary:Version}),
  866. freeswitch-mod-rtc-dbg (= \${binary:Version}),
  867. freeswitch-mod-rtmp-dbg (= \${binary:Version}),
  868. freeswitch-mod-skinny-dbg (= \${binary:Version}),
  869. freeswitch-mod-sofia-dbg (= \${binary:Version}),
  870. freeswitch-mod-verto-dbg (= \${binary:Version}),
  871. freeswitch-mod-cdr-csv-dbg (= \${binary:Version}),
  872. freeswitch-mod-cdr-mongodb-dbg (= \${binary:Version}),
  873. freeswitch-mod-cdr-sqlite-dbg (= \${binary:Version}),
  874. freeswitch-mod-erlang-event-dbg (= \${binary:Version}),
  875. freeswitch-mod-event-multicast-dbg (= \${binary:Version}),
  876. freeswitch-mod-event-socket-dbg (= \${binary:Version}),
  877. freeswitch-mod-json-cdr-dbg (= \${binary:Version}),
  878. freeswitch-mod-snmp-dbg (= \${binary:Version}),
  879. freeswitch-mod-local-stream-dbg (= \${binary:Version}),
  880. freeswitch-mod-native-file-dbg (= \${binary:Version}),
  881. freeswitch-mod-portaudio-stream-dbg (= \${binary:Version}),
  882. freeswitch-mod-shell-stream-dbg (= \${binary:Version}),
  883. freeswitch-mod-sndfile-dbg (= \${binary:Version}),
  884. freeswitch-mod-tone-stream-dbg (= \${binary:Version}),
  885. freeswitch-mod-java-dbg (= \${binary:Version}),
  886. freeswitch-mod-lua-dbg (= \${binary:Version}),
  887. freeswitch-mod-perl-dbg (= \${binary:Version}),
  888. freeswitch-mod-python3-dbg (= \${binary:Version}),
  889. freeswitch-mod-yaml-dbg (= \${binary:Version}),
  890. freeswitch-mod-console-dbg (= \${binary:Version}),
  891. freeswitch-mod-logfile-dbg (= \${binary:Version}),
  892. freeswitch-mod-syslog-dbg (= \${binary:Version}),
  893. freeswitch-mod-posix-timer-dbg (= \${binary:Version}),
  894. freeswitch-mod-timerfd-dbg (= \${binary:Version}),
  895. freeswitch-mod-xml-cdr-dbg (= \${binary:Version}),
  896. freeswitch-mod-xml-curl-dbg (= \${binary:Version}),
  897. freeswitch-mod-xml-rpc-dbg (= \${binary:Version}),
  898. freeswitch-mod-xml-scgi-dbg (= \${binary:Version}),
  899. Recommends:
  900. Suggests:
  901. freeswitch-mod-vmd-dbg (= \${binary:Version}),
  902. freeswitch-mod-vlc-dbg (= \${binary:Version}),
  903. Description: Cross-Platform Scalable Multi-Protocol Soft Switch
  904. $(debian_wrap "${fs_description}")
  905. .
  906. This is a metapackage which recommends or suggests all packaged
  907. FreeSWITCH modules.
  908. Package: freeswitch-all-dbg
  909. Section: debug
  910. Priority: optional
  911. Architecture: amd64 armhf arm64
  912. Depends: \${misc:Depends}, freeswitch-meta-all (= \${binary:Version}), freeswitch-meta-all-dbg (= \${binary:Version})
  913. Description: debugging symbols for FreeSWITCH
  914. $(debian_wrap "${fs_description}")
  915. .
  916. This package contains debugging symbols for FreeSWITCH.
  917. Package: freeswitch-dbg
  918. Section: debug
  919. Priority: optional
  920. Architecture: amd64 armhf arm64
  921. Depends: \${misc:Depends}, freeswitch (= \${binary:Version})
  922. Description: debugging symbols for FreeSWITCH
  923. $(debian_wrap "${fs_description}")
  924. .
  925. This package contains debugging symbols for FreeSWITCH.
  926. Package: libfreeswitch1-dbg
  927. Section: debug
  928. Priority: optional
  929. Architecture: amd64 armhf arm64
  930. Depends: \${misc:Depends}, libfreeswitch1 (= \${binary:Version})
  931. Description: debugging symbols for FreeSWITCH
  932. $(debian_wrap "${fs_description}")
  933. .
  934. This package contains debugging symbols for libfreeswitch1.
  935. Package: libfreeswitch-dev
  936. Section: libdevel
  937. Architecture: amd64 armhf arm64
  938. Depends: \${misc:Depends}, freeswitch
  939. Description: development libraries and header files for FreeSWITCH
  940. $(debian_wrap "${fs_description}")
  941. .
  942. This package contains include files for FreeSWITCH.
  943. Package: freeswitch-doc
  944. Section: doc
  945. Architecture: amd64 armhf arm64
  946. Depends: \${misc:Depends}
  947. Description: documentation for FreeSWITCH
  948. $(debian_wrap "${fs_description}")
  949. .
  950. This package contains Doxygen-produced documentation for FreeSWITCH.
  951. It may be an empty package at the moment.
  952. ## misc
  953. ## languages
  954. Package: freeswitch-lang
  955. Architecture: amd64 armhf arm64
  956. Depends: \${misc:Depends},
  957. freeswitch-lang-en (= \${binary:Version})
  958. Description: Language files for FreeSWITCH
  959. $(debian_wrap "${fs_description}")
  960. .
  961. This is a metapackage which depends on the default language packages
  962. for FreeSWITCH.
  963. ## timezones
  964. Package: freeswitch-timezones
  965. Architecture: amd64 armhf arm64
  966. Depends: \${misc:Depends}
  967. Description: Timezone files for FreeSWITCH
  968. $(debian_wrap "${fs_description}")
  969. .
  970. $(debian_wrap "This package includes the timezone files for FreeSWITCH.")
  971. ## startup
  972. EOF
  973. if [ ${use_sysvinit} = "true" ]; then
  974. cat <<EOF
  975. Package: freeswitch-sysvinit
  976. Architecture: amd64 armhf arm64
  977. Depends: \${misc:Depends}, lsb-base (>= 3.0-6), sysvinit | sysvinit-utils
  978. Conflicts: freeswitch-init
  979. Provides: freeswitch-init
  980. Description: FreeSWITCH SysV init script
  981. $(debian_wrap "${fs_description}")
  982. .
  983. This package contains the SysV init script for FreeSWITCH.
  984. EOF
  985. else
  986. cat <<EOF
  987. Package: freeswitch-systemd
  988. Architecture: amd64 armhf arm64
  989. Depends: \${misc:Depends}, systemd
  990. Conflicts: freeswitch-init, freeswitch-all (<= 1.6.7)
  991. Provides: freeswitch-init
  992. Description: FreeSWITCH systemd configuration
  993. $(debian_wrap "${fs_description}")
  994. .
  995. This package contains the systemd configuration for FreeSWITCH.
  996. EOF
  997. fi
  998. }
  999. print_mod_control () {
  1000. local m_section="${section:-comm}"
  1001. cat <<EOF
  1002. Package: freeswitch-${module_name//_/-}
  1003. Section: ${m_section}
  1004. Architecture: amd64 armhf arm64
  1005. $(debian_wrap "Depends: \${shlibs:Depends}, \${misc:Depends}, libfreeswitch1 (= \${binary:Version}), ${depends}")
  1006. $(debian_wrap "Recommends: ${recommends}")
  1007. $(debian_wrap "Suggests: freeswitch-${module_name//_/-}-dbg, ${suggests}")
  1008. Conflicts: freeswitch-all (<= 1.6.7)
  1009. Description: ${description} for FreeSWITCH
  1010. $(debian_wrap "${fs_description}")
  1011. .
  1012. $(debian_wrap "This package contains ${module_name} for FreeSWITCH.")
  1013. .
  1014. $(debian_wrap "${long_description}")
  1015. Package: freeswitch-${module_name//_/-}-dbg
  1016. Section: debug
  1017. Priority: optional
  1018. Architecture: amd64 armhf arm64
  1019. Depends: \${misc:Depends},
  1020. freeswitch-${module_name//_/-} (= \${binary:Version})
  1021. Description: ${description} for FreeSWITCH (debug)
  1022. $(debian_wrap "${fs_description}")
  1023. .
  1024. $(debian_wrap "This package contains debugging symbols for ${module_name} for FreeSWITCH.")
  1025. .
  1026. $(debian_wrap "${long_description}")
  1027. EOF
  1028. }
  1029. print_mod_install () {
  1030. cat <<EOF
  1031. /usr/lib/freeswitch/mod/${1}.so
  1032. EOF
  1033. }
  1034. print_long_filename_override () {
  1035. local p="$1"
  1036. cat <<EOF
  1037. # The long file names are caused by appending the nightly information.
  1038. # Since one of these packages will never end up on a Debian CD, the
  1039. # related problems with long file names will never come up here.
  1040. ${p}: package-has-long-file-name *
  1041. EOF
  1042. }
  1043. print_gpl_openssl_override () {
  1044. local p="$1"
  1045. cat <<EOF
  1046. # We're definitely not doing this. Nothing in FreeSWITCH has a more
  1047. # restrictive license than LGPL or MPL.
  1048. ${p}: possible-gpl-code-linked-with-openssl
  1049. EOF
  1050. }
  1051. print_itp_override () {
  1052. local p="$1"
  1053. cat <<EOF
  1054. # We're not in Debian (yet) so we don't have an ITP bug to close.
  1055. ${p}: new-package-should-close-itp-bug
  1056. EOF
  1057. }
  1058. print_common_overrides () {
  1059. print_long_filename_override "$1"
  1060. }
  1061. print_mod_overrides () {
  1062. print_common_overrides "$1"
  1063. print_gpl_openssl_override "$1"
  1064. }
  1065. print_conf_overrides () {
  1066. print_common_overrides "$1"
  1067. }
  1068. print_conf_control () {
  1069. cat <<EOF
  1070. Package: freeswitch-conf-${conf//_/-}
  1071. Architecture: amd64 armhf arm64
  1072. Depends: \${misc:Depends}
  1073. Conflicts: freeswitch-all (<= 1.6.7)
  1074. Description: FreeSWITCH ${conf} configuration
  1075. $(debian_wrap "${fs_description}")
  1076. .
  1077. $(debian_wrap "This package contains the ${conf} configuration for FreeSWITCH.")
  1078. EOF
  1079. }
  1080. print_conf_install () {
  1081. cat <<EOF
  1082. conf/${conf} /usr/share/freeswitch/conf
  1083. EOF
  1084. }
  1085. print_lang_overrides () {
  1086. print_common_overrides "$1"
  1087. }
  1088. print_lang_control () {
  1089. local lang_name="$(echo ${lang} | tr '[:lower:]' '[:upper:]')"
  1090. case "${lang}" in
  1091. de) lang_name="German" ;;
  1092. en) lang_name="English" ;;
  1093. es) lang_name="Spanish" ;;
  1094. fr) lang_name="French" ;;
  1095. he) lang_name="Hebrew" ;;
  1096. pt) lang_name="Portuguese" ;;
  1097. ru) lang_name="Russian" ;;
  1098. esac
  1099. cat <<EOF
  1100. Package: freeswitch-lang-${lang//_/-}
  1101. Architecture: amd64 armhf arm64
  1102. Depends: \${misc:Depends}
  1103. Recommends: freeswitch-sounds-${lang}
  1104. Conflicts: freeswitch-all (<= 1.6.7)
  1105. Description: ${lang_name} language files for FreeSWITCH
  1106. $(debian_wrap "${fs_description}")
  1107. .
  1108. $(debian_wrap "This package includes the ${lang_name} language files for FreeSWITCH.")
  1109. EOF
  1110. }
  1111. print_lang_install () {
  1112. cat <<EOF
  1113. conf/vanilla/lang/${lang} /usr/share/freeswitch/lang
  1114. EOF
  1115. }
  1116. print_edit_warning () {
  1117. echo "#### Do not edit! This file is auto-generated from debian/bootstrap.sh."; echo
  1118. }
  1119. gencontrol_per_mod () {
  1120. print_mod_control "$module_name" "$description" "$long_description" >> control
  1121. }
  1122. gencontrol_per_cat () {
  1123. (echo "## mod/$category"; echo) >> control
  1124. }
  1125. geninstall_per_mod () {
  1126. local f=freeswitch-${module_name//_/-}.install
  1127. (print_edit_warning; print_mod_install "$module_name") > $f
  1128. test -f $f.tmpl && cat $f.tmpl >> $f
  1129. }
  1130. genoverrides_per_mod () {
  1131. local f=freeswitch-${module_name//_/-}.lintian-overrides
  1132. (print_edit_warning; print_mod_overrides freeswitch-${module_name//_/-}) > $f
  1133. test -f $f.tmpl && cat $f.tmpl >> $f
  1134. }
  1135. genmodulesconf () {
  1136. genmodules_per_cat () { echo "## $category"; }
  1137. genmodules_per_mod () { echo "$module"; }
  1138. print_edit_warning
  1139. map_modules 'mod_filter' 'genmodules_per_cat' 'genmodules_per_mod'
  1140. }
  1141. genconf () {
  1142. print_conf_control >> control
  1143. local p=freeswitch-conf-${conf//_/-}
  1144. local f=$p.install
  1145. (print_edit_warning; print_conf_install) > $f
  1146. test -f $f.tmpl && cat $f.tmpl >> $f
  1147. local f=$p.lintian-overrides
  1148. (print_edit_warning; print_conf_overrides "$p") > $f
  1149. test -f $f.tmpl && cat $f.tmpl >> $f
  1150. }
  1151. genlang () {
  1152. print_lang_control >> control
  1153. local p=freeswitch-lang-${lang//_/-}
  1154. local f=$p.install
  1155. (print_edit_warning; print_lang_install) > $f
  1156. test -f $f.tmpl && cat $f.tmpl >> $f
  1157. local f=$p.lintian-overrides
  1158. (print_edit_warning; print_lang_overrides "$p") > $f
  1159. test -f $f.tmpl && cat $f.tmpl >> $f
  1160. }
  1161. geninstall_perl () {
  1162. local archlib
  1163. eval `perl -V:archlib`
  1164. echo $archlib/ESL.\* >libesl-perl.install
  1165. echo $archlib/ESL/\*.\* >>libesl-perl.install
  1166. }
  1167. accumulate_mod_deps () {
  1168. local x=""
  1169. # build-depends
  1170. if [ -n "$(eval echo \$build_depends_$codename)" ]; then
  1171. x="$(eval echo \$build_depends_$codename)"
  1172. else x="${build_depends}"; fi
  1173. if [ -n "$x" ]; then
  1174. if [ ! "$mod_build_depends" = "." ]; then
  1175. mod_build_depends="${mod_build_depends}, ${x}"
  1176. else mod_build_depends="${x}"; fi; fi
  1177. # depends
  1178. if [ -n "$(eval echo \$depends_$codename)" ]; then
  1179. x="$(eval echo \$depends_$codename)"
  1180. else x="${depends}"; fi
  1181. x="$(echo "$x" | sed 's/, \?/\n/g' | grep -v '^freeswitch' | tr '\n' ',' | sed -e 's/,$//' -e 's/,/, /g')"
  1182. if [ -n "$x" ]; then
  1183. if [ ! "$mod_depends" = "." ]; then
  1184. mod_depends="${mod_depends}, ${x}"
  1185. else mod_depends="${x}"; fi; fi
  1186. # recommends
  1187. if [ -n "$(eval echo \$recommends_$codename)" ]; then
  1188. x="$(eval echo \$recommends_$codename)"
  1189. else x="${recommends}"; fi
  1190. x="$(echo "$x" | sed 's/, \?/\n/g' | grep -v '^freeswitch' | tr '\n' ',' | sed -e 's/,$//' -e 's/,/, /g')"
  1191. if [ -n "$x" ]; then
  1192. if [ ! "$mod_recommends" = "." ]; then
  1193. mod_recommends="${mod_recommends}, ${x}"
  1194. else mod_recommends="${x}"; fi; fi
  1195. # suggests
  1196. if [ -n "$(eval echo \$suggests_$codename)" ]; then
  1197. x="$(eval echo \$suggests_$codename)"
  1198. else x="${suggests}"; fi
  1199. x="$(echo "$x" | sed 's/, \?/\n/g' | grep -v '^freeswitch' | tr '\n' ',' | sed -e 's/,$//' -e 's/,/, /g')"
  1200. if [ -n "$x" ]; then
  1201. if [ ! "$mod_suggests" = "." ]; then
  1202. mod_suggests="${mod_suggests}, ${x}"
  1203. else mod_suggests="${x}"; fi; fi
  1204. }
  1205. genmodctl_new_mod () {
  1206. grep -e "^Module: ${module}$" control-modules >/dev/null && return 0
  1207. cat <<EOF
  1208. Module: $module
  1209. Description: $description
  1210. $long_description
  1211. EOF
  1212. echo
  1213. }
  1214. genmodctl_new_cat () {
  1215. grep -e "^## mod/${category}$" control-modules >/dev/null && return 0
  1216. cat <<EOF
  1217. ## mod/$category
  1218. EOF
  1219. }
  1220. pre_parse_mod_control () {
  1221. local fl=true ll_nl=false ll_descr=false
  1222. while xread l; do
  1223. if [ -z "$l" ]; then
  1224. # is newline
  1225. if ! $ll_nl && ! $fl; then
  1226. echo
  1227. fi
  1228. ll_nl=true
  1229. continue
  1230. elif [ -z "${l##\#*}" ]; then
  1231. # is comment
  1232. continue
  1233. elif [ -z "${l## *}" ]; then
  1234. # is continuation line
  1235. if ! $ll_descr; then
  1236. echo -n "$l"
  1237. else
  1238. echo -n "Long-Description: $(echo "$l" | sed -e 's/^ *//')"
  1239. fi
  1240. else
  1241. # is header line
  1242. $fl || echo
  1243. if [ "${l%%:*}" = "Description" ]; then
  1244. ll_descr=true
  1245. echo "Description: ${l#*: }"
  1246. continue
  1247. else
  1248. echo -n "$l"
  1249. fi
  1250. fi
  1251. fl=false ll_nl=false ll_descr=false
  1252. done < control-modules
  1253. }
  1254. var_escape () {
  1255. (echo -n \'; echo -n "$1" | sed -e "s/'/'\\\\''/g"; echo -n \')
  1256. }
  1257. parse_mod_control () {
  1258. pre_parse_mod_control > control-modules.preparse
  1259. local category=""
  1260. local module_name=""
  1261. rm -rf $parse_dir
  1262. while xread l; do
  1263. if [ -z "$l" ]; then
  1264. # is newline
  1265. continue
  1266. fi
  1267. local header="${l%%:*}"
  1268. local value="${l#*: }"
  1269. if [ "$header" = "Module" ]; then
  1270. category="${value%%/*}"
  1271. module_name="${value#*/}"
  1272. mkdir -p $parse_dir/$category
  1273. (echo "module=$(var_escape "$value")"; \
  1274. echo "category=$(var_escape "$category")"; \
  1275. echo "module_name=$(var_escape "$module_name")"; \
  1276. ) >> $parse_dir/$category/$module_name
  1277. else
  1278. ([ -n "$category" ] && [ -n "$module_name" ]) \
  1279. || err "unexpected header $header"
  1280. local var_name="$(echo "$header" | sed -e 's/-/_/g' | tr '[A-Z]' '[a-z]')"
  1281. echo "${var_name}=$(var_escape "$value")" >> $parse_dir/$category/$module_name
  1282. fi
  1283. done < control-modules.preparse
  1284. }
  1285. debian_wrap () {
  1286. local fl=true
  1287. echo "$1" | fold -s -w 69 | while xread l; do
  1288. local v="$(echo "$l" | sed -e 's/ *$//g')"
  1289. if $fl; then
  1290. fl=false
  1291. echo "$v"
  1292. else
  1293. echo " $v"
  1294. fi
  1295. done
  1296. }
  1297. genmodctl_cat () {
  1298. (echo "## mod/$category"; echo)
  1299. }
  1300. genmodctl_mod () {
  1301. echo "Module: $module"
  1302. [ -n "$section" ] && echo "Section: $section"
  1303. echo "Description: $description"
  1304. echo "$long_description" | fold -s -w 69 | while xread l; do
  1305. local v="$(echo "$l" | sed -e 's/ *$//g')"
  1306. echo " $v"
  1307. done
  1308. [ -n "$build_depends" ] && debian_wrap "Build-Depends: $build_depends"
  1309. for x in $supported_distros; do
  1310. [ -n "$(eval echo \$build_depends_$x)" ] \
  1311. && debian_wrap "Build-Depends-$x: $(eval echo \$build_depends_$x)"
  1312. done
  1313. [ -n "$depends" ] && debian_wrap "Depends: $depends"
  1314. [ -n "$reccomends" ] && debian_wrap "Recommends: $recommends"
  1315. [ -n "$suggests" ] && debian_wrap "Suggests: $suggests"
  1316. [ -n "$distro_conflicts" ] && debian_wrap "Distro-Conflicts: $distro_conflicts"
  1317. echo
  1318. }
  1319. set_modules_non_dfsg () {
  1320. local len=${#avoid_mods}
  1321. for ((i=0; i<len; i++)); do
  1322. case "${avoid_mods[$i]}" in
  1323. codecs/mod_siren|codecs/mod_ilbc)
  1324. unset avoid_mods[$i]
  1325. ;;
  1326. esac
  1327. done
  1328. }
  1329. unavoid_modules () {
  1330. local len=${#avoid_mods}
  1331. for ((i=0; i<len; i++)); do
  1332. for x in $1; do
  1333. if test "${avoid_mods[$i]}" = "$x"; then
  1334. unset avoid_mods[$i]
  1335. fi
  1336. done
  1337. done
  1338. }
  1339. conf_merge () {
  1340. local of="$1" if="$2"
  1341. if [ -s $if ]; then
  1342. grep -v '^##\|^$' $if | while xread x; do
  1343. touch $of
  1344. if ! grep -e "$x" $of >/dev/null; then
  1345. printf '%s\n' "$x" >> $of
  1346. fi
  1347. done
  1348. fi
  1349. }
  1350. echo "Bootstrapping debian/ for ${codename}" >&2
  1351. echo >&2
  1352. echo "Please wait, this takes a few seconds..." >&2
  1353. test -z "$modulelist_opt" || set_modules_${modulelist_opt/-/_}
  1354. test -z "$modules_add" || unavoid_modules "$modules_add"
  1355. echo "Adding any new modules to control-modules..." >&2
  1356. parse_dir=control-modules.parse
  1357. map_fs_modules ':' 'genmodctl_new_cat' 'genmodctl_new_mod' >> control-modules
  1358. echo "Parsing control-modules..." >&2
  1359. parse_mod_control
  1360. echo "Displaying includes/excludes..." >&2
  1361. map_modules 'mod_filter_show' '' ''
  1362. echo "Generating modules_.conf..." >&2
  1363. genmodulesconf > modules_.conf
  1364. echo "Generating control-modules.gen as sanity check..." >&2
  1365. (echo "# -*- mode:debian-control -*-"; \
  1366. echo "##### Author: Travis Cross <tc@traviscross.com>"; echo; \
  1367. map_modules ':' 'genmodctl_cat' 'genmodctl_mod' \
  1368. ) > control-modules.gen
  1369. echo "Accumulating dependencies from modules..." >&2
  1370. map_modules 'mod_filter' '' 'accumulate_mod_deps'
  1371. echo "Generating debian/..." >&2
  1372. > control
  1373. (print_edit_warning; print_source_control; print_core_control) >> control
  1374. echo "Generating debian/ (conf)..." >&2
  1375. (echo "### conf"; echo) >> control
  1376. map_confs 'genconf'
  1377. echo "Generating debian/ (lang)..." >&2
  1378. (echo "### lang"; echo) >> control
  1379. map_langs 'genlang'
  1380. echo "Generating debian/ (modules)..." >&2
  1381. (echo "### modules"; echo) >> control
  1382. map_modules "mod_filter" \
  1383. "gencontrol_per_cat" \
  1384. "gencontrol_per_mod geninstall_per_mod genoverrides_per_mod"
  1385. geninstall_perl
  1386. if [ ${use_sysvinit} = "true" ]; then
  1387. echo -n freeswitch-sysvinit >freeswitch-init.provided_by
  1388. else
  1389. echo -n freeswitch-systemd >freeswitch-init.provided_by
  1390. fi
  1391. echo "Generating additional lintian overrides..." >&2
  1392. grep -e '^Package:' control | while xread l; do
  1393. m="${l#*: }"
  1394. f=$m.lintian-overrides
  1395. [ -s $f ] || print_edit_warning >> $f
  1396. if ! grep -e 'package-has-long-file-name' $f >/dev/null; then
  1397. print_long_filename_override "$m" >> $f
  1398. fi
  1399. if ! grep -e 'new-package-should-close-itp-bug' $f >/dev/null; then
  1400. print_itp_override "$m" >> $f
  1401. fi
  1402. done
  1403. for p in freeswitch libfreeswitch1; do
  1404. f=$p.lintian-overrides
  1405. [ -s $f ] || print_edit_warning >> $f
  1406. print_gpl_openssl_override "$p" >> $f
  1407. done
  1408. echo "Cleaning up..." >&2
  1409. rm -f control-modules.preparse
  1410. rm -rf control-modules.parse
  1411. diff control-modules control-modules.gen >/dev/null && rm -f control-modules.gen
  1412. echo "Done bootstrapping debian/" >&2
  1413. touch .stamp-bootstrap