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

php74 #251

Closed
rossnick opened this issue Dec 5, 2019 · 35 comments
Closed

php74 #251

rossnick opened this issue Dec 5, 2019 · 35 comments

Comments

@rossnick
Copy link

rossnick commented Dec 5, 2019

What new package do you want?

php 7.4

Why?

Latest stable php release. (28 Nov 2019 release)

Testing

I agree to test the new package to ensure that it works as expected. Once I am satisfied with the results of my testing I will comment on this issue with the word "STABLE" to get it promoted to the stable repos.

@carlwgeorge
Copy link
Member

Hey @rossnick, thanks for the request. I did see that PHP 7.4 was released, just haven't had the time yet to tackle it.

I was chatting with @kelnei about this in IRC, and he pointed out that this will require a newer version of libzip than is in base RHEL 7. Additionally the PHP source no longer includes a bundled version of libzip. To address that, I've created a libzip1 package (currently in ius-testing) that we should be able to build against. Additionally, we need a newer version of oniguruma than is in EPEL 7, and there isn't a bundled one to use. For various reasons, I think it would be a better solution to get the EPEL package update rather than creating an alternative version package. I've requested that with the EPEL maintainer.

https://bugzilla.redhat.com/show_bug.cgi?id=1777660

Once the dependencies are sorted out, if anyone wants to get more involved with IUS and try to start this package, I've documented the basic process for creating an IUS package.

https://github.com/iusrepo/packaging/wiki/walkthrough

I've also documented the package guidelines for IUS (that supplement the general Fedora packaging guidelines).

https://github.com/iusrepo/packaging/wiki/guidelines

Finally, there are some notes specific to how IUS does PHP over on the php73 wiki.

https://github.com/iusrepo/php73/wiki/implementation

I'm happy to chat with anyone about this in the #ius channel on the Freenode IRC network.

@remicollet
Copy link

I've created a libzip1 package

IMHO better to use the soname in the package name (so libzip5)
(the soname have change in 1.2.0)

@kelnei
Copy link
Member

kelnei commented Dec 11, 2019

@carlwgeorge

I've started working on this here: https://github.com/kelnei/php74

This assumes updated libzip and oniguruma are available. I used your libzip1 from ius-testing and an oniguruma6 (6.9.4) I packaged for myself. This also uses the bundled gd and pcre. I think I ported all your php7.3 changes. Two things to note; 1) I had to update the curltls patch, as it was getting rejected during patching, and 2) I'm not sure the pdo-firebird package is correct, it was previously interbase so I did a provides for interbase. Hopefully this is a good starting point for you.

@carlwgeorge
Copy link
Member

@remicollet

IMHO better to use the soname in the package name (so libzip5)

That's right, I remember now that we did that for libsodium13. Do you know if there has been any previous discussion around clarifying version vs soname in the naming package guidelines? If not I'd like to bring it up on a mailing list.

@kelnei

I've started working on this here: kelnei/php74

Excellent work, thanks! Are you able to transfer that repo to the iusrepo organization? If not I can just clone the repo and push the commits to a new remote.

I had to update the curltls patch, as it was getting rejected during patching,

Yeah that happens from time to time. Minor nitpick, can you rename that patch to php-7.4.0-curltls.patch? It's customary when a patch is rebased like that to rename the file to reflect the version of the upstream software the patch was targeting. It's not necessary on every version update, just when the upstream changes are substantial enough that the patch no longer applies and needs to be rebased. As you can see, the previous patch was originally written for PHP 7.1.0 and continued to apply cleanly for a long time.

I'm not sure the pdo-firebird package is correct, it was previously interbase so I did a provides for interbase.

I saw Remi helped you get this squared away already.

@kelnei
Copy link
Member

kelnei commented Dec 23, 2019

@carlwgeorge

The patch has been renamed, and the repo has been transferred to IUS.

@carlwgeorge
Copy link
Member

carlwgeorge commented Dec 24, 2019

