#!/usr/bin/make -f %: dh $@ override_dh_auto_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 phpab \ --template debian/autoload.php.tpl \ --output src/Symfony/autoload.php \ src/Symfony/Bundle/FullStack.php mkdir --parents debian/packages_to_build debian/autoloaders # 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 4 -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; \ echo "symfony $${deb_pkg_name#php-symfony-} Symfony/$$pkg_path/autoload.php" > debian/autoloaders/$$deb_pkg_name; \ if [ \( $$deb_pkg_name = php-symfony-mailer \) -o \ \( $$deb_pkg_name = php-symfony-messenger \) -o \ \( $$deb_pkg_name = php-symfony-notifier \) -o \ \( $$deb_pkg_name = php-symfony-translation \) ] ; then \ phpab --output $$src_path/autoload.php \ --blacklist '*\\tests\\*' \ --blacklist '*\\bridge\\*' \ --whitelist 'symfony\\*' \ --template debian/$$deb_pkg_name.autoload.php.tpl \ $$src_path; \ else \ phpab --output $$src_path/autoload.php \ --blacklist '*\\tests\\*' \ --blacklist 'symfony\\config\\*' \ --exclude 'src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/Fixtures/proxy-implem.php' \ --exclude 'src/Symfony/Component/Routing/Tests/Fixtures/AttributesFixtures/*' \ --whitelist 'symfony\\*' \ --tolerant \ --template debian/$$deb_pkg_name.autoload.php.tpl \ $$src_path; \ fi; \ fi; \ done override_dh_auto_test: mkdir --parents vendor build cp -r src/Symfony build rm -r build/Symfony/Contracts cp debian/autoload_runtime.php vendor phpab --output vendor/autoload.php \ --whitelist '*\\tests\\*' \ --tolerant \ --template debian/autoload.php.tests.tpl \ --blacklist 'symfony\\component\\dependencyinjection\\tests\\fixtures\\container\\projectservicecontainer' \ --exclude 'build/Symfony/Bridge/ProxyManager/Tests/LazyProxy/PhpDumper/Fixtures/proxy-implem.php' \ --exclude 'build/Symfony/Component/Routing/Tests/Fixtures/AttributesFixtures/*' \ build/Symfony ln -s /usr/share/php/AsyncAws build ln -s /usr/share/php/Cache build ln -s /usr/share/php/Composer build ln -s /usr/share/php/Doctrine build ln -s /usr/share/php/Egulias build ln -s /usr/share/php/GuzzleHttp build ln -s /usr/share/php/Http build ln -s /usr/share/php/Masterminds build ln -s /usr/share/php/Monolog build ln -s /usr/share/php/Nyholm build ln -s /usr/share/php/Pheanstalk build ln -s /usr/share/php/phpDocumentor build ln -s /usr/share/php/PHPStan build ln -s /usr/share/php/PHPUnit build ln -s /usr/share/php/Predis build ln -s /usr/share/php/ProxyManager build ln -s /usr/share/php/Psr build ln -s /usr/share/php/Symfony/Contracts build/Symfony ln -s /usr/share/php/Symfony/Component/Mercure build/Symfony/Component ln -s /usr/share/php/Symfony/Component/Security/Acl build/Symfony/Component/Security ln -s /usr/share/php/Twig build ln -s build/Symfony . # Actual tests suite components=$$(find build/Symfony -mindepth 3 -maxdepth 4 -type f -name phpunit.xml.dist -printf '%h\n') && \ echo "$$components" | parallel --gnu --keep-order '/bin/echo -e "\\nRunning {} tests"; SYMFONY_DEPRECATIONS_HELPER=weak php -d assert.exception=1 -d zend.assertions=1 /usr/bin/phpunit --include build -v --colors=always --exclude-group network,tty,benchmark,intl-data,functional,composer {} || (/bin/echo -e "\\e[41mKO\\e[0m {}" && $$(exit 1));'; override_dh_phpcomposer: dh_phpcomposer --package=php-symfony --sourcedirectory=./ # 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 --sourcedirectory=$$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; \ dh_install --package=$$deb_pkg_name; \ dh_install --package=$$deb_pkg_name \ debian/autoloaders/$$deb_pkg_name usr/share/pkg-php-tools/autoloaders; \ if [ \( $$deb_pkg_name = php-symfony-mailer \) -o \ \( $$deb_pkg_name = php-symfony-messenger \) -o \ \( $$deb_pkg_name = php-symfony-notifier \) -o \ \( $$deb_pkg_name = php-symfony-translation \) ] ; then \ dh_install \ -X.md \ -Xcomposer.json \ -XBridge \ -XLICENSE \ -Xphpunit.xml.dist \ -XTests \ --package=$$deb_pkg_name \ $$src_path/* \ usr/share/php/Symfony/$$pkg_path/; \ else \ dh_install \ -X.git \ -X.md \ -Xcomposer.json \ -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 execute_after_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 execute_before_dh_installchangelogs: for i in $$(ls CHANGELOG-* -r); do cat $$i >> CHANGELOG && echo '' >> CHANGELOG; done execute_after_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