Bootstrap recipe for symfony/php-twig

Bryce Harrington bryce.harrington at canonical.com
Thu Jun 3 01:52:34 UTC 2021


Hi Utkarsh,

I've found a bootstrap path for resolving the circular build dependency
between php-twig and symfony.  Unfortunately, and as we suspected,
there's yet another build entanglement between symfony and doctrine.

Brace yourself.

Below is the steps I worked out today.  I had to go back and forth a
bunch to trial-and-error my way through, and likely have left some
errors in these directions.  Please run through the, correct my errors,
and see if you can press on ahead further than I got.


  - Step 0: Prerequisites
    + Enable proposed
    + sudo apt-get remove php*

  - Step 1: Interim php-symfony-contracts
    dget -x https://snapshot.debian.org/archive/debian/20191114T152956Z/pool/main/p/php-symfony-contracts/php-symfony-contracts_2.0.0-1.dsc
    cd php-symfony-contracts-2.0.0/
    install-build-deps
    DEB_BUILD_OPTIONS=nocheck debuild
    sudo dpkg -i ../php-symfony-cache-contracts_2.0.0-1_all.deb \
                 ../php-symfony-translation-contracts_2.0.0-1_all.deb

  - Step 2: Interim symfony
    https://snapshot.debian.org/archive/debian/20191225T031557Z/pool/main/s/symfony/symfony_5.0.2-1.dsc
    DEB_BUILD_OPTIONS=nocheck debuild
    # 2a.  Get basic php-symfony bits in place
    sudo dpkg -i ../php-symfony-security-core_5.0.2-1_all.deb \
                 ../php-symfony-console_5.0.2-1_all.deb \
                 ../php-symfony-css-selector_5.0.2-1_all.deb \
                 ../php-symfony-mime_5.0.2-1_all.deb \
                 ../php-symfony-intl_5.0.2-1_all.deb \
                 ../php-symfony-yaml_5.0.2-1_all.deb \
                 ../php-symfony-http-foundation_5.0.2-1_all.deb \
                 ../php-symfony-phpunit-bridge_5.0.2-1_all.deb
    sudo dpkg -i ../php-symfony-event-dispatcher_5.0.2-1_all.deb

    # 2b.  Install the symfony kernel
    sudo apt-get install php-psr-log
    sudo dpkg -i ../php-symfony-error-handler_5.0.2-1_all.deb \
                 ../php-symfony-var-dumper_5.0.2-1_all.deb \
                 ../php-symfony-http-kernel_5.0.2-1_all.deb

    # 2c.  Install symfony cache
    sudo dpkg -i ../php-symfony-var-exporter_5.0.2-1_all.deb \
                 ../php-symfony-cache_5.0.2-1_all.deb

    # 2d.  Install the symfony framework bundle
    sudo apt-get install php-psr-container=1.0.0-2 \
                         php-psr-cache=1.0.1-2 \
                         php-symfony-service-contracts=1.1.10-2
    sudo dpkg -i ../php-symfony-config_5.0.2-1_all.deb \
                 ../php-symfony-dependency-injection_5.0.2-1_all.deb \
                 ../php-symfony-filesystem_5.0.2-1_all.deb \
                 ../php-symfony-finder_5.0.2-1_all.deb \
                 ../php-symfony-routing_5.0.2-1_all.deb \
                 ../php-symfony-framework-bundle_5.0.2-1_all.deb

    # 2e.  Install php-twig's prereq's
    sudo apt-get install php-twig=2.14.3-1
    sudo dpkg -i ../php-symfony-twig-bundle_5.0.2-1_all.deb

  - Step 3: Interim php-twig
    (Has already been uploaded to -proposed with needed changes, just needs rebuilt)
    apt-get source php-twig
    cd php-twig-3.3.2
    sudo apt-get install php-league-commonmark \
                 php-league-html-to-markdown \
                 php-lorenzo-pinky php-parsedown \
                 php-tijsverkoyen-css-to-inline-styles
    debuild
    sudo dpkg -i ../php-twig_3.3.2-1ubuntu1_all.deb \
                 ../php-twig-inky-extra_3.3.2-1ubuntu1_all.deb \
                 ../php-twig-markdown-extra_3.3.2-1ubuntu1_all.deb \
                 ../php-twig-cssinliner-extra_3.3.2-1ubuntu1_all.deb

  - Step 4: Interim php-doctrine-persistence
    dget -x https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/php-doctrine-persistence/1.3.8-1/php-doctrine-persistence_1.3.8-1.dsc
    cd php-doctrine-persistence-1.3.8/
    sudo apt-get install php-doctrine-reflection
    DEB_BUILD_OPTIONS=nocheck debuild
    sudo dpkg -i ../php-doctrine-persistence_1.3.8-1_all.deb


