php7: add new package

This is a copy of the existing php5 stuff, adopted for PHP7.

Please not, that its not supported to install both php5
and php7 in parallel on the target.

Signed-off-by: Michael Heimpold <mhei@heimpold.de>
This commit is contained in:
Michael Heimpold
2016-07-18 23:30:38 +02:00
parent 1034356e9e
commit 292c2ffc18
13 changed files with 1770 additions and 0 deletions
@@ -0,0 +1,11 @@
--- a/ext/standard/php_crypt_r.c
+++ b/ext/standard/php_crypt_r.c
@@ -96,6 +96,8 @@ void _crypt_extended_init_r(void)
InterlockedIncrement(&initialized);
#elif defined(HAVE_SYNC_FETCH_AND_ADD)
__sync_fetch_and_add(&initialized, 1);
+#elif (defined(__GNUC__) && (__GNUC__ == 3))
+ initialized = 1;
#elif defined(HAVE_ATOMIC_H) /* Solaris 10 defines atomic API within */
membar_producer();
atomic_add_int(&initialized, 1);
@@ -0,0 +1,159 @@
From dc8bb6a53bfdfe42d9ae81d4e78c6155ad4bfd6e Mon Sep 17 00:00:00 2001
From: Michael Heimpold <mhei@heimpold.de>
Date: Sun, 17 May 2015 16:50:50 +0200
Subject: [PATCH] ext/opcache: fix detection of shm/mmap
The detection of sysvipc and mmap doesn't work well when cross-compiling,
so I decided to only check for the availability of the functions involved.
This is not a clean solution, but works for now(tm) :-)
It should be discussed with upstream to find a better solution.
This solves the issue reported at
https://github.com/openwrt/packages/issues/1010
and makes opcache usable on OpenWrt.
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
---
ext/opcache/config.m4 | 122 ++-----------------------------------------------
1 file changed, 4 insertions(+), 118 deletions(-)
diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
index b7e4835..7b6c0aa 100644
--- a/ext/opcache/config.m4
+++ b/ext/opcache/config.m4
@@ -11,127 +11,13 @@ if test "$PHP_OPCACHE" != "no"; then
AC_DEFINE(HAVE_MPROTECT, 1, [Define if you have mprotect() function])
])
- AC_MSG_CHECKING(for sysvipc shared memory support)
- AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <unistd.h>
-#include <string.h>
-
-int main() {
- pid_t pid;
- int status;
- int ipc_id;
- char *shm;
- struct shmid_ds shmbuf;
-
- ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
- if (ipc_id == -1) {
- return 1;
- }
-
- shm = shmat(ipc_id, NULL, 0);
- if (shm == (void *)-1) {
- shmctl(ipc_id, IPC_RMID, NULL);
- return 2;
- }
-
- if (shmctl(ipc_id, IPC_STAT, &shmbuf) != 0) {
- shmdt(shm);
- shmctl(ipc_id, IPC_RMID, NULL);
- return 3;
- }
-
- shmbuf.shm_perm.uid = getuid();
- shmbuf.shm_perm.gid = getgid();
- shmbuf.shm_perm.mode = 0600;
-
- if (shmctl(ipc_id, IPC_SET, &shmbuf) != 0) {
- shmdt(shm);
- shmctl(ipc_id, IPC_RMID, NULL);
- return 4;
- }
-
- shmctl(ipc_id, IPC_RMID, NULL);
-
- strcpy(shm, "hello");
-
- pid = fork();
- if (pid < 0) {
- return 5;
- } else if (pid == 0) {
- strcpy(shm, "bye");
- return 6;
- }
- if (wait(&status) != pid) {
- return 7;
- }
- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
- return 8;
- }
- if (strcmp(shm, "bye") != 0) {
- return 9;
- }
- return 0;
-}
-],dnl
+ AC_CHECK_FUNC(shmget,[
AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
- msg=yes,msg=no,msg=no)
- AC_MSG_RESULT([$msg])
-
- AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
- AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <string.h>
-
-#ifndef MAP_ANON
-# ifdef MAP_ANONYMOUS
-# define MAP_ANON MAP_ANONYMOUS
-# endif
-#endif
-#ifndef MAP_FAILED
-# define MAP_FAILED ((void*)-1)
-#endif
-
-int main() {
- pid_t pid;
- int status;
- char *shm;
-
- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
- if (shm == MAP_FAILED) {
- return 1;
- }
-
- strcpy(shm, "hello");
+ ])
- pid = fork();
- if (pid < 0) {
- return 5;
- } else if (pid == 0) {
- strcpy(shm, "bye");
- return 6;
- }
- if (wait(&status) != pid) {
- return 7;
- }
- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
- return 8;
- }
- if (strcmp(shm, "bye") != 0) {
- return 9;
- }
- return 0;
-}
-],dnl
+ AC_CHECK_FUNC(mmap,[
AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
- msg=yes,msg=no,msg=no)
- AC_MSG_RESULT([$msg])
+ ])
AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
AC_TRY_RUN([
--
1.7.10.4
+14
View File
@@ -0,0 +1,14 @@
--- a/ext/gd/libgd/gdkanji.c
+++ b/ext/gd/libgd/gdkanji.c
@@ -9,6 +9,11 @@
#include "gdhelpers.h"
#include <stdarg.h>
+
+/* force usage of internal conversation routine */
+#undef HAVE_ICONV_H
+#undef HAVE_ICONV
+
#if defined(HAVE_ICONV_H) || defined(HAVE_ICONV)
#include <iconv.h>
#ifdef HAVE_ERRNO_H
@@ -0,0 +1,59 @@
--- a/configure.in
+++ b/configure.in
@@ -453,7 +453,10 @@ PHP_CHECK_FUNC(gethostname, nsl)
PHP_CHECK_FUNC(gethostbyaddr, nsl)
PHP_CHECK_FUNC(yp_get_default_domain, nsl)
-PHP_CHECK_FUNC(dlopen, dl)
+PHP_ADD_LIBRARY(dl)
+PHP_DEF_HAVE(dlopen)
+PHP_DEF_HAVE(libdl)
+ac_cv_func_dlopen=yes
if test "$ac_cv_func_dlopen" = "yes"; then
AC_DEFINE(HAVE_LIBDL, 1, [ ])
fi
--- a/ext/fileinfo/config.m4
+++ b/ext/fileinfo/config.m4
@@ -46,6 +46,10 @@ int main(void)
AC_MSG_RESULT(no)
AC_MSG_NOTICE(using libmagic strcasestr implementation)
libmagic_sources="$libmagic_sources libmagic/strcasestr.c"
+ ],[
+ dnl cross-compiling; assume not present
+ AC_MSG_NOTICE(using libmagic strcasestr implementation)
+ libmagic_sources="$libmagic_sources libmagic/strcasestr.c"
])
PHP_NEW_EXTENSION(fileinfo, fileinfo.c $libmagic_sources, $ext_shared,,-I@ext_srcdir@/libmagic)
--- a/ext/opcache/config.m4
+++ b/ext/opcache/config.m4
@@ -227,7 +227,14 @@ AC_TRY_RUN([
flock_type=linux
AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
AC_MSG_RESULT("yes")
-], AC_MSG_RESULT("no") )
+], [
+ AC_MSG_RESULT("no")
+], [
+ dnl cross-compiling; assume Linux
+ flock_type=linux
+ AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
+ AC_MSG_RESULT("yes")
+])
AC_MSG_CHECKING("whether flock struct is BSD ordered")
AC_TRY_RUN([
@@ -243,7 +250,12 @@ AC_TRY_RUN([
flock_type=bsd
AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type])
AC_MSG_RESULT("yes")
-], AC_MSG_RESULT("no") )
+], [
+ AC_MSG_RESULT("no")
+], [
+ dnl cross-compiling; assume Linux
+ AC_MSG_RESULT("no")
+])
if test "$flock_type" == "unknown"; then
AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])