bootstrap.sh 49 KB

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