################################
### HERE BELOW BE YE DRAGONS ###
################################

  - Step TBD: Maybe build more interim versions of symfony??
    + e.g. symfony (5.2.1+dfsg-1) or symfony (5.2.5+dfsg-1)
    + I don't see anything in the changelog that makes me feel that's a
      viable path, but if we can't get Step x (below) to work then it
      might be worth trying.

  - Step x: Build symfony 5.2.6
    apt-get source symfony
    cd symfony-5.2.6+dfsg/

    # Install more prereqs from the interim symfony
    sudo apt-get install php-doctrine-event-manager=1.1.1-1

    sudo apt-get install \
         php-amqp php-apcu php-apcu-bc php-uuid php-gd \
         php-cache-integration-tests php-curl \
         php-guzzlehttp-promises php-http-httplug php-ldap \
         php-psr-http-client php-psr-link php-psr-simple-cache \
         php-masterminds-html5 php-memcached php-monolog php-nrk-predis \
         php-nyholm-psr7 php-pda-pheanstalk php-phpdbg \
         php-sqlite3

    sudo apt-get install  php-symfony-polyfill-php80 \
         php-email-validator  \
         php-friendsofphp-proxy-manager-lts \
         php-symfony-security-acl \
         composer

    # Install the rest of the symfony contracts packages, needed by php doctrine
    sudo dpkg -i ../../php-symfony-contracts-2.0.0/../*_2.0.0-1_all.deb

    # Note: This won't work with the php-doctrine-persistence in the
    #       archive, and requires the 1.3.8-1 version from Step 4.
    sudo dpkg -i ../php-symfony-doctrine-bridge_5.0.2-1_all.deb

    sudo apt-get install php-doctrine-bundle

    # Installing these causes some of the earlier php-symfony stuff to
    # upgrade, such as php-symfony-http-kernel and php-symfony-twig-bundle
    sudo apt-get install php-async-aws-ses php-async-aws-sqs

    # Installing these causes upgrades of some of the php-doctrine stuff
    # we just installed, and things go off the rails.  Be careful not to
    # let any php-symfony-4.4.x bits get installed.
    sudo apt-get install php-doctrine-data-fixtures php-doctrine-orm

    # Unfortunately, the above command causes php-doctrine-bundle to be
    # removed.  symfony requires php-doctrine-bundle as well as the
    # other pieces, but I haven't figured out how to get them all
    # co-installed.  It is possible we need to install older versions of
    # php-doctrine-common and doctrine.  I found that
    # php-doctrine-common 3.1.0 builds ok, but it needs the newer
    # php-doctrine-persistence (which then breaks
    # php-symfony-doctrine-bridge).  php-doctrine-common 2.13.3-1 builds
    # if we disable its testsuite, but also requires an old
    # php-doctrine-inflector... and at this point I'm out of steam.
    #
    # Good luck.

    debuild

  - Step Last: Revert php-twig changes
    + Essentially just resync/rebuild from debian dropping all Ubuntu
      changes


If all the above can be made to work locally, the next step would be to
start putting the above into PPAs.  I suspect it'd be helpful to provide
AA's with at least two PPAs, the first with the initial interim
packages, the latter with the final packages.

Bryce



More information about the ubuntu-server mailing list