Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

php: update build config and php package #62783

Merged
merged 5 commits into from Jun 12, 2019

Conversation

Projects
None yet
3 participants
@Izorkin
Copy link
Contributor

commented Jun 6, 2019

Motivation for this change

With enable apxs2Support php automatic buildinfg with --enable-maintainer-zts
Enable build phpPackages with re2c.

checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

Remove options valgrindPcreSupport. This options not used with external PCRE

configure: WARNING: PHP is going to be linked with an external PCRE, --with-pcre-valgrind has no effect

Update buyild config. Packages autoconf, bison, flex, libtool, pkgconfig, re2c need only build php - https://www.php.net/manual/en/install.unix.php

When building directly from Git sources or after custom modifications you might also need:

autoconf: 2.13+ (for PHP < 5.4.0), 2.59+ (for PHP >= 5.4.0), 2.64+ (for PHP >= 7.2.0)
automake: 1.4+
libtool: 1.4.x+ (except 1.4.2)
re2c: Version 0.13.4 or newer
flex: Version 2.5.4 (for PHP <= 5.2)
bison:
PHP 5.4: 1.28, 1.35, 1.75, 1.875, 2.0, 2.1, 2.2, 2.3, 2.4, 2.4.1, 2.4.2, 2.4.3, 2.5, 2.5.1, 2.6, 2.6.1, 2.6.2, 2.6.4
PHP 5.5: 2.4, 2.4.1, 2.4.2, 2.4.3, 2.5, 2.5.1, 2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.7
PHP 5.6: >= 2.4, < 3.0
PHP 7.0 - 7.3: 2.4 or later (including Bison 3.x)
PHP 7.4: > 3.0

Update phpPackage event to 2.5.2

cc @etu

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Assured whether relevant documentation is up to date
  • Fits CONTRIBUTING.md.

@aanderse

This comment has been minimized.

Copy link
Contributor

commented Jun 7, 2019

@Izorkin Please add details for Determined the impact on package closure size (by running nix path-info -S before and after). What does adding re2c specifically do?

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 7, 2019

@aanderse PHP generates its lexer using re2c from the zend_language_scanner.l definition file - https://phpinternals.net/categories/lexer
running nix path-info -S error:

error: Please be informed that this pseudo-package is not the only part of
Nixpkgs that fails to evaluate. You should not evaluate entire Nixpkgs
without some special measures to handle failing packages, like those taken
by Hydra.
@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

du -h --max=0 -c $(nix-store -qR /run/current-system) | sort -h | tail

31M     /nix/store/8nrqdc8p3pigwkzski77h8xdbpn4nxip-icu4c-59.1
34M     /nix/store/2dfjlvp38xzkyylwpavnh61azi0d168b-binutils-2.31.1
49M     /nix/store/dq7zwi5phgbdlr19l2iy3bbffhvgnilj-python-2.7.16
57M     /nix/store/fqbrwq2gvv97lb0albmfb2x212azzp46-python3-3.7.3
58M     /nix/store/vzwvfyslchj8j3xk9b1dqs8mrr1hfzd5-perl-5.28.2
78M     /nix/store/gs2w3h2bh8ijf64w76i28fdm1b9hll41-linux-4.19.48
89M     /nix/store/b4bq1q3gq4dgyhdccbfmvm6a9jzk0rzg-php-7.2.19
123M    /nix/store/wzrv1xk177p4zazzv26288c936375c23-glibc-locales-2.27
131M    /nix/store/apcaggi0q3vrb4ha1b07cjxiim2li5ly-gcc-7.4.0
1,3G    итого

after update

31M     /nix/store/8nrqdc8p3pigwkzski77h8xdbpn4nxip-icu4c-59.1
34M     /nix/store/2dfjlvp38xzkyylwpavnh61azi0d168b-binutils-2.31.1
49M     /nix/store/dq7zwi5phgbdlr19l2iy3bbffhvgnilj-python-2.7.16
57M     /nix/store/fqbrwq2gvv97lb0albmfb2x212azzp46-python3-3.7.3
58M     /nix/store/vzwvfyslchj8j3xk9b1dqs8mrr1hfzd5-perl-5.28.2
78M     /nix/store/gs2w3h2bh8ijf64w76i28fdm1b9hll41-linux-4.19.48
89M     /nix/store/i5my5kp5mvq31qa1gf4c9j9ji7c068wf-php-7.2.19
123M    /nix/store/wzrv1xk177p4zazzv26288c936375c23-glibc-locales-2.27
131M    /nix/store/apcaggi0q3vrb4ha1b07cjxiim2li5ly-gcc-7.4.0
1,3G    итого
@aanderse

This comment has been minimized.

Copy link
Contributor

commented Jun 11, 2019

