!jngDrdMgndWibPCYsR:nixos.org

Nix PHP

78 Members
A room for PHP developers running on Nix23 Servers

Load older messages


SenderMessageTime
20 May 2023
@jtojnar:matrix.orgJan Tojnarenjoy16:46:08
@drupol:matrix.orgPolI mean, feel free to modify it at anytime :)16:54:10
@drupol:matrix.orgPolI think it needs improvements16:54:24
@drupol:matrix.orgPolFor example, 16:54:30
@drupol:matrix.orgPol We should make sure that keys are sorted alphabetically in the produced packages.json 16:54:45
@drupol:matrix.orgPolSo we don't have surprise at some point.16:54:59
@drupol:matrix.orgPol Changing the structure of that single packages.json file and we are good to re-compute all the derivation hashes 16:55:20
@drupol:matrix.orgPolSo we need to fix the structure of that file16:55:27
@drupol:matrix.orgPolAnd avoid modifying it once it's done.16:55:34
@drupol:matrix.orgPolThen we tag that plugin and we're good to go.16:55:43
@drupol:matrix.orgPolWe should also think about where to put that project16:56:47
21 May 2023
@drupol:matrix.orgPol

I've updated the composer plugin with new commands options:

            ->addOption('only-repo', 'r', InputOption::VALUE_NONE, 'Generate only the repository, without the manifest file "packages.json".')
            ->addOption('only-manifest', 'm', InputOption::VALUE_NONE, 'Generate only the manifest "packages.json", without the repository.')
            ->addOption('only-print-manifest', 'p', InputOption::VALUE_NONE, 'Print the manifest for a given arbitrary repository directory.');
10:11:52
@drupol:matrix.orgPol I made those options to reduce the amount of file manipulation in pkgs/build-support/php/hooks/composer-install-hook.sh 10:12:30
@drupol:matrix.orgPol

The package installation procedure is now reduced to:

    # Remove "packages-dev" entries
    jq '."packages-dev" = []' composer.lock > newComposer.lock
    mv newComposer.lock composer.lock
    # Remove "require-dev" dependencies
    jq '."require-dev" = {}' composer.json > newComposer.json
    mv newComposer.json composer.json

    mkdir -p .repo

    # Create the manifest for the local repository
    COMPOSER_PROCESS_TIMEOUT=0 \
    COMPOSER_CACHE_DIR=/dev/null \
    COMPOSER_HOME="${composerVendorCache}/.composer" \
    composer --no-ansi build-local-repo -p $composerVendorCache > .repo/packages.json

    # Configure composer to use the local repository
    composer config repo.packagist false
    composer config repo.composer '{"type": "composer", "url": "file://'"$PWD"'/.repo/packages.json"}'

    # Merge the composer overrides to avoid randomly generated class names
    jq '. * input' "composer.json" "${composerOverrides}/composer.override.json" > newComposer.json
    mv newComposer.json composer.json

    echo "Finished composerInstallConfigureHook"
10:13:09
@drupol:matrix.orgPolI also updated the plugin to output json in alphabetical order10:13:39
22 May 2023
@drupol:matrix.orgPolToday I will most probably write a summary of all the things we tried to get this thing working. 06:58:52
@drupol:matrix.orgPolI've been testing that thing the whole weekend, and I improved it here and there as you can see in the PR.06:59:19
@drupol:matrix.orgPolThere is only ONE single issue with that method.06:59:31
@drupol:matrix.orgPol If by any change you have post-update-cmd in composer.json like in Drupal: https://github.com/drupal/drupal/blob/11.x/composer.json#L111
This is going to fail.
07:00:30
@drupol:matrix.orgPol Why? Because as far as I can see, the update command is expected to be run AFTER the install command and the autoloader needs to be loaded so the update command can run the command properly. 07:01:14
@drupol:matrix.orgPol But in our case, we are running the update command BEFORE the install command: https://github.com/NixOS/nixpkgs/blob/58fed5f92032c4e51286d08a76d9d2bab5443ecb/pkgs/build-support/php/hooks/composer-install-hook.sh#L52 07:02:18
@drupol:matrix.orgPol So today I'm going to test stuff and see how we can get rid of that composer update command before the install. If you have any clue, please let me know. 07:02:50
@drupol:matrix.orgPolOh I think I fixed the Drupal issue !08:28:50
@drupol:matrix.orgPolConfirmed! Drupal issue fixed :)08:31:55
@drupol:matrix.orgPol The fix has been committed to drupol/composer-local-repo-plugin: https://github.com/drupol/composer-local-repo-plugin/commit/9e1144ba0f3e98442bbfc955edd148be281c4148 and in the PR: https://github.com/NixOS/nixpkgs/compare/58fed5f92032c4e51286d08a76d9d2bab5443ecb..2d49300918ee738fa8f2e9d086647539493bb879 08:37:56
@drupol:matrix.orgPol Jan Tojnar: FYI, I think there are rooms for improvements in fossar/composition-c4. I'm trying to propose a PR, but I have the feeling that I need to move this aside or else I won't be doing anything else today... and I'm at work :D 10:09:39
@drupol:matrix.orgPol Basically, the idea is that Composer is able to download a package from dist or source attribute (see relevant part of the code https://github.com/composer/composer/blob/main/src/Composer/Downloader/DownloadManager.php#L143). In fossar/composition-c4, we only handle source. I guess it would not be complicated to fix this. 10:42:54
@drupol:matrix.orgPol * Basically, the idea is that Composer is able to download a package from dist or source attribute (see relevant part of the code https://github.com/composer/composer/blob/main/src/Composer/Downloader/DownloadManager.php#L143). In fossar/composition-c4, we only handle source. I guess it would not be complicated to fix this. I just don't have enough knowledge in Nix to do it... I'm still trying :D 11:45:27
@drupol:matrix.orgPolI created the relevant issue to keep track of this: https://github.com/fossar/composition-c4/pull/611:57:44
@drupol:matrix.orgPolWDYT of this? I just pushed a commit to refactor the script and add a little bit of documentation: https://github.com/NixOS/nixpkgs/blob/7f2c754d1daeeca5eef173b7a2ec6d305522857d/pkgs/build-support/php/hooks/composer-setup-hook.sh14:03:28

Show newer messages


Back to Room ListRoom Version: 6