#!/usr/bin/make -f %: dh $@ --with phpcomposer override_dh_auto_build: mkdir --parents debian/packages_to_build ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) # Check if licenses of all images are properly covered in d/copyright ./debian/licensing/bin/check_image_licenses --check else @echo "** image license check disabled" endif # Walk through the parts of upstream's code that should be packaged into # separate Debian binary packages and write down a package-to-build info # file containing shell variables for each package. # Those files will be traverse later on in different targets of this # makefile (debian/rules). They solely exists to not repeat the extraction # of those variables in each of those target over and over again. # Then, build a class loader for the package, using the template in # debian/$deb_pkg_name.autoload.php.tpl if it exists (to load dependencies). set -e;\ for src_path in $$(find src/Symfony/ -mindepth 2 -maxdepth 3 -type d); do \ if [ -e $$src_path/composer.json ]; then \ pkg_path=$${src_path#src/Symfony/}; \ deb_pkg_name=php-$$(cat $$src_path/composer.json | jq -r '.name | tostring' | sed -r 's|/|-|'); \ if [ $$(grep -c -E -e "^Package: $$deb_pkg_name\$$" debian/control) -ne 1 ]; then \ echo "W: No Debian package '$$deb_pkg_name' defined in debian/control," 1>&2; \ echo " therefor not considering Symfony $$pkg_path," 1>&2; \ continue; \ fi; \ echo "# This file contains some variables sourced" > debian/packages_to_build/$$deb_pkg_name; \ echo "# by various targets in debian/rules" >> debian/packages_to_build/$$deb_pkg_name; \ echo "deb_pkg_name='$$deb_pkg_name'" >> debian/packages_to_build/$$deb_pkg_name; \ echo "src_path='$$src_path'" >> debian/packages_to_build/$$deb_pkg_name; \ echo "pkg_path='$$pkg_path'" >> debian/packages_to_build/$$deb_pkg_name; \ if [ -e debian/$$deb_pkg_name.autoload.php ]; then \ cp debian/$$deb_pkg_name.autoload.php \ $$src_path/autoload.php ; \ elif [ -e debian/$$deb_pkg_name.autoload.php.tpl ]; then \ phpab --output $$src_path/autoload.php \ --blacklist '*\\tests\\*' \ --whitelist 'symfony\\*' \ --tolerant \ --template debian/$$deb_pkg_name.autoload.php.tpl \ $$src_path; \ else \ phpab --output $$src_path/autoload.php \ --blacklist '*\\tests\\*' \ --whitelist 'symfony\\*' \ --template debian/default.autoload.php.tpl \ $$src_path; \ fi; \ fi; \ done # The following component declares a classmap in its composer.json, # pointing to Resources/stubs. The classname being outside 'symfony\\*', the # --whitelist trick cannot be used to ignore classes defined in the testsuite. phpab --output src/Symfony/Component/Intl/autoload.php \ --blacklist '*\\tests\\*' \ --template debian/default.autoload.php.tpl \ src/Symfony/Component/Intl override_dh_auto_test: ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) ln -s ./src/Symfony ./Symfony mkdir --parents vendor cp debian/autoload.php src/Symfony phpab --output vendor/autoload.php \ --whitelist '*\\tests\\*' \ --template debian/autoload.php.tests.tpl \ --blacklist 'symfony\\component\\dependencyinjection\\tests\\fixtures\\container\\projectservicecontainer' \ Symfony # Actual tests suite components=$$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n') && \ echo "$$components" | parallel --gnu --keep-order '/bin/echo -e "\\nRunning {} tests"; SYMFONY_DEPRECATIONS_HELPER=weak phpunit -v --colors=always --exclude-group network,tty,benchmark,intl-data,functional,composer {} || (/bin/echo -e "\\e[41mKO\\e[0m {}" && $$(exit 1));'; else @echo "** tests disabled" endif override_dh_phpcomposer: dh_phpcomposer --package=php-symfony --sourcedir=./ # In debian/packages_to_build/ a file containing shell variables exists # for each package that should be build. Source one file after another # to make the shell variables available and run dh_phpcomposer for each # package. set -e;\ for package_info_file in $$(find debian/packages_to_build/ -mindepth 1 -maxdepth 1 -type f); do \ . $$package_info_file; \ dh_phpcomposer --package=$$deb_pkg_name --sourcedir=$$src_path; \ done override_dh_install: dh_install --package=php-symfony # In debian/packages_to_build/ a file containing shell variables exists # for each package that should be build. Source one file after another # to make the shell variables available and run dh_install in order to # provide the PHP runtime code for each package. set -e; \ for package_info_file in $$(find debian/packages_to_build/ -mindepth 1 -maxdepth 1 -type f); do \ . $$package_info_file; \ if [ $$deb_pkg_name = php-symfony-security ]; then \ dh_install \ --package=$$deb_pkg_name \ $$src_path/autoload.php \ usr/share/php/Symfony/$$pkg_path/; \ else \ dh_install \ -X.git \ -X.md \ -Xcomposer.json \ -XConsole/Resources \ -XDebug/Resources \ -XLICENSE \ -XResources/meta \ -XResources/bin \ -Xphpunit.xml.dist \ --package=$$deb_pkg_name \ $$src_path/* \ usr/share/php/Symfony/$$pkg_path/; \ find debian/$$deb_pkg_name -name bin -type d -print | xargs /bin/rm -rf; \ find debian/$$deb_pkg_name -name Tests -type d -print | xargs /bin/rm -rf; \ fi; \ done override_dh_installdocs: dh_installdocs # In debian/packages_to_build/ a file containing shell variables exists # for each package that should be build. Source one file after another # to make the shell variables available and run dh_installdocs in order # to provide some basic documentation for each package. set -e; \ for package_info_file in $$(find debian/packages_to_build/ -mindepth 1 -maxdepth 1 -type f); do \ . $$package_info_file; \ done override_dh_installchangelogs: for i in $$(ls CHANGELOG-* -r); do cat $$i >> CHANGELOG && echo '' >> CHANGELOG; done dh_installchangelogs # In debian/packages_to_build/ a file containing shell variables exists # for each package that should be build. Source one file after another # to make the shell variables available and run dh_installchangelogs in # order to provide upstream changelogs for each package. set -e; \ for package_info_file in $$(find debian/packages_to_build/ -mindepth 1 -maxdepth 1 -type f); do \ . $$package_info_file; \ if [ -f "$$src_path/CHANGELOG.md" ]; then \ dh_installchangelogs \ --package=$$deb_pkg_name \ $$src_path/CHANGELOG.md; \ elif [ -f "$$src_path/../CHANGELOG.md" ]; then \ dh_installchangelogs \ --package=$$deb_pkg_name \ $$src_path/../CHANGELOG.md; \ fi; \ done