@Izorkin Why are you looking to generate the parsers with re2c? What functionality is missing that gets added? I've noticed several times when compiling libraries the warning that re2c is unavailable but I don't know what adding it does.

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

@aanderse PHP generates its lexer using re2c from the zend_language_scanner.l definition file - https://phpinternals.net/categories/lexer

@aanderse

This comment has been minimized.

Copy link
Contributor

commented Jun 11, 2019

@Izorkin I understand what a lexer is. I'm familiar with re2c. It is a great piece of software.

I'm asking what features are missing from php without having re2c available?

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

@aanderse i do not know. I just removed the message varning.

@aanderse

This comment has been minimized.

Copy link
Contributor

commented Jun 11, 2019

It would be nice to know what value having re2c available at build time provides before this gets merged in my opinion.

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

Is there an option how to check?

@aanderse

This comment has been minimized.

Copy link
Contributor

commented Jun 11, 2019

Maybe the documentation explains.

I'll mention that I've seen this same warning not just in NixOS but Debian as well. Possibly RedHat, though I'm not certain on that.

@etu

This comment has been minimized.

Copy link
Contributor

commented Jun 11, 2019

If we don't see any benefit of including this, like feature, performance or security wise I don't see any point in including it.

And warnings during compilations of software is not uncommon, it happens on every distro everywhere because of different versions of libs, compilers, kernels, headers, etc. It happens everywhere. So just to silence warnings is not a good enough reasons to me.

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

re2c is already in use when building
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/php/default.nix#L62
I removed the re2cSupport option and transferred re2c to nativeBuildInputs

@Izorkin Izorkin force-pushed the Izorkin:php-packages branch from 03c03c0 to 7ed390e Jun 11, 2019

@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 11, 2019

@Izorkin Izorkin force-pushed the Izorkin:php-packages branch from b9c1673 to d613239 Jun 11, 2019

@aanderse
Copy link
Contributor

left a comment

@Izorkin Thanks for doing the research! The oci8 package compiles against both php72 and php73.

@etu

This comment has been minimized.

Copy link
Contributor

commented Jun 12, 2019

@GrahamcOfBorg build php71 php71Packages.composer php71Packages.event php72 php72Packages.composer php72Packages.event php73 php73Packages.composer php73Packages.event

@etu

This comment has been minimized.

Copy link
Contributor

commented Jun 12, 2019

Found information - https://grokbase.com/t/php/php-internals/0832kd02zs/rfc-replace-the-flex-based-scanner-with-an-re2c-1-based-lexer
Packages re2c replace flex lexer.

Now that's a good reason and good resource, thanks. I just want to see that it all builds on all platforms first :)

@etu

etu approved these changes Jun 12, 2019

@etu etu merged commit 039983b into NixOS:master Jun 12, 2019

18 checks passed

Evaluation Performance Report Evaluator Performance Report
Details
grahamcofborg-eval ^.^!
Details
grahamcofborg-eval-check-maintainers matching changed paths to changed attrs...
Details
grahamcofborg-eval-check-meta config.nix: checkMeta = true
Details
grahamcofborg-eval-darwin nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A darwin-tested
Details
grahamcofborg-eval-nixos nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release-combined.nix -A tested
Details
grahamcofborg-eval-nixos-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release.nix -A manual
Details
grahamcofborg-eval-nixos-options nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release.nix -A options
Details
grahamcofborg-eval-nixpkgs-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A manual
Details
grahamcofborg-eval-nixpkgs-tarball nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A tarball
Details
grahamcofborg-eval-nixpkgs-unstable-jobset nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A unstable
Details
grahamcofborg-eval-package-list nix-env -qa --json --file .
Details
grahamcofborg-eval-package-list-no-aliases nix-env -qa --json --file . --arg config { allowAliases = false; }
Details
php, phpPackages.composer, phpPackages.event on aarch64-linux Success
Details
php, phpPackages.composer, phpPackages.event on x86_64-linux Success
Details
php71, php71Packages.composer, php71Packages.event, php72, php72Packages.composer, php72Packages.event, php73, php73Packages.composer, php73Packages.event on aarch64-linux Success
Details
php71, php71Packages.composer, php71Packages.event, php72, php72Packages.composer, php72Packages.event, php73, php73Packages.composer, php73Packages.event on x86_64-darwin Success
Details
php71, php71Packages.composer, php71Packages.event, php72, php72Packages.composer, php72Packages.event, php73, php73Packages.composer, php73Packages.event on x86_64-linux Success
Details
@Izorkin

This comment has been minimized.

Copy link
Contributor Author

commented Jun 12, 2019

Thanks!

@Izorkin Izorkin deleted the Izorkin:php-packages branch Jun 12, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.