Excellent. The only thing we're missing is the Cirrus CI config file, but there is no point in adding that until we sort out the dependencies. I poked the oniguruma bugzilla, which I believe is our main blocker now.

At some point I'll rename libzip1 to libzip5 as Remi suggested to match the library soname. php74.spec also should be tweaked to build require the pkgconfig virtual provides rather than an exact name.

-BuildRequires: libzip-devel >= 0.11
+BuildRequires: pkgconfig(libzip) >= 0.11

Edit: I took care of the libzip build requirement here and also sent it upstream to the Fedora spec file.

@jsosic
Copy link

jsosic commented Jan 1, 2020

I have rebuilt the PHP to 7.4.1 + built the following RPMs from IUS repos (with small changes):

  • php74-pear-VersionControl_SVN v0.5.2
  • php74-pecl-amqp v1.9.4
  • php74-pecl-apcu v5.1.18
  • php74-pecl-igbinary v3.0.1
  • php74-pecl-memcached v3.1.4
  • php74-pecl-msgpack v2.0.3
  • php74-pecl-ssh2 v1.2
  • php74-pecl-xdebug v2.9.0

If you want, I can publish repos and transfer them to iusrepo organization?

@carlwgeorge
Copy link
Member

@jsosic Thanks for looking in to those. How are you handling the oniguruma dependency for the main php74 package? Once we have our main php74 package created we can look at those add on packages.

@jsosic
Copy link

jsosic commented Jan 1, 2020

