From bbeaeaea6648439181d8f690e855e7924f540b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Jaussoin?= Date: Thu, 25 Mar 2021 17:03:13 +0100 Subject: [PATCH] Add DEB packaging --- Makefile | 29 +++++++++-- flexisip-account-manager.spec | 98 ++++++++++++++++++++++++++++------- 2 files changed, 102 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 0faf7c2..05c31dd 100644 --- a/Makefile +++ b/Makefile @@ -6,15 +6,18 @@ prepare: prepare-dev: cd flexiapi && composer install -rpm-only: +package-common: rm -rf $(OUTPUT_DIR)/flexisip-account-manager mkdir $(OUTPUT_DIR)/flexisip-account-manager mkdir -p $(OUTPUT_DIR)/rpmbuild/SPECS mkdir -p $(OUTPUT_DIR)/rpmbuild/SOURCES + + # XMLRPC cp -R --parents src/**/*.php $(OUTPUT_DIR)/flexisip-account-manager/ cp -R --parents src/api/**/*.php $(OUTPUT_DIR)/flexisip-account-manager/ cp -R --parents conf/*.conf $(OUTPUT_DIR)/flexisip-account-manager/ + # FlexiAPI cp -R --parents flexiapi/**/* $(OUTPUT_DIR)/flexisip-account-manager/ cp flexiapi/composer* $(OUTPUT_DIR)/flexisip-account-manager/flexiapi/ cp flexiapi/README.md $(OUTPUT_DIR)/flexisip-account-manager/flexiapi/ @@ -22,15 +25,31 @@ rpm-only: cp flexiapi/artisan $(OUTPUT_DIR)/flexisip-account-manager/flexiapi/ cp flexiapi/phpunit.xml $(OUTPUT_DIR)/flexisip-account-manager/flexiapi/ + # General cp README.md $(OUTPUT_DIR)/flexisip-account-manager/ cp -R httpd/ $(OUTPUT_DIR)/flexisip-account-manager/ cp flexisip-account-manager.spec $(OUTPUT_DIR)/rpmbuild/SPECS/ + tar cvf flexisip-account-manager.tar.gz -C $(OUTPUT_DIR) flexisip-account-manager mv flexisip-account-manager.tar.gz $(OUTPUT_DIR)/rpmbuild/SOURCES/flexisip-account-manager.tar.gz - rpmbuild -v -bb --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec - rm -rf $(OUTPUT_DIR)/flexisip-account-manager -rpm: prepare rpm-only -rpm-dev: prepare-dev rpm-only +package-end-common: + rm -rf $(OUTPUT_DIR)/flexisip-account-manager + rm -rf $(OUTPUT_DIR)/rpmbuild/SPECS $(OUTPUT_DIR)/rpmbuild/SOURCES $(OUTPUT_DIR)/rpmbuild/SRPMS $(OUTPUT_DIR)/rpmbuild/BUILD $(OUTPUT_DIR)/rpmbuild/BUILDROOT + +rpm-only: + rpmbuild -v -bb --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec + @echo "== RPM Package Created ==" + +deb-only: + rpmbuild -v -bb --with deb --define '_topdir $(OUTPUT_DIR)/rpmbuild' --define "_rpmfilename tmp.rpm" --define "_rpmdir $(OUTPUT_DIR)/rpmbuild" $(OUTPUT_DIR)/rpmbuild/SPECS/flexisip-account-manager.spec + fakeroot alien -d --scripts $(OUTPUT_DIR)/rpmbuild/tmp.rpm + rm -r $(OUTPUT_DIR)/rpmbuild/tmp.rpm + @echo "== DEB Package Created ==" + +rpm: prepare package-common rpm-only package-end-common +rpm-dev: prepare-dev package-common rpm-only package-end-common +deb: prepare package-common deb-only package-end-common +deb-dev: prepare-dev package-common deb-only package-end-common .PHONY: rpm diff --git a/flexisip-account-manager.spec b/flexisip-account-manager.spec index 28ebcad..797d590 100644 --- a/flexisip-account-manager.spec +++ b/flexisip-account-manager.spec @@ -11,11 +11,24 @@ %define build_number 63 %define var_dir /var/opt/belledonne-communications %define opt_dir /opt/belledonne-communications/share/flexisip-account-manager -%define env_file "$RPM_BUILD_ROOT/etc/flexisip-account-manager/flexiapi.env" + +%if %{with deb} + %define env_file "/etc/flexisip-account-manager/flexiapi.env" +%else + %define env_file "$RPM_BUILD_ROOT/etc/flexisip-account-manager/flexiapi.env" +%endif + +%bcond_with deb #%if %{build_number} #%define build_number_ext -%{build_number} #%endif +%if %{with deb} + %define web_user www-data +%else + %define web_user apache +%endif + Name: bc-flexisip-account-manager Version: 1.1.0 Release: %{build_number}%{?dist} @@ -34,7 +47,6 @@ Requires: rh-php73-php rh-php73-php-xmlrpc rh-php73-php-pdo rh-php73-php-m %description PHP server for Linphone and Flexisip providing module for account creation. - %prep %setup -n flexisip-account-manager @@ -49,17 +61,32 @@ cp flexiapi/composer.json "$RPM_BUILD_ROOT%{opt_dir}/flexiapi" cp README* "$RPM_BUILD_ROOT%{opt_dir}/" mkdir -p "$RPM_BUILD_ROOT/etc/flexisip-account-manager" cp -R conf/* "$RPM_BUILD_ROOT/etc/flexisip-account-manager/" -mkdir -p $RPM_BUILD_ROOT/opt/rh/httpd24/root/etc/httpd/conf.d -cp httpd/flexisip-account-manager.conf "$RPM_BUILD_ROOT/opt/rh/httpd24/root/etc/httpd/conf.d/" +%if %{with deb} + mkdir -p $RPM_BUILD_ROOT/etc/apache2/conf-available + cp httpd/flexisip-account-manager.conf "$RPM_BUILD_ROOT/etc/apache2/conf-available/" +%else + mkdir -p $RPM_BUILD_ROOT/opt/rh/httpd24/root/etc/httpd/conf.d + cp httpd/flexisip-account-manager.conf "$RPM_BUILD_ROOT/opt/rh/httpd24/root/etc/httpd/conf.d/" +%endif + +# POST INSTALLATION %post -if [ $1 -eq 1 ] ; then +%if %{without deb} + if [ $1 -eq 1 ] ; then +%endif mkdir -p %{var_dir}/log touch %{var_dir}/log/account-manager.log - chown apache:apache %{var_dir}/log/account-manager.log + chown %{web_user}:%{web_user} %{var_dir}/log/account-manager.log + +%if %{without deb} chcon -t httpd_sys_rw_content_t %{var_dir}/log/account-manager.log +%endif + +%if %{without deb} setsebool -P httpd_can_network_connect_db on +%endif # FlexiAPI base directories setup and rights mkdir -p %{var_dir}/flexiapi/storage/app/public @@ -67,30 +94,56 @@ if [ $1 -eq 1 ] ; then mkdir -p %{opt_dir}/flexiapi/bootstrap/cache touch %{var_dir}/flexiapi/storage/db.sqlite touch %{var_dir}/flexiapi/storage/external.db.sqlite - chown -R apache:apache %{var_dir}/flexiapi/storage + chown -R %{web_user}:%{web_user} %{var_dir}/flexiapi/storage - ln -s %{var_dir}/flexiapi/storage %{opt_dir}/flexiapi/. + if ! test -f %{env_file}; then + ln -s %{var_dir}/flexiapi/storage %{opt_dir}/flexiapi/. + fi # FlexiAPI logs file mkdir -p %{var_dir}/log/flexiapi - chown -R apache:apache %{var_dir}/log/flexiapi + chown -R %{web_user}:%{web_user} %{var_dir}/log/flexiapi - ln -s %{var_dir}/log/flexiapi %{opt_dir}/flexiapi/storage/logs + if ! test -f %{env_file}; then + ln -s %{var_dir}/log/flexiapi %{opt_dir}/flexiapi/storage/logs + fi # FlexiAPI env file configuration - cd %{opt_dir}/flexiapi/ - cp .env.example %{env_file} - sed -i 's/DB_DATABASE=.*/DB_DATABASE=\/var\/opt\/belledonne-communications\/flexiapi\/storage\/db.sqlite/g' %{env_file} - sed -i 's/DB_EXTERNAL_DRIVER=.*/DB_EXTERNAL_DRIVER=sqlite/g' %{env_file} - sed -i 's/DB_EXTERNAL_DATABASE=.*/DB_EXTERNAL_DATABASE=\/var\/opt\/belledonne-communications\/flexiapi\/storage\/external.db.sqlite/g' %{env_file} + if ! test -f %{env_file}; then + cd %{opt_dir}/flexiapi/ + cp .env.example %{env_file} + sed -i 's/DB_DATABASE=.*/DB_DATABASE=\/var\/opt\/belledonne-communications\/flexiapi\/storage\/db.sqlite/g' %{env_file} + sed -i 's/DB_EXTERNAL_DRIVER=.*/DB_EXTERNAL_DRIVER=sqlite/g' %{env_file} + sed -i 's/DB_EXTERNAL_DATABASE=.*/DB_EXTERNAL_DATABASE=\/var\/opt\/belledonne-communications\/flexiapi\/storage\/external.db.sqlite/g' %{env_file} - ln -s %{env_file} .env + ln -s %{env_file} .env - scl enable rh-php73 "php artisan key:generate" - scl enable rh-php73 "php artisan migrate" - scl enable rh-php73 "php artisan route:cache" + %if %{with deb} + php artisan key:generate + %else + scl enable rh-php73 "php artisan key:generate" + %endif + fi + + # Check if there is a migration + + if cd %{opt_dir}/flexiapi/ && php artisan migrate:status | grep -q No; then + echo " " + echo "You need to migrate the database to finish the setup:" + echo "$ cd %{opt_dir}/flexiapi/" + + %if %{with deb} + echo $ php artisan migrate + %else + echo $ scl enable rh-php73 "php artisan migrate" + %endif + fi + +%if %{without deb} fi +%endif +# FILES %files %{opt_dir}/flexiapi/ @@ -106,7 +159,12 @@ fi %exclude %{opt_dir}/flexiapi/bootstrap/cache %config(noreplace) /etc/flexisip-account-manager/*.conf -%config(noreplace) /opt/rh/httpd24/root/etc/httpd/conf.d/flexisip-account-manager.conf + +%if %{with deb} + %config(noreplace) /etc/apache2/conf-available/flexisip-account-manager.conf +%else + %config(noreplace) /opt/rh/httpd24/root/etc/httpd/conf.d/flexisip-account-manager.conf +%endif %clean rm -rf $RPM_BUILD_ROOT