I have built the onigurama6 rpm from spec file from @kelnei (available at https://github.com/kelnei/oniguruma6), and have built php74 against that RPM.

@b1rdex

This comment has been minimized.

@StanvanHoorn

This comment has been minimized.

@Venorcis

This comment has been minimized.

@rossnick

This comment has been minimized.

@zanfer1

This comment has been minimized.

@davidalger

This comment has been minimized.

@jsosic

This comment has been minimized.

@carlwgeorge
Copy link
Member

I've initiated the process to do an incompatible upgrade of oniguruma in EPEL 7. Once complete that should unblock us to start doing IUS builds of php74.

https://lists.fedoraproject.org/archives/list/[email protected]/thread/CNSWLDLHTWAEA6NKVI6YO3KKFP4Z2GY5/

@carlwgeorge
Copy link
Member

php74-7.4.6-3 has been published to the ius-testing repository. Please test it out and provide feedback here. Be aware that you will also need to enable epel-testing to get the new oniguruma if you are installing php74-mbstring.

@rossnick
Copy link
Author

rossnick commented Jun 5, 2020

Great news ! On my test machine, I have php73-mbstring installed. When trying to upgrade it to php74-mbstring it seems that I miss a dependency :

Error: Package: php74-mbstring-7.4.6-3.el7.ius.x86_64 (ius7-testing-x86_64)
Requires: libonig.so.5()(64bit)

I do have epel enabled.

With google, I found a pakacge in epel-testing that seems to provide this : https://rpmfind.net/linux/RPM/epel/testing/7/x86_64/Packages/o/oniguruma-6.8.2-1.el7.x86_64.html

Should I enable epel-testing also for testing ?

@Hint-ru
Copy link

Hint-ru commented Jun 5, 2020

@rossnick

Should I enable epel-testing also for testing ?

Yes. From the comment above:

Be aware that you will also need to enable epel-testing to get the new oniguruma if you are installing php74-mbstring.

@rossnick
Copy link
Author

rossnick commented Jun 5, 2020

As always, I read too fast. Sorry. I'll get back. I hate myself when I do that ;-)

@rossnick
Copy link
Author

rossnick commented Jun 5, 2020

php-zip seems to have been removed from the provided features and not enabled.

I beleive commit iusrepo/php73@1b626f0 form php73 should be applied here also.

@davidalger
Copy link
Member

As of PHP 7.3.0, building against the bundled libzip is discouraged, but still possible by adding --without-libzip to the configuration. As of PHP 7.4.0, the bundled libzip is removed.

@rossnick PHP 7.4 no longer bundles libzip and PHP upstream dependencies on it for php packages were removed, so zip support will be moving to a php74-pecl-zip package, which I've ported and pushed into the IUS org (along with quite a number of others) and is now waiting to be published.

@rossnick
Copy link
Author

rossnick commented Jun 5, 2020

Ok, I see. I also use amazon linux 2 with php 7.4, and "they" bundled it in php-common...

For the moment, it won't matter, I'll still be able to make some basic tests. I just had to uninstall composer, it depends on php-zip.

@remicollet
Copy link

remicollet commented Jun 5, 2020

@rossnick PHP 7.4 no longer bundles libzip and PHP upstream

There is NO relation between bundled libzip and zip extension availability in php-src.

pecl extension make sense if you want the latest feature from the latest zip extension using the latest libzip version.

  • PHP 7.4 still have zip 1.15.6 which requires libzip >= 0.11 (but 1.3.1 recommended)
  • zip 1.18 take benefit of libzip 1.6 features
  • zip 1.19 take benefit of libzip 1.7 features
  • etc

We choose to use the pecl extension in Fedora to match libzip version available

  • Fedora 32 have libzip 1.6, so zip 1.18
  • Fedora 33 have libzip 1.7, so zip 1.19
  • etc

@carlwgeorge
Copy link
Member

There is NO relation between bundled libzip and zip extension availability in php-src.

The relation is that in the past IUS choose to utilize the bundled libzip to build a zip subpackage from the main spec file, rather than maintaining a pecl extension package. With the bundled libzip removed, we no longer have that option.

@carlwgeorge
Copy link
Member

@rossnick (and anyone else interested) php74-pecl-zip is now available for testing along with php74. If you're able to test it out please provide your feedback for that one in #273.

More extensions will be coming soon thanks to @davidalger.

@remicollet
Copy link

With the bundled libzip removed, we no longer have that option.

Please explain.

  • The pecl extension uses the system library
  • The zip extension from main php-src uses the system library.

As soon as you have a "lilbzip5" package, you can build both.

--with-libzip option is removed, not the --with-zip one.

@rossnick
Copy link
Author

rossnick commented Jun 7, 2020

So far, I've been able to install what we need to make one of our basic project work. So so far, so good.

But most of the more big projects needs pecl-redis #258, I'll wait for that to complete my tests

@rossnick
Copy link
Author

I've not run extensive testing of all php functions, but I haven't run in any issue with php 7.4. I'm confident enough to install this on our dev and test servers.

@carlwgeorge
Copy link
Member

@rossnick After your testing in your dev and test environments, are you ready for this to be promoted to the main repository, i.e. production use?

@rossnick
Copy link
Author

@carlwgeorge yes, I would be good.

@jrjohnson
Copy link

jrjohnson commented Jun 29, 2020

We've had no problems installing or running this and did some light user testing of our application with no issues.

@carlwgeorge
Copy link
Member

Thanks for testing. php74 has been promoted to the main repository. Not all pecl extensions are complete yet, but they will addressed individually in their respective wishlist issues.

@quinncomendant
Copy link

quinncomendant commented Apr 22, 2022

@jsosic Is there a reason why php74-pecl-ssh2 is not yet available in IUS? If you've successfully built the RPM, why not publish it (I'm refering to your quoted comment below)?

I'm using https://repo.ius.io/7/$basearch/ and was able to install php74 successfully, except for this package:

sudo yum install php74-pecl-ssh2
…
No package php74-pecl-ssh2 available.

Also see issue #298.

I have rebuilt the PHP to 7.4.1 + built the following RPMs from IUS repos (with small changes):

  • php74-pear-VersionControl_SVN v0.5.2
  • php74-pecl-amqp v1.9.4
  • php74-pecl-apcu v5.1.18
  • php74-pecl-igbinary v3.0.1
  • php74-pecl-memcached v3.1.4
  • php74-pecl-msgpack v2.0.3
  • php74-pecl-ssh2 v1.2
  • php74-pecl-xdebug v2.9.0

If you want, I can publish repos and transfer them to iusrepo organization?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests