parent
0bf2d9f99f
commit
d14fcfcb81
@ -1,3 +1,4 @@
|
||||
DIST httpd-2.2.31.tar.bz2 5610489 SHA256 f32f9d19f535dac63b06cb55dfc023b40dcd28196b785f79f9346779e22f26ac SHA512 5aa47d4b76f692bbd8b309135ff99152df98cf69b505b9daf3f13f7f2a31443eaf4995161adfbc47a133b4d0e091fda2d95fc6b87a956f0ada18d7466ee28e74 WHIRLPOOL a2e3e53c51719cb6f7e641b41788cd89ce7b4d2ea105b403bfa3b3d4479b69c5604228269062f66722594e105e91121d05b1c9f27ca7dc4ecfcf339da8b8375c
|
||||
DIST httpd-2.4.20.tar.bz2 6331344 SHA256 0e76a375ed3dbac636f50ac39de966ece443751fe4d62392f9a360a19d94d0da SHA512 8591e0ca8f1c4755d670f1a8780bb656c62b30635cff1f7d4434f7c5017b99f1b14bbb296da5cdb63cd3bcfa4908b8b5f99a0c036e9e0f0c9514acd2a3cb7e53 WHIRLPOOL cc61fa5a2344268cdba69ba1662d555d492b40468a81b1d67fce55f85e178f63ef218a303e51e494c91a26dcec259e3912ca640192dbbe42d2b02ee4fac19a1d
|
||||
DIST httpd-2.4.23.tar.bz2 6351875 SHA256 0c1694b2aad7765896faf92843452ee2555b9591ae10d4f19b245f2adfe85e58 SHA512 c520de5be748c0a785ef0dc77102749eb4f47e224968b8d4bed2ae644faa0964623a0e960b64486a0888446790d050b52a6ae34fe61717fab95b37384b4825b1 WHIRLPOOL f3defbd06a878c66236adfcac2b59b6f47115ac815708bb45f2152bd1754b14a01458c9331eb7a65cba52e0bc53e2e66b32a384d44a029b07ffdd068c7c08a19
|
||||
DIST httpd-2.4.25.tar.bz2 6398218 SHA256 f87ec2df1c9fee3e6bfde3c8b855a3ddb7ca1ab20ca877bd0e2b6bf3f05c80b2 SHA512 6ba4ce1dcef71416cf1c0de2468c002767b5637a75744daf5beb0edd045749a751b3826c4132f594c48e4b33ca8e1b25ebfb63ac4c8b759ca066a89d3261fb22 WHIRLPOOL ccb783875632241e8acf7b43c59163c25b13357b307416abaa3adb0ac868fc547b3cff9585b347e98a8663ec26bea3edad4d42604e6ae86b0db5f769fc11d072
|
||||
|
@ -0,0 +1,107 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=6
|
||||
inherit flag-o-matic eutils multilib toolchain-funcs
|
||||
|
||||
DESCRIPTION="Useful Apache tools - htdigest, htpasswd, ab, htdbm"
|
||||
HOMEPAGE="https://httpd.apache.org/"
|
||||
SRC_URI="mirror://apache/httpd/httpd-${PV}.tar.bz2"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc64-solaris ~x64-solaris"
|
||||
IUSE="libressl ssl"
|
||||
RESTRICT="test"
|
||||
|
||||
RDEPEND=">=dev-libs/apr-1.5.0:1
|
||||
dev-libs/apr-util:1
|
||||
dev-libs/expat
|
||||
dev-libs/libpcre
|
||||
kernel_linux? ( sys-apps/util-linux )
|
||||
ssl? (
|
||||
!libressl? ( dev-libs/openssl:0= )
|
||||
libressl? ( dev-libs/libressl:0= )
|
||||
)"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
sys-devel/libtool"
|
||||
|
||||
S="${WORKDIR}/httpd-${PV}"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2.4.7-Makefile.patch" #459446
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# This package really should upgrade to using pcre's .pc file.
|
||||
cat <<-\EOF >"${T}"/pcre-config
|
||||
#!/bin/bash
|
||||
flags=()
|
||||
for flag; do
|
||||
if [[ ${flag} == "--version" ]]; then
|
||||
flags+=( --modversion )
|
||||
else
|
||||
flags+=( "${flag}" )
|
||||
fi
|
||||
done
|
||||
exec ${PKG_CONFIG} libpcre "${flags[@]}"
|
||||
EOF
|
||||
chmod a+x "${T}"/pcre-config
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Brain dead check.
|
||||
tc-is-cross-compiler && export ap_cv_void_ptr_lt_long="no"
|
||||
|
||||
tc-export PKG_CONFIG
|
||||
|
||||
# Instead of filtering --as-needed (bug #128505), append --no-as-needed
|
||||
#append-ldflags $(no-as-needed)
|
||||
|
||||
# econf overwrites the stuff from config.layout.
|
||||
ac_cv_path_PKGCONFIG=${PKG_CONFIG} \
|
||||
econf \
|
||||
--libexecdir="${EPREFIX}"/usr/$(get_libdir)/apache2/modules \
|
||||
--sbindir="${EPREFIX}"/usr/sbin \
|
||||
--with-perl="${EPREFIX}"/usr/bin/perl \
|
||||
--with-expat="${EPREFIX}"/usr \
|
||||
--with-z="${EPREFIX}"/usr \
|
||||
--with-apr="${SYSROOT}${EPREFIX}"/usr \
|
||||
--with-apr-util="${SYSROOT}${EPREFIX}"/usr \
|
||||
--with-pcre="${T}"/pcre-config \
|
||||
$(use_enable ssl) \
|
||||
$(usex ssl '--with-ssl="${EPREFIX}"/usr' '')
|
||||
sed -i \
|
||||
-e '/^LTFLAGS/s:--silent::' \
|
||||
build/rules.mk build/config_vars.mk || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake -C support
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake -C support DESTDIR="${D}" install
|
||||
dodoc CHANGES
|
||||
doman docs/man/{dbmmanage,htdigest,htpasswd,htdbm,ab,logresolve}.1 \
|
||||
docs/man/{htcacheclean,rotatelogs}.8
|
||||
|
||||
# Providing compatiblity symlinks for #177697 (which we'll stop to install
|
||||
# at some point).
|
||||
pushd "${ED}"/usr/sbin >/dev/null || die
|
||||
local i
|
||||
for i in *; do
|
||||
dosym ${i} /usr/sbin/${i}2
|
||||
done
|
||||
popd >/dev/null || die
|
||||
|
||||
# Provide a symlink for ab-ssl
|
||||
if use ssl; then
|
||||
dosym ab /usr/bin/ab-ssl
|
||||
dosym ab /usr/bin/ab2-ssl
|
||||
fi
|
||||
}
|
@ -1,311 +0,0 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
; FPM Configuration ;
|
||||
;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
; All relative paths in this configuration file are relative to PHP's install
|
||||
; prefix (/usr/lib/php5.3). This prefix can be dynamicaly changed by using the
|
||||
; '-p' argument from the command line.
|
||||
|
||||
; Include one or more files. If glob(3) exists, it is used to include a bunch of
|
||||
; files from a glob(3) pattern. This directive can be used everywhere in the
|
||||
; file.
|
||||
; Relative path can also be used. They will be prefixed by:
|
||||
; - the global prefix if it's been set (-p arguement)
|
||||
; - /usr/lib/php5.3 otherwise
|
||||
;include=/etc/php/fpm-php5.3/fpm.d/*.conf
|
||||
|
||||
;;;;;;;;;;;;;;;;;;
|
||||
; Global Options ;
|
||||
;;;;;;;;;;;;;;;;;;
|
||||
|
||||
[global]
|
||||
; Pid file
|
||||
; Note: the default prefix is /var/lib
|
||||
; Default Value: none
|
||||
; Warning: pid file is overriden by the Gentoo init script.
|
||||
; FPM will refuse to start if you uncomment this settingi and make use of the
|
||||
; init script.
|
||||
; pid = /var/run/php-fpm.pid
|
||||
|
||||
; Error log file
|
||||
; Note: the default prefix is /var/lib
|
||||
; Default Value: log/php-fpm.log
|
||||
error_log = /var/log/php-fpm.log
|
||||
|
||||
; Log level
|
||||
; Possible Values: alert, error, warning, notice, debug
|
||||
; Default Value: notice
|
||||
;log_level = notice
|
||||
|
||||
; If this number of child processes exit with SIGSEGV or SIGBUS within the time
|
||||
; interval set by emergency_restart_interval then FPM will restart. A value
|
||||
; of '0' means 'Off'.
|
||||
; Default Value: 0
|
||||
;emergency_restart_threshold = 0
|
||||
|
||||
; Interval of time used by emergency_restart_interval to determine when
|
||||
; a graceful restart will be initiated. This can be useful to work around
|
||||
; accidental corruptions in an accelerator's shared memory.
|
||||
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
|
||||
; Default Unit: seconds
|
||||
; Default Value: 0
|
||||
;emergency_restart_interval = 0
|
||||
|
||||
; Time limit for child processes to wait for a reaction on signals from master.
|
||||
; Available units: s(econds), m(inutes), h(ours), or d(ays)
|
||||
; Default Unit: seconds
|
||||
; Default Value: 0
|
||||
;process_control_timeout = 0
|
||||
|
||||
; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
|
||||
; Default Value: yes
|
||||
;daemonize = yes
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
; Pool Definitions ;
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
; Multiple pools of child processes may be started with different listening
|
||||
; ports and different management options. The name of the pool will be
|
||||
; used in logs and stats. There is no limitation on the number of pools which
|
||||
; FPM can handle. Your system will tell you anyway :)
|
||||
|
||||
; Start a new pool named 'www'.
|
||||
; the variable $pool can we used in any directive and will be replaced by the
|
||||
; pool name ('www' here)
|
||||
[www]
|
||||
|
||||
; Per pool prefix
|
||||
; It only applies on the following directives:
|
||||
; - 'slowlog'
|
||||
; - 'listen' (unixsocket)
|
||||
; - 'chroot'
|
||||
; - 'chdir'
|
||||
; - 'php_values'
|
||||
; - 'php_admin_values'
|
||||
; When not set, the global prefix (or /usr/lib/php5.3) applies instead.
|
||||
; Note: This directive can also be relative to the global prefix.
|
||||
; Default Value: none
|
||||
;prefix = /path/to/pools/$pool
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all addresses on a
|
||||
; specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Note: This value is mandatory.
|
||||
listen = 127.0.0.1:9000
|
||||
|
||||
; Set listen(2) backlog. A value of '-1' means unlimited.
|
||||
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
|
||||
;listen.backlog = -1
|
||||
|
||||
; List of ipv4 addresses of FastCGI clients which are allowed to connect.
|
||||
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
||||
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
||||
; must be separated by a comma. If this value is left blank, connections will be
|
||||
; accepted from any ip address.
|
||||
; Default Value: any
|
||||
;listen.allowed_clients = 127.0.0.1
|
||||
|
||||
; Set permissions for unix socket, if one is used. In Linux, read/write
|
||||
; permissions must be set in order to allow connections from a web server. Many
|
||||
; BSD-derived systems allow connections regardless of permissions.
|
||||
; Default Values: user and group are set as the running user
|
||||
; mode is set to 0666
|
||||
;listen.owner = nobody
|
||||
;listen.group = nobody
|
||||
;listen.mode = 0666
|
||||
|
||||
; Unix user/group of processes
|
||||
; Note: The user is mandatory. If the group is not set, the default user's group
|
||||
; will be used.
|
||||
user = nobody
|
||||
group = nobody
|
||||
|
||||
; Choose how the process manager will control the number of child processes.
|
||||
; Possible Values:
|
||||
; static - a fixed number (pm.max_children) of child processes;
|
||||
; dynamic - the number of child processes are set dynamically based on the
|
||||
; following directives:
|
||||
; pm.max_children - the maximum number of children that can
|
||||
; be alive at the same time.
|
||||
; pm.start_servers - the number of children created on startup.
|
||||
; pm.min_spare_servers - the minimum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is less than this
|
||||
; number then some children will be created.
|
||||
; pm.max_spare_servers - the maximum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is greater than this
|
||||
; number then some children will be killed.
|
||||
; Note: This value is mandatory.
|
||||
pm = dynamic
|
||||
|
||||
; The number of child processes to be created when pm is set to 'static' and the
|
||||
; maximum number of child processes to be created when pm is set to 'dynamic'.
|
||||
; This value sets the limit on the number of simultaneous requests that will be
|
||||
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
||||
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
||||
; CGI.
|
||||
; Note: Used when pm is set to either 'static' or 'dynamic'
|
||||
; Note: This value is mandatory.
|
||||
pm.max_children = 50
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
|
||||
;pm.start_servers = 20
|
||||
|
||||
; The desired minimum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.min_spare_servers = 5
|
||||
|
||||
; The desired maximum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.max_spare_servers = 35
|
||||
|
||||
; The number of requests each child process should execute before respawning.
|
||||
; This can be useful to work around memory leaks in 3rd party libraries. For
|
||||
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
||||
; Default Value: 0
|
||||
;pm.max_requests = 500
|
||||
|
||||
; The URI to view the FPM status page. If this value is not set, no URI will be
|
||||
; recognized as a status page. By default, the status page shows the following
|
||||
; information:
|
||||
; accepted conn - the number of request accepted by the pool;
|
||||
; pool - the name of the pool;
|
||||
; process manager - static or dynamic;
|
||||
; idle processes - the number of idle processes;
|
||||
; active processes - the number of active processes;
|
||||
; total processes - the number of idle + active processes.
|
||||
; max children reached - number of times, the process limit has been reached,
|
||||
; when pm tries to start more children (works only for
|
||||
; pm 'dynamic')
|
||||
; The values of 'idle processes', 'active processes' and 'total processes' are
|
||||
; updated each second. The value of 'accepted conn' is updated in real time.
|
||||
; Example output:
|
||||
; accepted conn: 12073
|
||||
; pool: www
|
||||
; process manager: static
|
||||
; idle processes: 35
|
||||
; active processes: 65
|
||||
; total processes: 100
|
||||
; max children reached: 1
|
||||
; By default the status page output is formatted as text/plain. Passing either
|
||||
; 'html' or 'json' as a query string will return the corresponding output
|
||||
; syntax. Example:
|
||||
; http://www.foo.bar/status
|
||||
; http://www.foo.bar/status?json
|
||||
; http://www.foo.bar/status?html
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;pm.status_path = /status
|
||||
|
||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||
; URI will be recognized as a ping page. This could be used to test from outside
|
||||
; that FPM is alive and responding, or to
|
||||
; - create a graph of FPM availability (rrd or such);
|
||||
; - remove a server from a group if it is not responding (load balancing);
|
||||
; - trigger alerts for the operating team (24/7).
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;ping.path = /ping
|
||||
|
||||
; This directive may be used to customize the response of a ping request. The
|
||||
; response is formatted as text/plain with a 200 response code.
|
||||
; Default Value: pong
|
||||
;ping.response = pong
|
||||
|
||||
; The timeout for serving a single request after which the worker process will
|
||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_terminate_timeout = 0
|
||||
|
||||
; The timeout for serving a single request after which a PHP backtrace will be
|
||||
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_slowlog_timeout = 0
|
||||
|
||||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
;slowlog = /var/log/php-fpm-$pool.log.slow
|
||||
|
||||
; Set open file descriptor rlimit.
|
||||
; Default Value: system defined value
|
||||
;rlimit_files = 1024
|
||||
|
||||
; Set max core size rlimit.
|
||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||
; Default Value: system defined value
|
||||
;rlimit_core = 0
|
||||
|
||||
; Chroot to this directory at the start. This value must be defined as an
|
||||
; absolute path. When this value is not set, chroot is not used.
|
||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||
; of its subdirectories. If the pool prefix is not set, the global prefix
|
||||
; will be used instead.
|
||||
; Note: chrooting is a great security feature and should be used whenever
|
||||
; possible. However, all PHP paths will be relative to the chroot
|
||||
; (error_log, sessions.save_path, ...).
|
||||
; Default Value: not set
|
||||
;chroot =
|
||||
|
||||
; Chdir to this directory at the start.
|
||||
; Note: relative path can be used.
|
||||
; Default Value: current directory or / when chroot
|
||||
;chdir = /var/www
|
||||
|
||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||
; Note: on highloaded environement, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
;catch_workers_output = yes
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
; Default Value: clean env
|
||||
;env[HOSTNAME] = $HOSTNAME
|
||||
;env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||
;env[TMP] = /tmp
|
||||
;env[TMPDIR] = /tmp
|
||||
;env[TEMP] = /tmp
|
||||
|
||||
; Additional php.ini defines, specific to this pool of workers. These settings
|
||||
; overwrite the values previously defined in the php.ini. The directives are the
|
||||
; same as the PHP SAPI:
|
||||
; php_value/php_flag - you can set classic ini defines which can
|
||||
; be overwritten from PHP call 'ini_set'.
|
||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||
; PHP call 'ini_set'
|
||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
||||
|
||||
; Defining 'extension' will load the corresponding shared extension from
|
||||
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
||||
; overwrite previously defined php.ini values, but will append the new value
|
||||
; instead.
|
||||
|
||||
; Note: path INI options can be relative and will be expanded with the prefix
|
||||
; (pool, global or /usr/lib/php5.3)
|
||||
|
||||
; Default Value: nothing is defined by default except the values in php.ini and
|
||||
; specified at startup with the -d argument
|
||||
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
||||
;php_flag[display_errors] = off
|
||||
;php_admin_value[error_log] = /var/log/fpm-php.www.log
|
||||
;php_admin_flag[log_errors] = on
|
||||
;php_admin_value[memory_limit] = 32M
|
@ -1,784 +0,0 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit eutils autotools flag-o-matic versionator depend.apache apache-module db-use libtool systemd
|
||||
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||
|
||||
function php_get_uri ()
|
||||
{
|
||||
case "${1}" in
|
||||
"php-pre")
|
||||
echo "http://downloads.php.net/dsp/${2}"
|
||||
;;
|
||||
"php")
|
||||
echo "http://www.php.net/distributions/${2}"
|
||||
;;
|
||||
"olemarkus")
|
||||
echo "https://dev.gentoo.org/~olemarkus/php/${2}"
|
||||
;;
|
||||
"gentoo")
|
||||
echo "mirror://gentoo/${2}"
|
||||
;;
|
||||
*)
|
||||
die "unhandled case in php_get_uri"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
PHP_MV="$(get_major_version)"
|
||||
SLOT="$(get_version_component_range 1-2)"
|
||||
|
||||
# alias, so we can handle different types of releases (finals, rcs, alphas,
|
||||
# betas, ...) w/o changing the whole ebuild
|
||||
PHP_PV="${PV/_rc/RC}"
|
||||
PHP_PV="${PHP_PV/_alpha/alpha}"
|
||||
PHP_PV="${PHP_PV/_beta/beta}"
|
||||
PHP_RELEASE="php"
|
||||
[[ ${PV} == ${PV/_alpha/} ]] || PHP_RELEASE="php-pre"
|
||||
[[ ${PV} == ${PV/_beta/} ]] || PHP_RELEASE="php-pre"
|
||||
[[ ${PV} == ${PV/_rc/} ]] || PHP_RELEASE="php-pre"
|
||||
PHP_P="${PN}-${PHP_PV}"
|
||||
|
||||
PHP_SRC_URI="$(php_get_uri "${PHP_RELEASE}" "${PHP_P}.tar.bz2")"
|
||||
|
||||
PHP_FPM_CONF_VER="1"
|
||||
|
||||
SRC_URI="${PHP_SRC_URI}"
|
||||
|
||||
DESCRIPTION="The PHP language runtime engine"
|
||||
HOMEPAGE="http://php.net/"
|
||||
LICENSE="PHP-3"
|
||||
|
||||
S="${WORKDIR}/${PHP_P}"
|
||||
|
||||
# We can build the following SAPIs in the given order
|
||||
SAPIS="embed cli cgi fpm apache2"
|
||||
|
||||
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||
IUSE="${IUSE}
|
||||
${SAPIS/cli/+cli}
|
||||
threads"
|
||||
|
||||
IUSE="${IUSE} bcmath berkdb bzip2 calendar cdb cjk
|
||||
crypt +ctype curl debug
|
||||
enchant exif frontbase +fileinfo +filter firebird
|
||||
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash
|
||||
mssql mysql libmysqlclient mysqli nls
|
||||
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||
readline recode selinux +session sharedmem
|
||||
+simplexml snmp soap sockets spell sqlite ssl
|
||||
sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
|
||||
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
|
||||
|
||||
DEPEND="
|
||||
>=app-eselect/eselect-php-0.7.1-r3[apache2?,fpm?]
|
||||
>=dev-libs/libpcre-8.32[unicode]
|
||||
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||
<www-servers/apache-2.4[threads=] ) )
|
||||
berkdb? ( =sys-libs/db-4* )
|
||||
bzip2? ( app-arch/bzip2 )
|
||||
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||
cjk? ( !gd? (
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0=
|
||||
sys-libs/zlib
|
||||
) )
|
||||
crypt? ( >=dev-libs/libmcrypt-2.4 )
|
||||
curl? ( >=net-misc/curl-7.10.5 )
|
||||
enchant? ( app-text/enchant )
|
||||
exif? ( !gd? (
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0=
|
||||
sys-libs/zlib
|
||||
) )
|
||||
firebird? ( dev-db/firebird )
|
||||
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||
gdbm? ( >=sys-libs/gdbm-1.8.0 )
|
||||
gmp? ( >=dev-libs/gmp-4.1.2 )
|
||||
iconv? ( virtual/libiconv )
|
||||
imap? ( virtual/imap-c-client[ssl=] )
|
||||
intl? ( dev-libs/icu:= )
|
||||
iodbc? ( dev-db/libiodbc )
|
||||
kerberos? ( virtual/krb5 )
|
||||
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||
mssql? ( dev-db/freetds[mssql] )
|
||||
libmysqlclient? (
|
||||
mysql? ( virtual/mysql )
|
||||
mysqli? ( >=virtual/mysql-4.1 )
|
||||
)
|
||||
nls? ( sys-devel/gettext )
|
||||
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||
postgres? ( dev-db/postgresql )
|
||||
qdbm? ( dev-db/qdbm )
|
||||
readline? ( sys-libs/readline )
|
||||
recode? ( app-text/recode )
|
||||
sharedmem? ( dev-libs/mm )
|
||||
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||
spell? ( >=app-text/aspell-0.50 )
|
||||
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||
ssl? ( >=dev-libs/openssl-0.9.7 )
|
||||
sybase-ct? ( dev-db/freetds )
|
||||
tidy? ( app-text/htmltidy )
|
||||
truetype? (
|
||||
=media-libs/freetype-2*
|
||||
>=media-libs/t1lib-5.0.0
|
||||
!gd? (
|
||||
virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||
)
|
||||
unicode? ( dev-libs/oniguruma )
|
||||
vpx? ( media-libs/libvpx )
|
||||
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xpm? (
|
||||
x11-libs/libXpm
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0= sys-libs/zlib
|
||||
)
|
||||
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||
zip? ( sys-libs/zlib )
|
||||
zlib? ( sys-libs/zlib )
|
||||
virtual/mta
|
||||
"
|
||||
|
||||
php="=${CATEGORY}/${PF}"
|
||||
|
||||
REQUIRED_USE="
|
||||
truetype? ( gd )
|
||||
vpx? ( gd )
|
||||
cjk? ( gd )
|
||||
exif? ( gd )
|
||||
|
||||
xpm? ( gd )
|
||||
gd? ( zlib )
|
||||
simplexml? ( xml )
|
||||
soap? ( xml )
|
||||
wddx? ( xml )
|
||||
xmlrpc? ( || ( xml iconv ) )
|
||||
xmlreader? ( xml )
|
||||
xslt? ( xml )
|
||||
ldap-sasl? ( ldap )
|
||||
mhash? ( hash )
|
||||
phar? ( hash )
|
||||
libmysqlclient? ( || (
|
||||
mysql
|
||||
mysqli
|
||||
pdo
|
||||
) )
|
||||
|
||||
qdbm? ( !gdbm )
|
||||
readline? ( !libedit )
|
||||
recode? ( !imap !mysql !mysqli )
|
||||
sharedmem? ( !threads )
|
||||
|
||||
!cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )"
|
||||
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
fpm? (
|
||||
selinux? ( sec-policy/selinux-phpfpm )
|
||||
systemd? ( sys-apps/systemd ) )"
|
||||
|
||||
DEPEND="${DEPEND}
|
||||
sys-devel/flex
|
||||
>=sys-devel/m4-1.4.3
|
||||
>=sys-devel/libtool-1.5.18"
|
||||
|
||||
# Allow users to install production version if they want to
|
||||
|
||||
case "${PHP_INI_VERSION}" in
|
||||
production|development)
|
||||
;;
|
||||
*)
|
||||
PHP_INI_VERSION="development"
|
||||
;;
|
||||
esac
|
||||
|
||||
PHP_INI_UPSTREAM="php.ini-${PHP_INI_VERSION}"
|
||||
PHP_INI_FILE="php.ini"
|
||||
|
||||
want_apache
|
||||
|
||||
pkg_setup() {
|
||||
depend.apache_pkg_setup
|
||||
}
|
||||
|
||||
php_install_ini() {
|
||||
local phpsapi="${1}"
|
||||
|
||||
# work out where we are installing the ini file
|
||||
php_set_ini_dir "${phpsapi}"
|
||||
|
||||
local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
|
||||
cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
|
||||
|
||||
# default to /tmp for save_path, bug #282768
|
||||
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}"
|
||||
|
||||
# Set the extension dir
|
||||
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
|
||||
|
||||
# Set the include path to point to where we want to find PEAR packages
|
||||
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}"
|
||||
|
||||
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||
newins "${phpinisrc}" "${PHP_INI_FILE}"
|
||||
|
||||
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||
elog
|
||||
|
||||
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||
|
||||
if use_if_iuse opcache; then
|
||||
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> "${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||
fi
|
||||
|
||||
# SAPI-specific handling
|
||||
|
||||
if [[ "${sapi}" == "fpm" ]] ; then
|
||||
[[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
|
||||
einfo "Installing FPM CGI config file php-fpm.conf"
|
||||
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||
newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
|
||||
|
||||
# Remove bogus /etc/php-fpm.conf.default (bug 359906)
|
||||
[[ -f "${ED}/etc/php-fpm.conf.default" ]] && rm "${ED}/etc/php-fpm.conf.default"
|
||||
fi
|
||||
|
||||
# Install PHP ini files into /usr/share/php
|
||||
|
||||
dodoc php.ini-development
|
||||
dodoc php.ini-production
|
||||
|
||||
}
|
||||
|
||||
php_set_ini_dir() {
|
||||
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
|
||||
# ([empty session.save_path]/session_mm_[sapi][gid].sem)
|
||||
# there is no easy way to circumvent that, all php calls during
|
||||
# install use -n, so no php.ini file will be used.
|
||||
# As such, this is the easiest way to get around
|
||||
addpredict /session_mm_cli250.sem
|
||||
addpredict /session_mm_cli0.sem
|
||||
|
||||
# Change PHP branding
|
||||
# Get the alpha/beta/rc version
|
||||
sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
|
||||
-i configure.in || die "Unable to change PHP branding"
|
||||
|
||||
# Patch PHP to show Gentoo as the server platform
|
||||
sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
|
||||
-i configure.in || die "Failed to fix server platform name"
|
||||
|
||||
# Prevent PHP from activating the Apache config,
|
||||
# as we will do that ourselves
|
||||
sed -i \
|
||||
-e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||
-e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||
configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
|
||||
|
||||
# Patch PHP to support heimdal instead of mit-krb5
|
||||
if has_version "app-crypt/heimdal" ; then
|
||||
sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
|
||||
|| die "Failed to fix heimdal libname"
|
||||
sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
|
||||
|| die "Failed to fix heimdal crypt library reference"
|
||||
fi
|
||||
|
||||
#Add user patches #357637
|
||||
epatch_user
|
||||
|
||||
#force rebuilding aclocal.m4
|
||||
rm aclocal.m4
|
||||
eautoreconf
|
||||
|
||||
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||
# http://bugs.php.net/bug.php?id=48795, bug #343481
|
||||
sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
addpredict /var/lib/net-snmp/mib_indexes
|
||||
|
||||
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||
|
||||
# This is a global variable and should be in caps. It isn't because the
|
||||
# phpconfutils eclass relies on exactly this name...
|
||||
# for --with-libdir see bug #327025
|
||||
my_conf="
|
||||
--prefix="${PHP_DESTDIR}"
|
||||
--mandir="${PHP_DESTDIR}"/man
|
||||
--infodir="${PHP_DESTDIR}"/info
|
||||
--libdir="${PHP_DESTDIR}"/lib
|
||||
--with-libdir=$(get_libdir)
|
||||
--without-pear
|
||||
$(use_enable threads maintainer-zts)"
|
||||
|
||||
# extension USE flag shared
|
||||
my_conf+="
|
||||
$(use_enable bcmath bcmath )
|
||||
$(use_with bzip2 bz2 "${EPREFIX}"/usr)
|
||||
$(use_enable calendar calendar )
|
||||
$(use_enable ctype ctype )
|
||||
$(use_with curl curl "${EPREFIX}"/usr)
|
||||
$(use_enable xml dom )
|
||||
$(use_with enchant enchant "${EPREFIX}"/usr)
|
||||
$(use_enable exif exif )
|
||||
$(use_enable fileinfo fileinfo )
|
||||
$(use_enable filter filter )
|
||||
$(use_enable ftp ftp )
|
||||
$(use_with nls gettext "${EPREFIX}"/usr)
|
||||
$(use_with gmp gmp "${EPREFIX}"/usr)
|
||||
$(use_enable hash hash )
|
||||
$(use_with mhash mhash "${EPREFIX}"/usr)
|
||||
$(use_with iconv iconv $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}"/usr))
|
||||
$(use_enable intl intl )
|
||||
$(use_enable ipv6 ipv6 )
|
||||
$(use_enable json json )
|
||||
$(use_with kerberos kerberos "${EPREFIX}"/usr)
|
||||
$(use_enable xml libxml )
|
||||
$(use_with xml libxml-dir "${EPREFIX}"/usr)
|
||||
$(use_enable unicode mbstring )
|
||||
$(use_with crypt mcrypt "${EPREFIX}"/usr)
|
||||
$(use_with mssql mssql "${EPREFIX}"/usr)
|
||||
$(use_with unicode onig "${EPREFIX}"/usr)
|
||||
$(use_with ssl openssl "${EPREFIX}"/usr)
|
||||
$(use_with ssl openssl-dir "${EPREFIX}"/usr)
|
||||
$(use_enable pcntl pcntl )
|
||||
$(use_enable phar phar )
|
||||
$(use_enable pdo pdo )
|
||||
$(use_enable opcache opcache )
|
||||
$(use_with postgres pgsql "${EPREFIX}"/usr)
|
||||
$(use_enable posix posix )
|
||||
$(use_with spell pspell "${EPREFIX}"/usr)
|
||||
$(use_with recode recode "${EPREFIX}"/usr)
|
||||
$(use_enable simplexml simplexml )
|
||||
$(use_enable sharedmem shmop )
|
||||
$(use_with snmp snmp "${EPREFIX}"/usr)
|
||||
$(use_enable soap soap )
|
||||
$(use_enable sockets sockets )
|
||||
$(use_with sqlite sqlite3 "${EPREFIX}"/usr)
|
||||
$(use_with sybase-ct sybase-ct "${EPREFIX}"/usr)
|
||||
$(use_enable sysvipc sysvmsg )
|
||||
$(use_enable sysvipc sysvsem )
|
||||
$(use_enable sysvipc sysvshm )
|
||||
$(use_with systemd fpm-systemd)
|
||||
$(use_with tidy tidy "${EPREFIX}"/usr)
|
||||
$(use_enable tokenizer tokenizer )
|
||||
$(use_enable wddx wddx )
|
||||
$(use_enable xml xml )
|
||||
$(use_enable xmlreader xmlreader )
|
||||
$(use_enable xmlwriter xmlwriter )
|
||||
$(use_with xmlrpc xmlrpc)
|
||||
$(use_with xslt xsl "${EPREFIX}"/usr)
|
||||
$(use_enable zip zip )
|
||||
$(use_with zlib zlib "${EPREFIX}"/usr)
|
||||
$(use_enable debug debug )"
|
||||
|
||||
# DBA support
|
||||
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||
|| use qdbm ; then
|
||||
my_conf="${my_conf} --enable-dba${shared}"
|
||||
fi
|
||||
|
||||
# DBA drivers support
|
||||
my_conf+="
|
||||
$(use_with cdb cdb)
|
||||
$(use_with berkdb db4 ${EPREFIX}/usr)
|
||||
$(use_enable flatfile flatfile )
|
||||
$(use_with gdbm gdbm ${EPREFIX}/usr)
|
||||
$(use_enable inifile inifile )
|
||||
$(use_with qdbm qdbm ${EPREFIX}/usr)"
|
||||
|
||||
# Support for the GD graphics library
|
||||
my_conf+="
|
||||
$(use_with truetype freetype-dir ${EPREFIX}/usr)
|
||||
$(use_with truetype t1lib ${EPREFIX}/usr)
|
||||
$(use_enable cjk gd-jis-conv )
|
||||
$(use_with gd jpeg-dir ${EPREFIX}/usr)
|
||||
$(use_with gd png-dir ${EPREFIX}/usr)
|
||||
$(use_with xpm xpm-dir ${EPREFIX}/usr)
|
||||
$(use_with vpx vpx-dir ${EPREFIX}/usr)"
|
||||
# enable gd last, so configure can pick up the previous settings
|
||||
my_conf+="
|
||||
$(use_with gd gd)"
|
||||
|
||||
# IMAP support
|
||||
if use imap ; then
|
||||
my_conf+="
|
||||
$(use_with imap imap ${EPREFIX}/usr)
|
||||
$(use_with ssl imap-ssl ${EPREFIX}/usr)"
|
||||
fi
|
||||
|
||||
# Interbase/firebird support
|
||||
|
||||
if use firebird ; then
|
||||
my_conf+="
|
||||
$(use_with firebird interbase ${EPREFIX}/usr)"
|
||||
fi
|
||||
|
||||
# LDAP support
|
||||
if use ldap ; then
|
||||
my_conf+="
|
||||
$(use_with ldap ldap ${EPREFIX}/usr)
|
||||
$(use_with ldap-sasl ldap-sasl ${EPREFIX}/usr)"
|
||||
fi
|
||||
|
||||
# MySQL support
|
||||
local mysqllib="mysqlnd"
|
||||
local mysqlilib="mysqlnd"
|
||||
use libmysqlclient && mysqllib="${EPREFIX}/usr"
|
||||
use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
|
||||
|
||||
my_conf+=" $(use_with mysql mysql $mysqllib)"
|
||||
my_conf+=" $(use_with mysqli mysqli $mysqlilib)"
|
||||
|
||||
local mysqlsock=" $(use_with mysql mysql-sock ${EPREFIX}/var/run/mysqld/mysqld.sock)"
|
||||
if use mysql ; then
|
||||
my_conf+="${mysqlsock}"
|
||||
elif use mysqli ; then
|
||||
my_conf+="${mysqlsock}"
|
||||
fi
|
||||
|
||||
# ODBC support
|
||||
if use odbc ; then
|
||||
my_conf+="
|
||||
$(use_with odbc unixODBC ${EPREFIX}/usr)"
|
||||
fi
|
||||
|
||||
if use iodbc ; then
|
||||
my_conf+="
|
||||
$(use_with iodbc iodbc ${EPREFIX}/usr)"
|
||||
fi
|
||||
|
||||
# Oracle support
|
||||
if use oci8-instant-client ; then
|
||||
my_conf+="
|
||||
$(use_with oci8-instant-client oci8)"
|
||||
fi
|
||||
|
||||
# PDO support
|
||||
if use pdo ; then
|
||||
my_conf+="
|
||||
$(use_with mssql pdo-dblib )
|
||||
$(use_with mysql pdo-mysql ${mysqllib})
|
||||
$(use_with postgres pdo-pgsql )
|
||||
$(use_with sqlite pdo-sqlite ${EPREFIX}/usr)
|
||||
$(use_with odbc pdo-odbc unixODBC,${EPREFIX}/usr)"
|
||||
if use oci8-instant-client ; then
|
||||
my_conf+="
|
||||
$(use_with oci8-instant-client pdo-oci)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# readline/libedit support
|
||||
my_conf+="
|
||||
$(use_with readline readline ${EPREFIX}/usr)
|
||||
$(use_with libedit libedit ${EPREFIX}/usr)"
|
||||
|
||||
# Session support
|
||||
if use session ; then
|
||||
my_conf+="
|
||||
$(use_with sharedmem mm ${EPREFIX}/usr)"
|
||||
else
|
||||
my_conf+="
|
||||
$(use_enable session session )"
|
||||
fi
|
||||
|
||||
# Use pic for shared modules such as apache2's mod_php
|
||||
my_conf="${my_conf} --with-pic"
|
||||
|
||||
# we use the system copy of pcre
|
||||
# --with-pcre-regex affects ext/pcre
|
||||
# --with-pcre-dir affects ext/filter and ext/zip
|
||||
my_conf="${my_conf} --with-pcre-regex=${EPREFIX}/usr --with-pcre-dir=${EPREFIX}/usr"
|
||||
|
||||
# Catch CFLAGS problems
|
||||
# Fixes bug #14067.
|
||||
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||
replace-cpu-flags "k6*" "i586"
|
||||
|
||||
# Support user-passed configuration parameters
|
||||
my_conf="${my_conf} ${EXTRA_ECONF:-}"
|
||||
|
||||
# Support the Apache2 extras, they must be set globally for all
|
||||
# SAPIs to work correctly, especially for external PHP extensions
|
||||
|
||||
mkdir -p "${WORKDIR}/sapis-build"
|
||||
for one_sapi in $SAPIS ; do
|
||||
use "${one_sapi}" || continue
|
||||
php_set_ini_dir "${one_sapi}"
|
||||
|
||||
cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
|
||||
cd "${WORKDIR}/sapis-build/${one_sapi}"
|
||||
|
||||
sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
|
||||
--with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
|
||||
|
||||
for sapi in $SAPIS ; do
|
||||
case "$sapi" in
|
||||
cli|cgi|embed|fpm)
|
||||
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||
sapi_conf="${sapi_conf} --enable-${sapi}"
|
||||
else
|
||||
sapi_conf="${sapi_conf} --disable-${sapi}"
|
||||
fi
|
||||
;;
|
||||
|
||||
apache2)
|
||||
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||
sapi_conf="${sapi_conf} --with-apxs2=${EPREFIX}/usr/sbin/apxs"
|
||||
else
|
||||
sapi_conf="${sapi_conf} --without-apxs2"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
econf ${sapi_conf}
|
||||
done
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
# snmp seems to run during src_compile, too (bug #324739)
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
addpredict /var/lib/net-snmp/mib_indexes
|
||||
|
||||
for sapi in ${SAPIS} ; do
|
||||
if use "${sapi}"; then
|
||||
cd "${WORKDIR}/sapis-build/$sapi" || "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||
emake || die "emake failed"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# see bug #324739 for what happens when we don't have that
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
|
||||
# grab the first SAPI that got built and install common files from there
|
||||
local first_sapi=""
|
||||
for sapi in $SAPIS ; do
|
||||
if use $sapi ; then
|
||||
first_sapi=$sapi
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Makefile forgets to create this before trying to write to it...
|
||||
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||
|
||||
# Install php environment (without any sapis)
|
||||
cd "${WORKDIR}/sapis-build/$first_sapi"
|
||||
emake INSTALL_ROOT="${D}" \
|
||||
install-build install-headers install-programs \
|
||||
|| die "emake install failed"
|
||||
|
||||
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||
|
||||
# Create the directory where we'll put version-specific php scripts
|
||||
keepdir /usr/share/php${PHP_MV}
|
||||
|
||||
local sapi="", file=""
|
||||
local sapi_list=""
|
||||
|
||||
for sapi in ${SAPIS}; do
|
||||
if use "${sapi}" ; then
|
||||
einfo "Installing SAPI: ${sapi}"
|
||||
cd "${WORKDIR}/sapis-build/${sapi}"
|
||||
|
||||
if [[ "${sapi}" == "apache2" ]] ; then
|
||||
# We're specifically not using emake install-sapi as libtool
|
||||
# may cause unnecessary relink failures (see bug #351266)
|
||||
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||
newins ".libs/libphp5$(get_libname)" "libphp${PHP_MV}$(get_libname)"
|
||||
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||
else
|
||||
# needed each time, php_install_ini would reset it
|
||||
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||
into "${dest}"
|
||||
case "$sapi" in
|
||||
cli)
|
||||
source="sapi/cli/php"
|
||||
;;
|
||||
cgi)
|
||||
source="sapi/cgi/php-cgi"
|
||||
;;
|
||||
fpm)
|
||||
source="sapi/fpm/php-fpm"
|
||||
;;
|
||||
embed)
|
||||
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||
;;
|
||||
*)
|
||||
die "unhandled sapi in src_install"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||
dolib.so "${source}" || die "Unable to install ${sapi} sapi"
|
||||
else
|
||||
dobin "${source}" || die "Unable to install ${sapi} sapi"
|
||||
local name="$(basename ${source})"
|
||||
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
php_install_ini "${sapi}"
|
||||
|
||||
# construct correct SAPI string for php-config
|
||||
# thanks to ferringb for the bash voodoo
|
||||
if [[ "${sapi}" == "apache2" ]]; then
|
||||
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||
else
|
||||
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Installing opcache module
|
||||
if use_if_iuse opcache ; then
|
||||
dolib.so "modules/opcache$(get_libname)" || die "Unable to install opcache module"
|
||||
fi
|
||||
|
||||
# Install env.d files
|
||||
newenvd "${FILESDIR}/20php5-envd" \
|
||||
"20php${SLOT}"
|
||||
sed -e "s|/lib/|/$(get_libdir)/|g" -i \
|
||||
"${ED}/etc/env.d/20php${SLOT}"
|
||||
sed -e "s|php5|php${SLOT}|g" -i \
|
||||
"${ED}/etc/env.d/20php${SLOT}"
|
||||
|
||||
# set php-config variable correctly (bug #278439)
|
||||
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
|
||||
|
||||
if use fpm ; then
|
||||
if use systemd; then
|
||||
systemd_newunit "${FILESDIR}/php-fpm_at.service" "php-fpm@${SLOT}.service"
|
||||
else
|
||||
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" "php-fpm@${SLOT}.service"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||
ewarn "Test phase requires USE=cli, skipping"
|
||||
return
|
||||
else
|
||||
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||
fi
|
||||
|
||||
if [[ -x "${WORKDIR}/sapis/cgi/php-cgi" ]] ; then
|
||||
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
|
||||
fi
|
||||
|
||||
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d "session.save_path=${T}" \
|
||||
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d "session.save_path=${T}"
|
||||
|
||||
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||
mv "${name}.out" "${name}.out.orig" 2>/dev/null
|
||||
done
|
||||
|
||||
local failed="$(find -name '*.out')"
|
||||
if [[ ${failed} != "" ]] ; then
|
||||
ewarn "The following test cases failed unexpectedly:"
|
||||
for name in ${failed}; do
|
||||
ewarn " ${name/.out/}"
|
||||
done
|
||||
else
|
||||
einfo "No unexpected test failures, all fine"
|
||||
fi
|
||||
|
||||
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||
local passed=""
|
||||
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||
[[ -f "${name}.diff" ]] && continue
|
||||
passed="${passed} ${name}"
|
||||
done
|
||||
if [[ ${passed} != "" ]] ; then
|
||||
einfo "The following test cases passed unexpectedly:"
|
||||
for name in ${passed}; do
|
||||
ewarn " ${passed}"
|
||||
done
|
||||
else
|
||||
einfo "None of the known-to-fail tests passed, all fine"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Output some general info to the user
|
||||
if use apache2 ; then
|
||||
APACHE2_MOD_DEFINE="PHP"
|
||||
APACHE2_MOD_CONF="70_mod_php" # provided by app-eselect/eselect-php
|
||||
apache-module_pkg_postinst
|
||||
fi
|
||||
|
||||
# Create the symlinks for php
|
||||
for m in ${SAPIS}; do
|
||||
[[ ${m} == 'embed' ]] && continue;
|
||||
if use $m ; then
|
||||
local ci=$(eselect php show $m)
|
||||
if [[ -z $ci ]]; then
|
||||
eselect php set $m php${SLOT}
|
||||
einfo "Switched ${m} to use php:${SLOT}"
|
||||
einfo
|
||||
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||
elog "To switch $m to use php:${SLOT}, run"
|
||||
elog " eselect php set $m php${SLOT}"
|
||||
elog
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
elog "To build extensions for this version of PHP, you will need to"
|
||||
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||
elog
|
||||
if ! use readline && use cli ; then
|
||||
ewarn "Note that in order to use php interactivly, you need to enable"
|
||||
ewarn "the readline USE flag or php -a will hang"
|
||||
fi
|
||||
elog
|
||||
elog "This ebuild installed a version of php.ini based on php.ini-${PHP_INI_VERSION} version."
|
||||
elog "You can chose which version of php.ini to install by default by setting PHP_INI_VERSION to either"
|
||||
elog "'production' or 'development' in ${EPREFIX}/etc/make.conf"
|
||||
elog "Both versions of php.ini can be found in ${EPREFIX}/usr/share/doc/${PF}"
|
||||
|
||||
elog
|
||||
elog "For more details on how minor version slotting works (PHP_TARGETS) please read the upgrade guide:"
|
||||
elog "https://www.gentoo.org/proj/en/php/php-upgrading.xml"
|
||||
elog
|
||||
}
|
||||
|
||||
pkg_prerm() {
|
||||
eselect php cleanup
|
||||
}
|
@ -1,791 +0,0 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit eutils autotools flag-o-matic versionator depend.apache apache-module db-use libtool systemd
|
||||
|
||||
KEYWORDS="alpha amd64 arm hppa ~ia64 ~mips ~ppc ppc64 ~s390 ~sh ~sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
|
||||
|
||||
function php_get_uri ()
|
||||
{
|
||||
case "${1}" in
|
||||
"php-pre")
|
||||
echo "http://downloads.php.net/dsp/${2}"
|
||||
;;
|
||||
"php")
|
||||
echo "http://www.php.net/distributions/${2}"
|
||||
;;
|
||||
"olemarkus")
|
||||
echo "https://dev.gentoo.org/~olemarkus/php/${2}"
|
||||
;;
|
||||
"gentoo")
|
||||
echo "mirror://gentoo/${2}"
|
||||
;;
|
||||
*)
|
||||
die "unhandled case in php_get_uri"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
PHP_MV="$(get_major_version)"
|
||||
SLOT="$(get_version_component_range 1-2)"
|
||||
|
||||
# alias, so we can handle different types of releases (finals, rcs, alphas,
|
||||
# betas, ...) w/o changing the whole ebuild
|
||||
PHP_PV="${PV/_rc/RC}"
|
||||
PHP_PV="${PHP_PV/_alpha/alpha}"
|
||||
PHP_PV="${PHP_PV/_beta/beta}"
|
||||
PHP_RELEASE="php"
|
||||
[[ ${PV} == ${PV/_alpha/} ]] || PHP_RELEASE="php-pre"
|
||||
[[ ${PV} == ${PV/_beta/} ]] || PHP_RELEASE="php-pre"
|
||||
[[ ${PV} == ${PV/_rc/} ]] || PHP_RELEASE="php-pre"
|
||||
PHP_P="${PN}-${PHP_PV}"
|
||||
|
||||
PHP_SRC_URI="$(php_get_uri "${PHP_RELEASE}" "${PHP_P}.tar.xz")"
|
||||
|
||||
PHP_FPM_CONF_VER="1"
|
||||
|
||||
SRC_URI="${PHP_SRC_URI}"
|
||||
|
||||
DESCRIPTION="The PHP language runtime engine"
|
||||
HOMEPAGE="http://php.net/"
|
||||
LICENSE="PHP-3"
|
||||
|
||||
S="${WORKDIR}/${PHP_P}"
|
||||
|
||||
# We can build the following SAPIs in the given order
|
||||
SAPIS="embed cli cgi fpm apache2"
|
||||
|
||||
# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
|
||||
IUSE="${IUSE}
|
||||
${SAPIS/cli/+cli}
|
||||
threads"
|
||||
|
||||
IUSE="${IUSE} bcmath berkdb bzip2 calendar cdb cjk
|
||||
crypt +ctype curl debug
|
||||
enchant exif frontbase +fileinfo +filter firebird
|
||||
flatfile ftp gd gdbm gmp +hash +iconv imap inifile
|
||||
intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash
|
||||
mssql mysql libmysqlclient mysqli nls
|
||||
oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
|
||||
readline recode selinux +session sharedmem
|
||||
+simplexml snmp soap sockets spell sqlite ssl
|
||||
sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
|
||||
+xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
|
||||
|
||||
DEPEND="
|
||||
>=app-eselect/eselect-php-0.7.1-r3[apache2?,fpm?]
|
||||
>=dev-libs/libpcre-8.32[unicode]
|
||||
apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
|
||||
<www-servers/apache-2.4[threads=] ) )
|
||||
berkdb? ( =sys-libs/db-4* )
|
||||
bzip2? ( app-arch/bzip2 )
|
||||
cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
|
||||
cjk? ( !gd? (
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0=
|
||||
sys-libs/zlib
|
||||
) )
|
||||
crypt? ( >=dev-libs/libmcrypt-2.4 )
|
||||
curl? ( >=net-misc/curl-7.10.5 )
|
||||
enchant? ( app-text/enchant )
|
||||
exif? ( !gd? (
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0=
|
||||
sys-libs/zlib
|
||||
) )
|
||||
firebird? ( dev-db/firebird )
|
||||
gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||
gdbm? ( >=sys-libs/gdbm-1.8.0 )
|
||||
gmp? ( >=dev-libs/gmp-4.1.2 )
|
||||
iconv? ( virtual/libiconv )
|
||||
imap? ( virtual/imap-c-client[ssl=] )
|
||||
intl? ( dev-libs/icu:= )
|
||||
iodbc? ( dev-db/libiodbc )
|
||||
kerberos? ( virtual/krb5 )
|
||||
ldap? ( >=net-nds/openldap-1.2.11 )
|
||||
ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
|
||||
libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
|
||||
mssql? ( dev-db/freetds[mssql] )
|
||||
libmysqlclient? (
|
||||
mysql? ( virtual/mysql )
|
||||
mysqli? ( >=virtual/mysql-4.1 )
|
||||
)
|
||||
nls? ( sys-devel/gettext )
|
||||
oci8-instant-client? ( dev-db/oracle-instantclient-basic )
|
||||
odbc? ( >=dev-db/unixODBC-1.8.13 )
|
||||
postgres? ( dev-db/postgresql )
|
||||
qdbm? ( dev-db/qdbm )
|
||||
readline? ( sys-libs/readline )
|
||||
recode? ( app-text/recode )
|
||||
sharedmem? ( dev-libs/mm )
|
||||
simplexml? ( >=dev-libs/libxml2-2.6.8 )
|
||||
snmp? ( >=net-analyzer/net-snmp-5.2 )
|
||||
soap? ( >=dev-libs/libxml2-2.6.8 )
|
||||
spell? ( >=app-text/aspell-0.50 )
|
||||
sqlite? ( >=dev-db/sqlite-3.7.6.3 )
|
||||
ssl? ( >=dev-libs/openssl-0.9.7 )
|
||||
sybase-ct? ( dev-db/freetds )
|
||||
tidy? ( app-text/htmltidy )
|
||||
truetype? (
|
||||
=media-libs/freetype-2*
|
||||
>=media-libs/t1lib-5.0.0
|
||||
!gd? (
|
||||
virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
|
||||
)
|
||||
unicode? ( dev-libs/oniguruma )
|
||||
vpx? ( media-libs/libvpx )
|
||||
wddx? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xml? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
|
||||
xmlreader? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
|
||||
xpm? (
|
||||
x11-libs/libXpm
|
||||
virtual/jpeg:0
|
||||
media-libs/libpng:0= sys-libs/zlib
|
||||
)
|
||||
xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
|
||||
zip? ( sys-libs/zlib )
|
||||
zlib? ( sys-libs/zlib )
|
||||
virtual/mta
|
||||
"
|
||||
|
||||
php="=${CATEGORY}/${PF}"
|
||||
|
||||
REQUIRED_USE="
|
||||
truetype? ( gd )
|
||||
vpx? ( gd )
|
||||
cjk? ( gd )
|
||||
exif? ( gd )
|
||||
|
||||
xpm? ( gd )
|
||||
gd? ( zlib )
|
||||
simplexml? ( xml )
|
||||
soap? ( xml )
|
||||
wddx? ( xml )
|
||||
xmlrpc? ( || ( xml iconv ) )
|
||||
xmlreader? ( xml )
|
||||
xslt? ( xml )
|
||||
ldap-sasl? ( ldap )
|
||||
mhash? ( hash )
|
||||
phar? ( hash )
|
||||
libmysqlclient? ( || (
|
||||
mysql
|
||||
mysqli
|
||||
pdo
|
||||
) )
|
||||
|
||||
qdbm? ( !gdbm )
|
||||
readline? ( !libedit )
|
||||
recode? ( !imap !mysql !mysqli )
|
||||
sharedmem? ( !threads )
|
||||
|
||||
!cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )"
|
||||
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
fpm? (
|
||||
selinux? ( sec-policy/selinux-phpfpm )
|
||||
systemd? ( sys-apps/systemd ) )"
|
||||
|
||||
DEPEND="${DEPEND}
|
||||
sys-devel/flex
|
||||
>=sys-devel/m4-1.4.3
|
||||
>=sys-devel/libtool-1.5.18"
|
||||
|
||||
# Allow users to install production version if they want to
|
||||
|
||||
case "${PHP_INI_VERSION}" in
|
||||
production|development)
|
||||
;;
|
||||
*)
|
||||
PHP_INI_VERSION="development"
|
||||
;;
|
||||
esac
|
||||
|
||||
PHP_INI_UPSTREAM="php.ini-${PHP_INI_VERSION}"
|
||||
PHP_INI_FILE="php.ini"
|
||||
|
||||
want_apache
|
||||
|
||||
pkg_setup() {
|
||||
depend.apache_pkg_setup
|
||||
}
|
||||
|
||||
php_install_ini() {
|
||||
local phpsapi="${1}"
|
||||
|
||||
# work out where we are installing the ini file
|
||||
php_set_ini_dir "${phpsapi}"
|
||||
|
||||
local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
|
||||
cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
|
||||
|
||||
# default to /tmp for save_path, bug #282768
|
||||
sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}"
|
||||
|
||||
# Set the extension dir
|
||||
sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
|
||||
|
||||
# Set the include path to point to where we want to find PEAR packages
|
||||
sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}"
|
||||
|
||||
dodir "${PHP_INI_DIR#${EPREFIX}}"
|
||||
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||
newins "${phpinisrc}" "${PHP_INI_FILE}"
|
||||
|
||||
elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
|
||||
elog
|
||||
|
||||
dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
|
||||
dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
|
||||
|
||||
if use_if_iuse opcache; then
|
||||
elog "Adding opcache to $PHP_EXT_INI_DIR"
|
||||
echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> "${D}/${PHP_EXT_INI_DIR}"/opcache.ini
|
||||
dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
|
||||
fi
|
||||
|
||||
# SAPI-specific handling
|
||||
|
||||
if [[ "${sapi}" == "fpm" ]] ; then
|
||||
[[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
|
||||
einfo "Installing FPM CGI config file php-fpm.conf"
|
||||
insinto "${PHP_INI_DIR#${EPREFIX}}"
|
||||
newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
|
||||
|
||||
# Remove bogus /etc/php-fpm.conf.default (bug 359906)
|
||||
[[ -f "${ED}/etc/php-fpm.conf.default" ]] && rm "${ED}/etc/php-fpm.conf.default"
|
||||
fi
|
||||
|
||||
# Install PHP ini files into /usr/share/php
|
||||
|
||||
dodoc php.ini-development
|
||||
dodoc php.ini-production
|
||||
|
||||
}
|
||||
|
||||
php_set_ini_dir() {
|
||||
PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
|
||||
PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
|
||||
PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
|
||||
# ([empty session.save_path]/session_mm_[sapi][gid].sem)
|
||||
# there is no easy way to circumvent that, all php calls during
|
||||
# install use -n, so no php.ini file will be used.
|
||||
# As such, this is the easiest way to get around
|
||||
addpredict /session_mm_cli250.sem
|
||||
addpredict /session_mm_cli0.sem
|
||||
|
||||
# Change PHP branding
|
||||
# Get the alpha/beta/rc version
|
||||
sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
|
||||
-i configure.in || die "Unable to change PHP branding"
|
||||
|
||||
# Patch PHP to show Gentoo as the server platform
|
||||
sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
|
||||
-i configure.in || die "Failed to fix server platform name"
|
||||
|
||||
# Prevent PHP from activating the Apache config,
|
||||
# as we will do that ourselves
|
||||
sed -i \
|
||||
-e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||
-e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
|
||||
configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
|
||||
|
||||
# Patch PHP to support heimdal instead of mit-krb5
|
||||
if has_version "app-crypt/heimdal" ; then
|
||||
sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
|
||||
|| die "Failed to fix heimdal libname"
|
||||
sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
|
||||
|| die "Failed to fix heimdal crypt library reference"
|
||||
fi
|
||||
|
||||
#Add user patches #357637
|
||||
epatch_user
|
||||
|
||||
#force rebuilding aclocal.m4
|
||||
rm aclocal.m4
|
||||
eautoreconf
|
||||
|
||||
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||
# http://bugs.php.net/bug.php?id=48795, bug #343481
|
||||
sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
addpredict /var/lib/net-snmp/mib_indexes
|
||||
|
||||
PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
|
||||
|
||||
# This is a global variable and should be in caps. It isn't because the
|
||||
# phpconfutils eclass relies on exactly this name...
|
||||
# for --with-libdir see bug #327025
|
||||
my_conf="
|
||||
--prefix="${PHP_DESTDIR}"
|
||||
--mandir="${PHP_DESTDIR}"/man
|
||||
--infodir="${PHP_DESTDIR}"/info
|
||||
--libdir="${PHP_DESTDIR}"/lib
|
||||
--with-libdir=$(get_libdir)
|
||||
--without-pear
|
||||
$(use_enable threads maintainer-zts)"
|
||||
|
||||
# extension USE flag shared
|
||||
my_conf+="
|
||||
$(use_enable bcmath bcmath )
|
||||
$(use_with bzip2 bz2 "${EPREFIX}"/usr)
|
||||
$(use_enable calendar calendar )
|
||||
$(use_enable ctype ctype )
|
||||
$(use_with curl curl "${EPREFIX}"/usr)
|
||||
$(use_enable xml dom )
|
||||
$(use_with enchant enchant "${EPREFIX}"/usr)
|
||||
$(use_enable exif exif )
|
||||
$(use_enable fileinfo fileinfo )
|
||||
$(use_enable filter filter )
|
||||
$(use_enable ftp ftp )
|
||||
$(use_with nls gettext "${EPREFIX}"/usr)
|
||||
$(use_with gmp gmp "${EPREFIX}"/usr)
|
||||
$(use_enable hash hash )
|
||||
$(use_with mhash mhash "${EPREFIX}"/usr)
|
||||
$(use_with iconv iconv $(use elibc_glibc || use elibc_musl || echo "${EPREFIX}"/usr))
|
||||
$(use_enable intl intl )
|
||||
$(use_enable ipv6 ipv6 )
|
||||
$(use_enable json json )
|
||||
$(use_with kerberos kerberos "${EPREFIX}"/usr)
|
||||
$(use_enable xml libxml )
|
||||
$(use_with xml libxml-dir "${EPREFIX}"/usr)
|
||||
$(use_enable unicode mbstring )
|
||||
$(use_with crypt mcrypt "${EPREFIX}"/usr)
|
||||
$(use_with mssql mssql "${EPREFIX}"/usr)
|
||||
$(use_with unicode onig "${EPREFIX}"/usr)
|
||||
$(use_with ssl openssl "${EPREFIX}"/usr)
|
||||
$(use_with ssl openssl-dir "${EPREFIX}"/usr)
|
||||
$(use_enable pcntl pcntl )
|
||||
$(use_enable phar phar )
|
||||
$(use_enable pdo pdo )
|
||||
$(use_enable opcache opcache )
|
||||
$(use_with postgres pgsql "${EPREFIX}"/usr)
|
||||
$(use_enable posix posix )
|
||||
$(use_with spell pspell "${EPREFIX}"/usr)
|
||||
$(use_with recode recode "${EPREFIX}"/usr)
|
||||
$(use_enable simplexml simplexml )
|
||||
$(use_enable sharedmem shmop )
|
||||
$(use_with snmp snmp "${EPREFIX}"/usr)
|
||||
$(use_enable soap soap )
|
||||
$(use_enable sockets sockets )
|
||||
$(use_with sqlite sqlite3 "${EPREFIX}"/usr)
|
||||
$(use_with sybase-ct sybase-ct "${EPREFIX}"/usr)
|
||||
$(use_enable sysvipc sysvmsg )
|
||||
$(use_enable sysvipc sysvsem )
|
||||
$(use_enable sysvipc sysvshm )
|
||||
$(use_with systemd fpm-systemd)
|
||||
$(use_with tidy tidy "${EPREFIX}"/usr)
|
||||
$(use_enable tokenizer tokenizer )
|
||||
$(use_enable wddx wddx )
|
||||
$(use_enable xml xml )
|
||||
$(use_enable xmlreader xmlreader )
|
||||
$(use_enable xmlwriter xmlwriter )
|
||||
$(use_with xmlrpc xmlrpc)
|
||||
$(use_with xslt xsl "${EPREFIX}"/usr)
|
||||
$(use_enable zip zip )
|
||||
$(use_with zlib zlib "${EPREFIX}"/usr)
|
||||
$(use_enable debug debug )"
|
||||
|
||||
# DBA support
|
||||
if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
|
||||
|| use qdbm ; then
|
||||
my_conf="${my_conf} --enable-dba${shared}"
|
||||
fi
|
||||
|
||||
# DBA drivers support
|
||||
my_conf+="
|
||||
$(use_with cdb cdb)
|
||||
$(use_with berkdb db4 "${EPREFIX}"/usr)
|
||||
$(use_enable flatfile flatfile )
|
||||
$(use_with gdbm gdbm "${EPREFIX}"/usr)
|
||||
$(use_enable inifile inifile )
|
||||
$(use_with qdbm qdbm "${EPREFIX}"/usr)"
|
||||
|
||||
# Support for the GD graphics library
|
||||
my_conf+="
|
||||
$(use_with truetype freetype-dir "${EPREFIX}"/usr)
|
||||
$(use_with truetype t1lib "${EPREFIX}"/usr)
|
||||
$(use_enable cjk gd-jis-conv )
|
||||
$(use_with gd jpeg-dir "${EPREFIX}"/usr)
|
||||
$(use_with gd png-dir "${EPREFIX}"/usr)
|
||||
$(use_with xpm xpm-dir "${EPREFIX}"/usr)
|
||||
$(use_with vpx vpx-dir "${EPREFIX}"/usr)"
|
||||
# enable gd last, so configure can pick up the previous settings
|
||||
my_conf+="
|
||||
$(use_with gd gd)"
|
||||
|
||||
# IMAP support
|
||||
if use imap ; then
|
||||
my_conf+="
|
||||
$(use_with imap imap "${EPREFIX}"/usr)
|
||||
$(use_with ssl imap-ssl "${EPREFIX}"/usr)"
|
||||
fi
|
||||
|
||||
# Interbase/firebird support
|
||||
|
||||
if use firebird ; then
|
||||
my_conf+="
|
||||
$(use_with firebird interbase "${EPREFIX}"/usr)"
|
||||
fi
|
||||
|
||||
# LDAP support
|
||||
if use ldap ; then
|
||||
my_conf+="
|
||||
$(use_with ldap ldap "${EPREFIX}"/usr)
|
||||
$(use_with ldap-sasl ldap-sasl "${EPREFIX}"/usr)"
|
||||
fi
|
||||
|
||||
# MySQL support
|
||||
local mysqllib="mysqlnd"
|
||||
local mysqlilib="mysqlnd"
|
||||
use libmysqlclient && mysqllib="${EPREFIX}/usr"
|
||||
use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
|
||||
|
||||
my_conf+=" $(use_with mysql mysql $mysqllib)"
|
||||
my_conf+=" $(use_with mysqli mysqli $mysqlilib)"
|
||||
|
||||
local mysqlsock=" $(use_with mysql mysql-sock ${EPREFIX}/var/run/mysqld/mysqld.sock)"
|
||||
if use mysql ; then
|
||||
my_conf+="${mysqlsock}"
|
||||
elif use mysqli ; then
|
||||
my_conf+="${mysqlsock}"
|
||||
fi
|
||||
|
||||
# ODBC support
|
||||
if use odbc ; then
|
||||
my_conf+="
|
||||
$(use_with odbc unixODBC "${EPREFIX}"/usr)"
|
||||
fi
|
||||
|
||||
if use iodbc ; then
|
||||
my_conf+="
|
||||
$(use_with iodbc iodbc "${EPREFIX}"/usr)"
|
||||
fi
|
||||
|
||||
# Oracle support
|
||||
if use oci8-instant-client ; then
|
||||
my_conf+="
|
||||
$(use_with oci8-instant-client oci8)"
|
||||
fi
|
||||
|
||||
# PDO support
|
||||
if use pdo ; then
|
||||
my_conf+="
|
||||
$(use_with mssql pdo-dblib )
|
||||
$(use_with mysql pdo-mysql ${mysqllib})
|
||||
$(use_with postgres pdo-pgsql )
|
||||
$(use_with sqlite pdo-sqlite "${EPREFIX}"/usr)
|
||||
$(use_with odbc pdo-odbc "unixODBC,${EPREFIX}/usr")"
|
||||
if use oci8-instant-client ; then
|
||||
my_conf+="
|
||||
$(use_with oci8-instant-client pdo-oci)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# readline/libedit support
|
||||
my_conf+="
|
||||
$(use_with readline readline "${EPREFIX}/usr")
|
||||
$(use_with libedit libedit "${EPREFIX}/usr")"
|
||||
|
||||
# Session support
|
||||
if use session ; then
|
||||
my_conf+="
|
||||
$(use_with sharedmem mm "${EPREFIX}/usr")"
|
||||
else
|
||||
my_conf+="
|
||||
$(use_enable session session )"
|
||||
fi
|
||||
|
||||
# Use pic for shared modules such as apache2's mod_php
|
||||
my_conf="${my_conf} --with-pic"
|
||||
|
||||
# we use the system copy of pcre
|
||||
# --with-pcre-regex affects ext/pcre
|
||||
# --with-pcre-dir affects ext/filter and ext/zip
|
||||
my_conf="${my_conf} --with-pcre-regex=${EPREFIX}/usr --with-pcre-dir=${EPREFIX}/usr"
|
||||
|
||||
# Catch CFLAGS problems
|
||||
# Fixes bug #14067.
|
||||
# Changed order to run it in reverse for bug #32022 and #12021.
|
||||
replace-cpu-flags "k6*" "i586"
|
||||
|
||||
# Support user-passed configuration parameters
|
||||
my_conf="${my_conf} ${EXTRA_ECONF:-}"
|
||||
|
||||
# Support the Apache2 extras, they must be set globally for all
|
||||
# SAPIs to work correctly, especially for external PHP extensions
|
||||
|
||||
mkdir -p "${WORKDIR}/sapis-build"
|
||||
for one_sapi in $SAPIS ; do
|
||||
use "${one_sapi}" || continue
|
||||
php_set_ini_dir "${one_sapi}"
|
||||
|
||||
cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
|
||||
cd "${WORKDIR}/sapis-build/${one_sapi}"
|
||||
|
||||
sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
|
||||
--with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
|
||||
|
||||
for sapi in $SAPIS ; do
|
||||
case "$sapi" in
|
||||
cli|cgi|embed|fpm)
|
||||
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||
sapi_conf="${sapi_conf} --enable-${sapi}"
|
||||
else
|
||||
sapi_conf="${sapi_conf} --disable-${sapi}"
|
||||
fi
|
||||
;;
|
||||
|
||||
apache2)
|
||||
if [[ "${one_sapi}" == "${sapi}" ]] ; then
|
||||
sapi_conf="${sapi_conf} --with-apxs2=${EPREFIX}/usr/sbin/apxs"
|
||||
else
|
||||
sapi_conf="${sapi_conf} --without-apxs2"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
econf ${sapi_conf}
|
||||
done
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
# snmp seems to run during src_compile, too (bug #324739)
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
addpredict /var/lib/net-snmp/mib_indexes
|
||||
|
||||
for sapi in ${SAPIS} ; do
|
||||
if use "${sapi}"; then
|
||||
cd "${WORKDIR}/sapis-build/$sapi" || "Failed to change dir to ${WORKDIR}/sapis-build/$1"
|
||||
emake || die "emake failed"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# see bug #324739 for what happens when we don't have that
|
||||
addpredict /usr/share/snmp/mibs/.index
|
||||
|
||||
# grab the first SAPI that got built and install common files from there
|
||||
local first_sapi=""
|
||||
for sapi in $SAPIS ; do
|
||||
if use $sapi ; then
|
||||
first_sapi=$sapi
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Makefile forgets to create this before trying to write to it...
|
||||
dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
|
||||
|
||||
# Install php environment (without any sapis)
|
||||
cd "${WORKDIR}/sapis-build/$first_sapi"
|
||||
emake INSTALL_ROOT="${D}" \
|
||||
install-build install-headers install-programs \
|
||||
|| die "emake install failed"
|
||||
|
||||
local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
|
||||
|
||||
# Create the directory where we'll put version-specific php scripts
|
||||
keepdir /usr/share/php${PHP_MV}
|
||||
|
||||
local sapi="", file=""
|
||||
local sapi_list=""
|
||||
|
||||
for sapi in ${SAPIS}; do
|
||||
if use "${sapi}" ; then
|
||||
einfo "Installing SAPI: ${sapi}"
|
||||
cd "${WORKDIR}/sapis-build/${sapi}"
|
||||
|
||||
if [[ "${sapi}" == "apache2" ]] ; then
|
||||
# We're specifically not using emake install-sapi as libtool
|
||||
# may cause unnecessary relink failures (see bug #351266)
|
||||
insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
|
||||
newins ".libs/libphp5$(get_libname)" "libphp${PHP_MV}$(get_libname)"
|
||||
keepdir "/usr/$(get_libdir)/apache2/modules"
|
||||
else
|
||||
# needed each time, php_install_ini would reset it
|
||||
local dest="${PHP_DESTDIR#${EPREFIX}}"
|
||||
into "${dest}"
|
||||
case "$sapi" in
|
||||
cli)
|
||||
source="sapi/cli/php"
|
||||
;;
|
||||
cgi)
|
||||
source="sapi/cgi/php-cgi"
|
||||
;;
|
||||
fpm)
|
||||
source="sapi/fpm/php-fpm"
|
||||
;;
|
||||
embed)
|
||||
source="libs/libphp${PHP_MV}$(get_libname)"
|
||||
;;
|
||||
*)
|
||||
die "unhandled sapi in src_install"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "${source}" == *"$(get_libname)" ]]; then
|
||||
dolib.so "${source}" || die "Unable to install ${sapi} sapi"
|
||||
else
|
||||
dobin "${source}" || die "Unable to install ${sapi} sapi"
|
||||
local name="$(basename ${source})"
|
||||
dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
php_install_ini "${sapi}"
|
||||
|
||||
# construct correct SAPI string for php-config
|
||||
# thanks to ferringb for the bash voodoo
|
||||
if [[ "${sapi}" == "apache2" ]]; then
|
||||
sapi_list="${sapi_list:+${sapi_list} }apache2handler"
|
||||
else
|
||||
sapi_list="${sapi_list:+${sapi_list} }${sapi}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Installing opcache module
|
||||
if use_if_iuse opcache ; then
|
||||
dolib.so "modules/opcache$(get_libname)" || die "Unable to install opcache module"
|
||||
fi
|
||||
|
||||
# Install env.d files
|
||||
newenvd "${FILESDIR}/20php5-envd" \
|
||||
"20php${SLOT}"
|
||||
sed -e "s|/lib/|/$(get_libdir)/|g" -i \
|
||||
"${ED}/etc/env.d/20php${SLOT}"
|
||||
sed -e "s|php5|php${SLOT}|g" -i \
|
||||
"${ED}/etc/env.d/20php${SLOT}"
|
||||
|
||||
# set php-config variable correctly (bug #278439)
|
||||
sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
|
||||
"${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
|
||||
|
||||
if use fpm ; then
|
||||
if use systemd; then
|
||||
systemd_newunit "${FILESDIR}/php-fpm_at.service" "php-fpm@${SLOT}.service"
|
||||
else
|
||||
systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" "php-fpm@${SLOT}.service"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
|
||||
if [[ ! -x "${PHP_BIN}" ]] ; then
|
||||
ewarn "Test phase requires USE=cli, skipping"
|
||||
return
|
||||
else
|
||||
export TEST_PHP_EXECUTABLE="${PHP_BIN}"
|
||||
fi
|
||||
|
||||
if [[ -x "${WORKDIR}/sapis/cgi/php-cgi" ]] ; then
|
||||
export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
|
||||
fi
|
||||
|
||||
REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d "session.save_path=${T}" \
|
||||
"${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d "session.save_path=${T}"
|
||||
|
||||
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||
mv "${name}.out" "${name}.out.orig" 2>/dev/null
|
||||
done
|
||||
|
||||
local failed="$(find -name '*.out')"
|
||||
if [[ ${failed} != "" ]] ; then
|
||||
ewarn "The following test cases failed unexpectedly:"
|
||||
for name in ${failed}; do
|
||||
ewarn " ${name/.out/}"
|
||||
done
|
||||
else
|
||||
einfo "No unexpected test failures, all fine"
|
||||
fi
|
||||
|
||||
if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
|
||||
local passed=""
|
||||
for name in ${EXPECTED_TEST_FAILURES}; do
|
||||
[[ -f "${name}.diff" ]] && continue
|
||||
passed="${passed} ${name}"
|
||||
done
|
||||
if [[ ${passed} != "" ]] ; then
|
||||
einfo "The following test cases passed unexpectedly:"
|
||||
for name in ${passed}; do
|
||||
ewarn " ${passed}"
|
||||
done
|
||||
else
|
||||
einfo "None of the known-to-fail tests passed, all fine"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
# Output some general info to the user
|
||||
if use apache2 ; then
|
||||
APACHE2_MOD_DEFINE="PHP"
|
||||
APACHE2_MOD_CONF="70_mod_php" # provided by app-eselect/eselect-php
|
||||
apache-module_pkg_postinst
|
||||
fi
|
||||
|
||||
# Create the symlinks for php
|
||||
for m in ${SAPIS}; do
|
||||
[[ ${m} == 'embed' ]] && continue;
|
||||
if use $m ; then
|
||||
local ci=$(eselect php show $m)
|
||||
if [[ -z $ci ]]; then
|
||||
eselect php set $m php${SLOT}
|
||||
einfo "Switched ${m} to use php:${SLOT}"
|
||||
einfo
|
||||
elif [[ $ci != "php${SLOT}" ]] ; then
|
||||
elog "To switch $m to use php:${SLOT}, run"
|
||||
elog " eselect php set $m php${SLOT}"
|
||||
elog
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
elog "To build extensions for this version of PHP, you will need to"
|
||||
elog "add php${SLOT/./-} to your PHP_TARGETS USE_EXPAND variable."
|
||||
elog
|
||||
if ! use readline && use cli ; then
|
||||
ewarn "Note that in order to use php interactivly, you need to enable"
|
||||
ewarn "the readline USE flag or php -a will hang"
|
||||
fi
|
||||
elog
|
||||
elog "This ebuild installed a version of php.ini based on php.ini-${PHP_INI_VERSION} version."
|
||||
elog "You can chose which version of php.ini to install by default by setting PHP_INI_VERSION to either"
|
||||
elog "'production' or 'development' in ${EPREFIX}/etc/make.conf"
|
||||
elog "Both versions of php.ini can be found in ${EPREFIX}/usr/share/doc/${PF}"
|
||||
|
||||
elog
|
||||
elog "For more details on how minor version slotting works (PHP_TARGETS) please read the upgrade guide:"
|
||||
elog "https://www.gentoo.org/proj/en/php/php-upgrading.xml"
|
||||
elog
|
||||
|
||||
ewarn
|
||||
ewarn "PHP 5.5 is End of Life"
|
||||
ewarn "This version of PHP 5.5 is likely to be the last and is not due to receive any further security updates."
|
||||
ewarn "Please migrate to 5.6 or later as soon as possible."
|
||||
ewarn "PHP 5.5 will be masked for removal on the next release."
|
||||
ewarn
|
||||
}
|
||||
|
||||
pkg_prerm() {
|
||||
eselect php cleanup
|
||||
}
|
@ -1,2 +1 @@
|
||||
DIST scala-2.11.7.tgz 28460530 SHA256 ffe4196f13ee98a66cf54baffb0940d29432b2bd820bd0781a8316eec22926d0 SHA512 1603fc6a0a6b3656146eee5650e0a57402d8ce65382220055a4934acb8fa15a81721b3b732ca856566e99c564e8b0a9448c8887668a814765798bea57933e6a3 WHIRLPOOL 808db0b2eddf356ad259b21681a6465b666875da3ebc6f49be3f4c9da7358b36dec0b25b6c243725e92f27311a109f559ffc6f2c31dd19f115d665cff95ed8b5
|
||||
DIST scala-2.11.8.tgz 28678231 SHA256 87fc86a19d9725edb5fd9866c5ee9424cdb2cd86b767f1bb7d47313e8e391ace SHA512 c00a0eaa4317c3ffbdbbd9c817f06c5262f0549f22bd7f1886cc22643e34e8909648bbfb58f3a63c453baf045381a52128ff0b18b7a39274ef03aad7daea9fdf WHIRLPOOL dfdd640218b0fa39acb4ba3bb0b43fc82b24b6f5442ab4bca1140b90022dccfd222d9d05c8b790184735e6d254e5d7a06b06f066b7d6ec74166c010298723069
|
||||
|
@ -1,77 +0,0 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
JAVA_PKG_IUSE="doc"
|
||||
|
||||
inherit java-pkg-2
|
||||
|
||||
DESCRIPTION="The Scala Programming Language"
|
||||
HOMEPAGE="http://scala.epfl.ch/"
|
||||
SRC_URI="http://downloads.typesafe.com/scala/${PV}/scala-${PV}.tgz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 x86"
|
||||
IUSE="doc"
|
||||
|
||||
DEPEND=""
|
||||
RDEPEND=">=virtual/jre-1.6
|
||||
!dev-lang/scala"
|
||||
|
||||
S=${WORKDIR}/scala-${PV}
|
||||
|
||||
java_prepare() {
|
||||
ebegin 'Cleaning .bat files'
|
||||
rm -f bin/*.bat || die
|
||||
eend $?
|
||||
|
||||
ebegin 'Patching SCALA_HOME variable in bin/ directory'
|
||||
for f in bin/*; do
|
||||
sed -i -e 's#\(SCALA_HOME\)=.*#\1=/usr/share/scala-bin#' $f || die
|
||||
done
|
||||
eend $?
|
||||
}
|
||||
|
||||
src_install() {
|
||||
ebegin 'Installing bin scripts'
|
||||
dobin bin/*
|
||||
eend $?
|
||||
|
||||
ebegin 'Installing jar files'
|
||||
cd lib/ || die
|
||||
|
||||
# Unversion those libs
|
||||
java-pkg_newjar scala-continuations-library_*.jar scala-continuations-library.jar
|
||||
java-pkg_newjar akka-actor_*.jar akka-actor.jar
|
||||
java-pkg_newjar config-*.jar config.jar
|
||||
java-pkg_newjar scala-actors-2.11.0.jar scala-actors.jar
|
||||
java-pkg_newjar scala-actors-migration_*.jar scala-actors-migration.jar
|
||||
java-pkg_newjar scala-swing_*.jar scala-swing.jar
|
||||
java-pkg_newjar scala-parser-combinators_*.jar scala-parser-combinators.jar
|
||||
java-pkg_newjar scala-xml_*.jar scala-xml.jar
|
||||
java-pkg_newjar jline-*.jar jline.jar
|
||||
java-pkg_newjar scala-continuations-plugin_*.jar scala-continuations-plugin.jar
|
||||
java-pkg_newjar scalap-*.jar scalap.jar
|
||||
|
||||
# Install these the usual way
|
||||
java-pkg_dojar scala-compiler.jar
|
||||
java-pkg_dojar scala-library.jar
|
||||
java-pkg_dojar scala-reflect.jar
|
||||
|
||||
eend $?
|
||||
|
||||
cd ../ || die
|
||||
|
||||
ebegin 'Installing man pages'
|
||||
doman man/man1/*.1
|
||||
eend $?
|
||||
|
||||
if use doc; then
|
||||
ebegin 'Installing documentation'
|
||||
java-pkg_dohtml -r doc/tools
|
||||
eend $?
|
||||
fi
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="5"
|
||||
|
||||
inherit flag-o-matic eutils libtool multilib-minimal
|
||||
|
||||
MY_PV=${PV/_p*}
|
||||
MY_PV=${MY_PV/_/-}
|
||||
MY_P=${PN}-${MY_PV}
|
||||
PLEVEL=${PV/*p}
|
||||
DESCRIPTION="Library for arithmetic on arbitrary precision integers, rational numbers, and floating-point numbers"
|
||||
HOMEPAGE="http://gmplib.org/"
|
||||
SRC_URI="ftp://ftp.gmplib.org/pub/${MY_P}/${MY_P}.tar.xz
|
||||
mirror://gnu/${PN}/${MY_P}.tar.xz
|
||||
doc? ( http://gmplib.org/${PN}-man-${MY_PV}.pdf )"
|
||||
|
||||
LICENSE="|| ( LGPL-3+ GPL-2+ )"
|
||||
# The subslot reflects the C & C++ SONAMEs.
|
||||
SLOT="0/10.4"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
|
||||
IUSE="+asm doc cxx pgo static-libs"
|
||||
|
||||
DEPEND="sys-devel/m4
|
||||
app-arch/xz-utils"
|
||||
RDEPEND=""
|
||||
|
||||
S=${WORKDIR}/${MY_P%a}
|
||||
|
||||
DOCS=( AUTHORS ChangeLog NEWS README doc/configuration doc/isa_abi_headache )
|
||||
HTML_DOCS=( doc )
|
||||
MULTILIB_WRAPPED_HEADERS=( /usr/include/gmp.h )
|
||||
|
||||
src_prepare() {
|
||||
[[ -d ${FILESDIR}/${PV} ]] && EPATCH_SUFFIX="diff" EPATCH_FORCE="yes" epatch "${FILESDIR}"/${PV}
|
||||
|
||||
# note: we cannot run autotools here as gcc depends on this package
|
||||
elibtoolize
|
||||
|
||||
epatch "${FILESDIR}"/${PN}-6.1.0-noexecstack-detect.patch
|
||||
|
||||
# GMP uses the "ABI" env var during configure as does Gentoo (econf).
|
||||
# So, to avoid patching the source constantly, wrap things up.
|
||||
mv configure configure.wrapped || die
|
||||
cat <<-\EOF > configure
|
||||
#!/bin/sh
|
||||
exec env ABI="${GMPABI}" "$0.wrapped" "$@"
|
||||
EOF
|
||||
# Patches to original configure might have lost the +x bit.
|
||||
chmod a+rx configure{,.wrapped}
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
# Because of our 32-bit userland, 1.0 is the only HPPA ABI that works
|
||||
# http://gmplib.org/manual/ABI-and-ISA.html#ABI-and-ISA (bug #344613)
|
||||
if [[ ${CHOST} == hppa2.0-* ]] ; then
|
||||
GMPABI="1.0"
|
||||
fi
|
||||
|
||||
# ABI mappings (needs all architectures supported)
|
||||
case ${ABI} in
|
||||
32|x86) GMPABI=32;;
|
||||
64|amd64|n64) GMPABI=64;;
|
||||
[onx]32) GMPABI=${ABI};;
|
||||
esac
|
||||
export GMPABI
|
||||
|
||||
tc-export CC
|
||||
ECONF_SOURCE="${S}" econf \
|
||||
--localstatedir="${EPREFIX}"/var/state/gmp \
|
||||
--enable-shared \
|
||||
$(use_enable asm assembly) \
|
||||
$(use_enable cxx) \
|
||||
$(use_enable static-libs static)
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake
|
||||
|
||||
if use pgo ; then
|
||||
emake -j1 -C tune tuneup
|
||||
ebegin "Trying to generate tuned data"
|
||||
./tune/tuneup | tee gmp.mparam.h.new
|
||||
if eend $(( 0 + ${PIPESTATUS[*]/#/+} )) ; then
|
||||
mv gmp.mparam.h.new gmp-mparam.h || die
|
||||
emake clean
|
||||
emake
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
emake check
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake DESTDIR="${D}" install
|
||||
|
||||
# should be a standalone lib
|
||||
rm -f "${D}"/usr/$(get_libdir)/libgmp.la
|
||||
# this requires libgmp
|
||||
local la="${D}/usr/$(get_libdir)/libgmpxx.la"
|
||||
use static-libs \
|
||||
&& sed -i 's:/[^ ]*/libgmp.la:-lgmp:' "${la}" \
|
||||
|| rm -f "${la}"
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
einstalldocs
|
||||
use doc && cp "${DISTDIR}"/gmp-man-${MY_PV}.pdf "${D}"/usr/share/doc/${PF}/
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
DIST icu4c-55_1-src.tgz 25600847 SHA256 e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b SHA512 21a3eb2c3678cd27b659eed073f8f1bd99c9751291d077820e9a370fd90b7d9b3bf414cc03dec4acb7fa61087e02d04f9f40e91a32c5180c718e2102fbd0cd35 WHIRLPOOL 8c5221c82ee2c8a02beafd0fdf91e0038e49912cc8b05fb7437dd4d0a0204b97ea62c45c2dd9dde0f658620b772d706e795821865c567d2e1eb91f8b83a12c4a
|
||||
DIST icu4c-57_1-src.tgz 22360664 SHA256 ff8c67cb65949b1e7808f2359f2b80f722697048e90e7cfc382ec1fe229e9581 SHA512 a3c701e9c81622db545bcf93f315c7b13159750f43f009d0aec59ceae3a8e1ccb751826d4b8a7387aca47f38bff2a85816b1a123b07d2bf731558c7b66e47b8a WHIRLPOOL f9107e3019a0d9b4c40b83e6e7ea5277ab7d4317e349d6c5d6731f0b2355811b37a4c12aa8408a3bc0195ffeebdc952b7df709d2fb191ae1044fffadbafc897c
|
||||
DIST icu4c-58_1-src.tgz 23366443 SHA256 0eb46ba3746a9c2092c8ad347a29b1a1b4941144772d13a88667a7b11ea30309 SHA512 59b2a76834192a35125fda326587e613ef4486152cf0278c6f22568d4ae02c4b2d897efcea2654ef2b11bd1c3154aecd38cb68a70f69430736f343689f94c155 WHIRLPOOL faf2624a83f0d6f874166b328522dc9c89088db2690433ab05e96371722b635b81fd5210c7e87fe8e5df6681e881cf10204832925b448552affe8c2f6c851e37
|
||||
DIST icu4c-58_2-src.tgz 23369902 SHA256 2b0a4410153a9b20de0e20c7d8b66049a72aef244b53683d0d7521371683da0c SHA512 5c21af748f48b392e6c0412bd0aee92162ea931820dcbfab4ec6e0299868504b303d88f7586cc95de55c777ac0dca3a29d6c8ca0892c646ebc864c8a5b5a162a WHIRLPOOL 25829f8ee870b703fd604ae5b9b584390a142f5011e2a5db18332453e2f1640d81270086f243318eeb93f187b04ea23dab14901ab81c8d924c8d47b1f77aee5a
|
||||
|
@ -0,0 +1,142 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit eutils flag-o-matic toolchain-funcs autotools multilib-minimal
|
||||
|
||||
DESCRIPTION="International Components for Unicode"
|
||||
HOMEPAGE="http://www.icu-project.org/"
|
||||
SRC_URI="http://download.icu-project.org/files/icu4c/${PV/_/}/icu4c-${PV//./_}-src.tgz"
|
||||
|
||||
LICENSE="BSD"
|
||||
|
||||
SLOT="0/${PV}"
|
||||
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
|
||||
IUSE="debug doc examples static-libs"
|
||||
|
||||
DEPEND="
|
||||
virtual/pkgconfig
|
||||
doc? (
|
||||
app-doc/doxygen[dot]
|
||||
)
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${PN}/source"
|
||||
|
||||
MULTILIB_CHOST_TOOLS=(
|
||||
/usr/bin/icu-config
|
||||
)
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-58.1-remove-bashisms.patch"
|
||||
"${FILESDIR}/${PN}-58.1-iterator.patch"
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
# apply patches
|
||||
default
|
||||
|
||||
local variable
|
||||
|
||||
# Disable renaming as it is stupid thing to do
|
||||
sed -i \
|
||||
-e "s/#define U_DISABLE_RENAMING 0/#define U_DISABLE_RENAMING 1/" \
|
||||
common/unicode/uconfig.h || die
|
||||
|
||||
# Fix linking of icudata
|
||||
sed -i \
|
||||
-e "s:LDFLAGSICUDT=-nodefaultlibs -nostdlib:LDFLAGSICUDT=:" \
|
||||
config/mh-linux || die
|
||||
|
||||
# Append doxygen configuration to configure
|
||||
sed -i \
|
||||
-e 's:icudefs.mk:icudefs.mk Doxyfile:' \
|
||||
configure.ac || die
|
||||
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Use C++14
|
||||
append-cxxflags -std=c++14
|
||||
|
||||
if tc-is-cross-compiler; then
|
||||
mkdir "${WORKDIR}"/host || die
|
||||
pushd "${WORKDIR}"/host >/dev/null || die
|
||||
|
||||
CFLAGS="" CXXFLAGS="" ASFLAGS="" LDFLAGS="" \
|
||||
CC="$(tc-getBUILD_CC)" CXX="$(tc-getBUILD_CXX)" AR="$(tc-getBUILD_AR)" \
|
||||
RANLIB="$(tc-getBUILD_RANLIB)" LD="$(tc-getBUILD_LD)" \
|
||||
"${S}"/configure --disable-renaming --disable-debug \
|
||||
--disable-samples --enable-static || die
|
||||
emake
|
||||
|
||||
popd >/dev/null || die
|
||||
fi
|
||||
|
||||
multilib-minimal_src_configure
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myeconfargs=(
|
||||
--disable-renaming
|
||||
--disable-samples
|
||||
--disable-layoutex
|
||||
$(use_enable debug)
|
||||
$(use_enable static-libs static)
|
||||
)
|
||||
|
||||
multilib_is_native_abi && myeconfargs+=(
|
||||
$(use_enable examples samples)
|
||||
)
|
||||
tc-is-cross-compiler && myeconfargs+=(
|
||||
--with-cross-build="${WORKDIR}"/host
|
||||
)
|
||||
|
||||
# icu tries to use clang by default
|
||||
tc-export CC CXX
|
||||
|
||||
ECONF_SOURCE=${S} \
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
default
|
||||
|
||||
if multilib_is_native_abi && use doc; then
|
||||
doxygen -u Doxyfile || die
|
||||
doxygen Doxyfile || die
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
# INTLTEST_OPTS: intltest options
|
||||
# -e: Exhaustive testing
|
||||
# -l: Reporting of memory leaks
|
||||
# -v: Increased verbosity
|
||||
# IOTEST_OPTS: iotest options
|
||||
# -e: Exhaustive testing
|
||||
# -v: Increased verbosity
|
||||
# CINTLTST_OPTS: cintltst options
|
||||
# -e: Exhaustive testing
|
||||
# -v: Increased verbosity
|
||||
emake -j1 VERBOSE="1" check
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
default
|
||||
|
||||
if multilib_is_native_abi && use doc; then
|
||||
docinto html
|
||||
dodoc -r doc/html/*
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
einstalldocs
|
||||
docinto html
|
||||
dodoc ../readme.html
|
||||
}
|
@ -1 +1,2 @@
|
||||
DIST tut-2013.12.18.tar.gz 248575 SHA256 750c06fa4f681c9ca3b504f7916925e7620db4237675a4769814f8426c021fc8 SHA512 daf232df8d27a5600209ee44dc72f83b9574b68c14cf9566aa826091767e2fc3c00a9e03e83386f46d7f2030bb6d6af5db6af326424a4c0bc41063e227ab8004 WHIRLPOOL 8487b0c35b9ae5c1b181930f687ec5be822b501e3eacbe120b7b0b08c1ae3bf1e5dd102b86806ea4d3fb4479bd8619aab23b4025777e9adc3c445aae0cbdab97
|
||||
DIST tut-2016.12.19.tar.gz 261753 SHA256 eff44452fa23bf58f4ff933ce47a10c597bd8a38640f88b1733d411640bca4c3 SHA512 296846dcaf9ed357232f69ce21927eea6a79173b66c5f16d41d7cbdb4dd5a18cc8b15217af56ef7a0a5fca0e55d148431bd872d4b815c239d21e5e4dfb4f312d WHIRLPOOL ab2e3e5a3534c48fd420cae2dc6955a729f8cb18e5cbc7080fb0e7576ce628fb129a15805b0d49a49082cf18212774cb896cdeed87c966cef7c7763bd9e37202
|
||||
|
@ -0,0 +1,25 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=6
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
PYTHON_REQ_USE='threads(+)'
|
||||
NO_WAF_LIBDIR=yes
|
||||
|
||||
inherit python-any-r1 waf-utils
|
||||
|
||||
DESCRIPTION="C++ Template Unit Test Framework"
|
||||
HOMEPAGE="http://mrzechonek.github.io/tut-framework/"
|
||||
SRC_URI="https://github.com/mrzechonek/tut-framework/archive/${PV//./-}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND=${PYTHON_DEPS}
|
||||
RDEPEND=""
|
||||
|
||||
S="${WORKDIR}/tut-framework-${PV//./-}"
|
@ -0,0 +1,93 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
inherit eutils multilib
|
||||
|
||||
# test phase only works if ecls already installed #516876
|
||||
RESTRICT="test"
|
||||
|
||||
MY_P=ecl-${PV}
|
||||
|
||||
DESCRIPTION="ECL is an embeddable Common Lisp implementation"
|
||||
HOMEPAGE="https://common-lisp.net/project/ecl/"
|
||||
SRC_URI="https://common-lisp.net/project/ecl/static/files/release/${MY_P}.tgz"
|
||||
|
||||
LICENSE="BSD LGPL-2"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64 ~ppc ~sparc ~x86"
|
||||
IUSE="cxx debug emacs gengc precisegc cpu_flags_x86_sse +threads +unicode +libatomic X"
|
||||
|
||||
CDEPEND="dev-libs/gmp:0
|
||||
virtual/libffi
|
||||
libatomic? ( dev-libs/libatomic_ops )
|
||||
>=dev-libs/boehm-gc-7.1[threads?]
|
||||
>=dev-lisp/asdf-2.33-r3:="
|
||||
DEPEND="${CDEPEND}
|
||||
app-text/texi2html
|
||||
emacs? ( virtual/emacs >=app-eselect/eselect-emacs-1.12 )"
|
||||
RDEPEND="${CDEPEND}"
|
||||
|
||||
S="${WORKDIR}"/${MY_P}
|
||||
|
||||
pkg_setup () {
|
||||
if use gengc || use precisegc ; then
|
||||
ewarn "You have enabled the generational garbage collector or"
|
||||
ewarn "the precise collection routines. These features are not very stable"
|
||||
ewarn "at the moment and may cause crashes."
|
||||
ewarn "Don't enable them unless you know what you're doing."
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}"/${PV}-headers-gentoo.patch
|
||||
epatch "${FILESDIR}"/${PV}-build.patch
|
||||
cp "${EPREFIX}"/usr/share/common-lisp/source/asdf/build/asdf.lisp contrib/asdf/ || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
econf \
|
||||
--with-system-gmp \
|
||||
--enable-boehm=system \
|
||||
--enable-longdouble=yes \
|
||||
--with-dffi \
|
||||
$(use_with cxx) \
|
||||
$(use_enable gengc) \
|
||||
$(use_enable precisegc) \
|
||||
$(use_with debug debug-cflags) \
|
||||
$(use_enable libatomic libatomic system) \
|
||||
$(use_with cpu_flags_x86_sse sse) \
|
||||
$(use_enable threads) \
|
||||
$(use_with threads __thread) \
|
||||
$(use_enable unicode) \
|
||||
$(use_with unicode unicode-names) \
|
||||
$(use_with X x) \
|
||||
$(use_with X clx)
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use emacs; then
|
||||
local ETAGS=$(eselect --brief etags list | sed -ne '/emacs/{p;q}')
|
||||
[[ -n ${ETAGS} ]] || die "No etags implementation found"
|
||||
pushd build > /dev/null || die
|
||||
emake ETAGS=${ETAGS} TAGS
|
||||
popd > /dev/null
|
||||
else
|
||||
touch build/TAGS
|
||||
fi
|
||||
|
||||
#parallel make fails
|
||||
emake -j1 || die "Compilation failed"
|
||||
}
|
||||
|
||||
src_install () {
|
||||
emake DESTDIR="${D}" install || die "Installation failed"
|
||||
|
||||
dodoc README.md CHANGELOG
|
||||
dodoc "${FILESDIR}"/README.Gentoo
|
||||
pushd build/doc
|
||||
newman ecl.man ecl.1
|
||||
newman ecl-config.man ecl-config.1
|
||||
popd
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
diff -r -U2 ecl-16.1.3.orig/src/c/printer/write_sse.d ecl-16.1.3/src/c/printer/write_sse.d
|
||||
--- ecl-16.1.3.orig/src/c/printer/write_sse.d 2016-12-19 17:25:00.000000000 +0700
|
||||
+++ ecl-16.1.3/src/c/printer/write_sse.d 2016-12-19 19:20:01.863563607 +0700
|
||||
@@ -13,4 +13,6 @@
|
||||
*/
|
||||
|
||||
+#include <ecl/config.h>
|
||||
+
|
||||
#ifdef ECL_SSE2
|
||||
#include <ecl/ecl.h>
|
@ -0,0 +1,15 @@
|
||||
diff -r -U2 ecl-16.1.3.orig/src/h/object.h ecl-16.1.3/src/h/object.h
|
||||
--- ecl-16.1.3.orig/src/h/object.h 2016-12-19 17:25:00.000000000 +0700
|
||||
+++ ecl-16.1.3/src/h/object.h 2016-12-19 19:22:21.147557750 +0700
|
||||
@@ -26,6 +26,11 @@
|
||||
*/
|
||||
|
||||
+#ifndef TRUE
|
||||
#define TRUE 1 /* boolean true value */
|
||||
+#endif
|
||||
+
|
||||
+#ifndef FALSE
|
||||
#define FALSE 0 /* boolean false value */
|
||||
+#endif
|
||||
|
||||
#if !defined(__cplusplus) && !defined(bool)
|
@ -1,2 +1 @@
|
||||
DIST eliom-5.0.0.tar.gz 728278 SHA256 6726500f9a54478def95875d04098dc8dc829d4a10e06896ff4f037bb1c03cbd SHA512 1c5297e376c3a46935de369b418638a772304246b73756f8bc052301b48d62a37af527274bf1a05064f33b60ff9dcde057a0030f083136fa4e1c0cfa07f01887 WHIRLPOOL ca1186787a8f938cf029f9a5c9904ed0324a3d24d2f0d0834dd1e2b2f995de6d57d1040b4d128de8233255ca385478f0ba3bf597c2f0315ab2f1894118755dca
|
||||
DIST eliom-6.0.0.tar.gz 722673 SHA256 ec5636481be9cccc8256b13a5e551f6a8c32662e1c3211887a22eedf5c8958f9 SHA512 c59261bb6ba2303a7951de2e689abcb55af92b53a145d42054244d253b6757d72ba3f937772219b2b0aa5bccfe1a74baf62c938f40c1cce90720b6efe7be3b63 WHIRLPOOL e4f8c44c16dbc33c7576a117a25cb2f709a893ad82baa517fb2d5a776b0838affbef56aba84a977903c71d32987f3d16af485c5cf8dddd1cc39395025d996226
|
||||
|
@ -1,67 +0,0 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit eutils multilib findlib
|
||||
|
||||
DESCRIPTION="A web framework to program client/server applications"
|
||||
HOMEPAGE="http://ocsigen.org/eliom/"
|
||||
SRC_URI="https://github.com/ocsigen/eliom/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="LGPL-2.1-with-linking-exception"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE="doc +ocamlopt +ppx"
|
||||
|
||||
RDEPEND=">=dev-lang/ocaml-4.03:=[ocamlopt?]
|
||||
>=dev-ml/js_of_ocaml-2.8.2:=
|
||||
>=www-servers/ocsigenserver-2.8:=
|
||||
>=dev-ml/tyxml-4:=
|
||||
>=dev-ml/deriving-0.6:=
|
||||
>=dev-ml/reactiveData-0.2.1:=
|
||||
dev-ml/ocaml-ipaddr:=
|
||||
dev-ml/react:=
|
||||
dev-ml/ocaml-ssl:=
|
||||
>=dev-ml/lwt-2.5.0:=
|
||||
dev-ml/calendar:=
|
||||
dev-ml/camlp4:=
|
||||
ppx? ( >=dev-ml/ppx_tools-0.99.3:= )"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-ml/ocamlbuild
|
||||
dev-ml/opam"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/"{camlp4,oc43,oc43-2}.patch \
|
||||
"${FILESDIR}/tyxml4.patch" \
|
||||
"${FILESDIR}/jsofocaml-282.patch" \
|
||||
"${FILESDIR}/reactivedata.patch" \
|
||||
"${FILESDIR}/ocsigen28.patch"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
if use ocamlopt ; then
|
||||
emake PPX=$(usex ppx true false) all
|
||||
else
|
||||
emake PPX=$(usex ppx true false) byte
|
||||
fi
|
||||
use doc && emake doc
|
||||
emake man
|
||||
}
|
||||
|
||||
src_install() {
|
||||
opam-installer \
|
||||
--prefix="${ED}/usr" \
|
||||
--libdir="${D}/$(ocamlc -where)" \
|
||||
--docdir="${ED}/usr/share/doc/${PF}" \
|
||||
--mandir="${ED}/usr/share/man" \
|
||||
|| die
|
||||
dodoc CHANGES README.md
|
||||
if use doc ; then
|
||||
docinto client/html
|
||||
dodoc -r _build/src/lib/client/api.docdir/*
|
||||
docinto server/html
|
||||
dodoc -r _build/src/lib/server/api.docdir/*
|
||||
fi
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
commit f157a5b913451b85e8cfe7549c66e5c98669233b
|
||||
Author: Vasilis Papavasileiou <git@vasilis.airpost.net>
|
||||
Date: Wed Mar 2 14:23:02 2016 +0100
|
||||
|
||||
Compile against Camlp4 4.02+7
|
||||
|
||||
diff --git a/src/syntax/pa_eliom_seed.ml b/src/syntax/pa_eliom_seed.ml
|
||||
index c101ff8..dc31caa 100644
|
||||
--- a/src/syntax/pa_eliom_seed.ml
|
||||
+++ b/src/syntax/pa_eliom_seed.ml
|
||||
@@ -632,8 +632,26 @@ module Register(Id : sig val name: string end)(Pass : Pass) = struct
|
||||
| None ->
|
||||
Printf.ksprintf (Syntax_error.raise loc) fmt
|
||||
|
||||
- module E2 = Camlp4.ErrorHandler.Register(Syntax_error)
|
||||
- DELETE_RULE Gram expr: "{"; TRY [label_expr_list; "}"] END;
|
||||
+ module E2 = Camlp4.ErrorHandler.Register(Syntax_error) ;;
|
||||
+
|
||||
+ try
|
||||
+ DELETE_RULE Gram expr: "{"; TRY [label_expr_list; "}"] END
|
||||
+ with Camlp4.Struct.Grammar.Delete.Rule_not_found _ ->
|
||||
+ (let test_record_field =
|
||||
+ Gram.Entry.of_parser "record_field" (fun strm ->
|
||||
+ let rec loop = function
|
||||
+ | [] -> ()
|
||||
+ | (UIDENT _, _) :: (KEYWORD ".", _) :: rest -> loop rest
|
||||
+ | (LIDENT _, _) :: (KEYWORD "=", _) :: _ -> ()
|
||||
+ | (LIDENT _, _) :: (KEYWORD ";", _) :: _ -> ()
|
||||
+ | [LIDENT _, _] -> ()
|
||||
+ | _ -> raise Stream.Failure
|
||||
+ in
|
||||
+ loop (Stream.npeek 100 strm))
|
||||
+ in
|
||||
+ DELETE_RULE Gram expr:
|
||||
+ "{"; test_record_field; label_expr_list; "}" END) ;;
|
||||
+
|
||||
DELETE_RULE Gram expr: "{"; TRY [expr LEVEL "."; "with"]; label_expr_list; "}" END;
|
||||
|
||||
(* Extending syntax *)
|
||||
@@ -812,7 +830,7 @@ module Register(Id : sig val name: string end)(Pass : Pass) = struct
|
||||
expr: LEVEL "simple"
|
||||
|
||||
[ [ KEYWORD "{"; lel = TRY [lel = label_expr_list; "}" -> lel] ->
|
||||
- <:expr< { $lel$ } >>
|
||||
+ Ast.ExRec (_loc, lel, Ast.ExNil _loc)
|
||||
| KEYWORD "{shared#";
|
||||
typ = TRY [ typ = OPT ctyp; KEYWORD "{" -> typ];
|
||||
opt_lvl = dummy_set_level_shared_value_expr ;
|
@ -1,361 +0,0 @@
|
||||
Backported from:
|
||||
|
||||
commit 4edaf2275e2f7a027f3c7dc52e1e295a6e56b19a
|
||||
Author: Vasilis Papavasileiou <git@vasilis.airpost.net>
|
||||
Date: Thu Aug 18 19:40:56 2016 +0200
|
||||
|
||||
Fix ocsigen/js_of_ocaml#518
|
||||
|
||||
upstream.
|
||||
|
||||
Index: eliom-5.0.0/src/lib/eliom_client.client.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_client.client.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_client.client.ml
|
||||
@@ -461,23 +461,29 @@ let raw_event_handler value =
|
||||
|
||||
let closure_name_prefix = Eliom_lib_base.RawXML.closure_name_prefix
|
||||
let closure_name_prefix_len = String.length closure_name_prefix
|
||||
-let reify_caml_event name node ce : string * (#Dom_html.event Js.t -> bool) =
|
||||
+let reify_caml_event name node ce =
|
||||
match ce with
|
||||
- | Xml.CE_call_service None -> name,(fun _ -> true)
|
||||
+ | Xml.CE_call_service None -> name, `Other (fun _ -> true)
|
||||
| Xml.CE_call_service (Some (`A, cookies_info, tmpl)) ->
|
||||
- name, (fun ev ->
|
||||
+ name, `Other (fun ev ->
|
||||
let node = Js.Opt.get (Dom_html.CoerceTo.a node)
|
||||
(fun () -> Lwt_log.raise_error ~section "not an anchor element")
|
||||
in
|
||||
raw_a_handler node cookies_info tmpl ev)
|
||||
| Xml.CE_call_service
|
||||
(Some ((`Form_get | `Form_post) as kind, cookies_info, tmpl)) ->
|
||||
- name, (fun ev ->
|
||||
+ name, `Other (fun ev ->
|
||||
let form = Js.Opt.get (Dom_html.CoerceTo.form node)
|
||||
(fun () -> Lwt_log.raise_error ~section "not a form element") in
|
||||
raw_form_handler form kind cookies_info tmpl ev)
|
||||
| Xml.CE_client_closure f ->
|
||||
- name, (fun ev -> try f ev; true with False -> false)
|
||||
+ name, `Other (fun ev -> try f ev; true with False -> false)
|
||||
+ | Xml.CE_client_closure_keyboard f ->
|
||||
+ name,
|
||||
+ `Keyboard (fun ev -> try f ev; true with Eliom_lib.False -> false)
|
||||
+ | Xml.CE_client_closure_mouse f ->
|
||||
+ name,
|
||||
+ `Mouse (fun ev -> try f ev; true with Eliom_lib.False -> false)
|
||||
| Xml.CE_registered_closure (_, cv) ->
|
||||
let name =
|
||||
let len = String.length name in
|
||||
@@ -485,16 +491,27 @@ let reify_caml_event name node ce : stri
|
||||
then String.sub name closure_name_prefix_len
|
||||
(len - closure_name_prefix_len)
|
||||
else name in
|
||||
- name, raw_event_handler cv
|
||||
+ name, `Other (raw_event_handler cv)
|
||||
|
||||
let register_event_handler, flush_load_script =
|
||||
let add, _, flush = create_buffer () in
|
||||
let register node (name, ev) =
|
||||
- let name,f = reify_caml_event name node ev in
|
||||
- if name = "onload"
|
||||
- then add f
|
||||
- else Js.Unsafe.set node (Js.bytestring name)
|
||||
- (Dom_html.handler (fun ev -> Js.bool (f ev)))
|
||||
+ match reify_caml_event name node ev with
|
||||
+ | "onload", `Other f ->
|
||||
+ add f
|
||||
+ | "onload", `Keyboard _ ->
|
||||
+ failwith "keyboard event handler for onload"
|
||||
+ | "onload", `Mouse _ ->
|
||||
+ failwith "keyboard event handler for onload"
|
||||
+ | name, `Other f ->
|
||||
+ Js.Unsafe.set node (Js.bytestring name)
|
||||
+ (Dom_html.handler (fun ev -> Js.bool (f ev)))
|
||||
+ | name, `Keyboard f ->
|
||||
+ Js.Unsafe.set node (Js.bytestring name)
|
||||
+ (Dom_html.handler (fun ev -> Js.bool (f ev)))
|
||||
+ | name, `Mouse f ->
|
||||
+ Js.Unsafe.set node (Js.bytestring name)
|
||||
+ (Dom_html.handler (fun ev -> Js.bool (f ev)))
|
||||
in
|
||||
let flush () =
|
||||
let fs = flush () in
|
||||
Index: eliom-5.0.0/src/lib/eliom_content.server.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_content.server.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_content.server.mli
|
||||
@@ -114,7 +114,7 @@ module Xml : sig
|
||||
example {% <<a_api project="js_of_ocaml" | type
|
||||
Dom_html.mouseEvent>>%} or {% <<a_api project="js_of_ocaml" | type
|
||||
Dom_html.keyboardEvent >>%}. *)
|
||||
- type -'a caml_event_handler constraint 'a = #Dom_html.event
|
||||
+ type caml_event_handler
|
||||
|
||||
(**/**)
|
||||
|
||||
@@ -129,18 +129,14 @@ module Xml : sig
|
||||
val make_event_handler_table : elt -> Eliom_lib.RawXML.event_handler_table
|
||||
val make_client_attrib_table : elt -> Eliom_lib.RawXML.client_attrib_table
|
||||
|
||||
- val caml_event_handler : ((#Dom_html.event as 'a) Js.t -> unit) Eliom_lib.client_value -> 'a caml_event_handler
|
||||
-
|
||||
- class type biggest_event = object
|
||||
- inherit Dom_html.event
|
||||
- inherit Dom_html.mouseEvent
|
||||
- inherit Dom_html.keyboardEvent
|
||||
- end
|
||||
+ val caml_event_handler :
|
||||
+ (Dom_html.event Js.t -> unit) Eliom_lib.client_value ->
|
||||
+ caml_event_handler
|
||||
|
||||
type racontent =
|
||||
| RA of acontent
|
||||
| RAReact of acontent option React.signal
|
||||
- | RACamlEventHandler of biggest_event caml_event_handler
|
||||
+ | RACamlEventHandler of caml_event_handler
|
||||
| RALazyStr of string Eliom_lazy.request
|
||||
| RALazyStrL of separator * string Eliom_lazy.request list
|
||||
| RAClient of string * attrib option * Eliom_lib.poly
|
||||
Index: eliom-5.0.0/src/lib/eliom_content_core.client.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_content_core.client.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_content_core.client.ml
|
||||
@@ -87,21 +87,19 @@ module Xml = struct
|
||||
let node ?(a = []) name children = make (Node (name, a, children))
|
||||
let lazy_node ?a name children = node ?a name (Eliom_lazy.force children)
|
||||
|
||||
- type biggest_event_handler = biggest_event Js.t -> unit
|
||||
-
|
||||
type event_handler = Dom_html.event Js.t -> unit
|
||||
type mouse_event_handler = Dom_html.mouseEvent Js.t -> unit
|
||||
type keyboard_event_handler = Dom_html.keyboardEvent Js.t -> unit
|
||||
|
||||
let event_handler_attrib name (value : event_handler) =
|
||||
internal_event_handler_attrib name
|
||||
- (Caml (CE_client_closure (value :> biggest_event_handler)))
|
||||
+ (Caml (CE_client_closure value))
|
||||
let mouse_event_handler_attrib name (value : mouse_event_handler) =
|
||||
internal_event_handler_attrib name
|
||||
- (Caml (CE_client_closure (value :> biggest_event_handler)))
|
||||
+ (Caml (CE_client_closure_mouse value))
|
||||
let keyboard_event_handler_attrib name (value : keyboard_event_handler) =
|
||||
internal_event_handler_attrib name
|
||||
- (Caml (CE_client_closure (value :> biggest_event_handler)))
|
||||
+ (Caml (CE_client_closure_keyboard value))
|
||||
|
||||
let node_react_children ?(a = []) name children =
|
||||
{elt = Lazy.from_val (ReactChildren (Node (name,a,[]),children)); node_id=NoId}
|
||||
Index: eliom-5.0.0/src/lib/eliom_content_core.client.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_content_core.client.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_content_core.client.mli
|
||||
@@ -35,24 +35,21 @@ module Xml : sig
|
||||
type aname = string
|
||||
type attrib
|
||||
|
||||
- type -'a caml_event_handler =
|
||||
+ type caml_event_handler =
|
||||
| CE_registered_closure of string * Eliom_lib.poly
|
||||
(* 'a Js.t -> unit) client_value_server *)
|
||||
- | CE_client_closure of ((#Dom_html.event as 'a) Js.t -> unit)
|
||||
+ | CE_client_closure of
|
||||
+ (Dom_html.event Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_mouse of
|
||||
+ (Dom_html.mouseEvent Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_keyboard of
|
||||
+ (Dom_html.keyboardEvent Js.t -> unit) (* Client side-only *)
|
||||
| CE_call_service of
|
||||
([ `A | `Form_get | `Form_post] * (bool * string list) option * string option) option Eliom_lazy.request
|
||||
|
||||
- (* Inherit from all events.
|
||||
- Necessary for subtyping since caml_event_handler is contravariant. *)
|
||||
- class type biggest_event = object
|
||||
- inherit Dom_html.event
|
||||
- inherit Dom_html.mouseEvent
|
||||
- inherit Dom_html.keyboardEvent
|
||||
- end
|
||||
-
|
||||
type internal_event_handler =
|
||||
| Raw of string
|
||||
- | Caml of biggest_event caml_event_handler
|
||||
+ | Caml of caml_event_handler
|
||||
type event_handler = Dom_html.event Js.t -> unit
|
||||
type mouse_event_handler = Dom_html.mouseEvent Js.t -> unit
|
||||
type keyboard_event_handler = Dom_html.keyboardEvent Js.t -> unit
|
||||
@@ -89,7 +86,7 @@ module Xml : sig
|
||||
type racontent =
|
||||
| RA of acontent
|
||||
| RAReact of acontent option React.signal
|
||||
- | RACamlEventHandler of biggest_event caml_event_handler
|
||||
+ | RACamlEventHandler of caml_event_handler
|
||||
| RALazyStr of string Eliom_lazy.request
|
||||
| RALazyStrL of separator * string Eliom_lazy.request list
|
||||
| RAClient of string * attrib option * Eliom_lib.poly
|
||||
Index: eliom-5.0.0/src/lib/eliom_content_core.server.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_content_core.server.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_content_core.server.ml
|
||||
@@ -114,7 +114,6 @@ module Xml = struct
|
||||
let lazy_node ?(a = []) name children =
|
||||
make_lazy (Eliom_lazy.from_fun (fun () -> (Node (name, a, Eliom_lazy.force children))))
|
||||
|
||||
- type biggest_event_handler = (biggest_event Js.t -> unit) Eliom_lib.client_value
|
||||
type event_handler = (Dom_html.event Js.t -> unit) Eliom_lib.client_value
|
||||
type mouse_event_handler = (Dom_html.mouseEvent Js.t -> unit) Eliom_lib.client_value
|
||||
type keyboard_event_handler = (Dom_html.keyboardEvent Js.t -> unit) Eliom_lib.client_value
|
||||
@@ -133,11 +132,11 @@ module Xml = struct
|
||||
let biggest_event_handler_attrib name cf =
|
||||
internal_event_handler_attrib name (event_handler cf)
|
||||
let event_handler_attrib name (cf : event_handler) =
|
||||
- biggest_event_handler_attrib name (cf :> biggest_event_handler)
|
||||
+ biggest_event_handler_attrib name cf
|
||||
let mouse_event_handler_attrib name (cf : mouse_event_handler) =
|
||||
- biggest_event_handler_attrib name (cf :> biggest_event_handler)
|
||||
+ biggest_event_handler_attrib name cf
|
||||
let keyboard_event_handler_attrib name (cf : keyboard_event_handler) =
|
||||
- biggest_event_handler_attrib name (cf :> biggest_event_handler)
|
||||
+ biggest_event_handler_attrib name cf
|
||||
|
||||
let client_attrib ?init (x : attrib Eliom_lib.client_value) =
|
||||
let crypto = make_cryptographic_safe_string () in
|
||||
Index: eliom-5.0.0/src/lib/eliom_content_core.server.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_content_core.server.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_content_core.server.mli
|
||||
@@ -28,7 +28,7 @@ module Xml : sig
|
||||
and type mouse_event_handler = (Dom_html.mouseEvent Js.t -> unit) Eliom_lib.client_value
|
||||
and type keyboard_event_handler = (Dom_html.keyboardEvent Js.t -> unit) Eliom_lib.client_value
|
||||
|
||||
- type -'a caml_event_handler constraint 'a = #Dom_html.event
|
||||
+ type caml_event_handler
|
||||
|
||||
(**/**)
|
||||
|
||||
@@ -43,15 +43,9 @@ module Xml : sig
|
||||
val make_event_handler_table : elt -> Eliom_lib.RawXML.event_handler_table
|
||||
val make_client_attrib_table : elt -> Eliom_lib.RawXML.client_attrib_table
|
||||
|
||||
- class type biggest_event = object
|
||||
- inherit Dom_html.event
|
||||
- inherit Dom_html.mouseEvent
|
||||
- inherit Dom_html.keyboardEvent
|
||||
- end
|
||||
-
|
||||
type internal_event_handler =
|
||||
| Raw of string
|
||||
- | Caml of biggest_event caml_event_handler
|
||||
+ | Caml of caml_event_handler
|
||||
|
||||
val internal_event_handler_attrib : aname -> internal_event_handler -> attrib
|
||||
val internal_event_handler_of_service :
|
||||
@@ -59,12 +53,14 @@ module Xml : sig
|
||||
* (bool * string list) option
|
||||
* string option) option Eliom_lazy.request -> internal_event_handler
|
||||
|
||||
- val caml_event_handler : ((#Dom_html.event as 'a) Js.t -> unit) Eliom_lib.client_value -> 'a caml_event_handler
|
||||
+ val caml_event_handler :
|
||||
+ (Dom_html.event Js.t -> unit) Eliom_lib.client_value ->
|
||||
+ caml_event_handler
|
||||
|
||||
type racontent =
|
||||
| RA of acontent
|
||||
| RAReact of acontent option React.signal
|
||||
- | RACamlEventHandler of biggest_event caml_event_handler
|
||||
+ | RACamlEventHandler of caml_event_handler
|
||||
| RALazyStr of string Eliom_lazy.request
|
||||
| RALazyStrL of separator * string Eliom_lazy.request list
|
||||
| RAClient of string * attrib option * Eliom_lib.poly
|
||||
Index: eliom-5.0.0/src/lib/eliom_lib_base.shared.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_lib_base.shared.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_lib_base.shared.ml
|
||||
@@ -70,26 +70,22 @@ module RawXML = struct
|
||||
|
||||
type cookie_info = (bool * string list) deriving (Json)
|
||||
|
||||
- type -'a caml_event_handler =
|
||||
+ type caml_event_handler =
|
||||
| CE_registered_closure of
|
||||
string * poly (* 'a Js.t -> unit) client_value *)
|
||||
| CE_client_closure of
|
||||
- ((#Dom_html.event as 'a) Js.t -> unit) (* Client side-only *)
|
||||
+ (Dom_html.event Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_mouse of
|
||||
+ (Dom_html.mouseEvent Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_keyboard of
|
||||
+ (Dom_html.keyboardEvent Js.t -> unit) (* Client side-only *)
|
||||
| CE_call_service of
|
||||
([ `A | `Form_get | `Form_post] * (cookie_info option) * string option)
|
||||
option Eliom_lazy.request
|
||||
|
||||
- (* Inherit from all events.
|
||||
- Necessary for subtyping since caml_event_handler is contravariant. *)
|
||||
- class type biggest_event = object
|
||||
- inherit Dom_html.event
|
||||
- inherit Dom_html.mouseEvent
|
||||
- inherit Dom_html.keyboardEvent
|
||||
- end
|
||||
-
|
||||
type internal_event_handler =
|
||||
| Raw of string
|
||||
- | Caml of biggest_event caml_event_handler
|
||||
+ | Caml of caml_event_handler
|
||||
|
||||
type uri = string Eliom_lazy.request
|
||||
let string_of_uri = Eliom_lazy.force
|
||||
@@ -128,7 +124,7 @@ module RawXML = struct
|
||||
type racontent =
|
||||
| RA of acontent
|
||||
| RAReact of acontent option React.signal
|
||||
- | RACamlEventHandler of biggest_event caml_event_handler
|
||||
+ | RACamlEventHandler of caml_event_handler
|
||||
| RALazyStr of string Eliom_lazy.request
|
||||
| RALazyStrL of separator * string Eliom_lazy.request list
|
||||
| RAClient of string * attrib option * poly (*attrib client_value *)
|
||||
Index: eliom-5.0.0/src/lib/eliom_lib_base.shared.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_lib_base.shared.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_lib_base.shared.mli
|
||||
@@ -73,24 +73,21 @@ module RawXML : sig
|
||||
|
||||
type cookie_info = (bool * string list) deriving (Json)
|
||||
|
||||
- type -'a caml_event_handler =
|
||||
+ type caml_event_handler =
|
||||
| CE_registered_closure of
|
||||
string * poly (* 'a Js.t -> unit) client_value *)
|
||||
- | CE_client_closure of ((#Dom_html.event as 'a) Js.t -> unit)
|
||||
+ | CE_client_closure of
|
||||
+ (Dom_html.event Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_mouse of
|
||||
+ (Dom_html.mouseEvent Js.t -> unit) (* Client side-only *)
|
||||
+ | CE_client_closure_keyboard of
|
||||
+ (Dom_html.keyboardEvent Js.t -> unit) (* Client side-only *)
|
||||
| CE_call_service of
|
||||
([ `A | `Form_get | `Form_post] * (cookie_info option) * string option) option Eliom_lazy.request
|
||||
|
||||
- (* Inherit from all events.
|
||||
- Necessary for subtyping since caml_event_handler is contravariant. *)
|
||||
- class type biggest_event = object
|
||||
- inherit Dom_html.event
|
||||
- inherit Dom_html.mouseEvent
|
||||
- inherit Dom_html.keyboardEvent
|
||||
- end
|
||||
-
|
||||
type internal_event_handler =
|
||||
| Raw of string
|
||||
- | Caml of biggest_event caml_event_handler
|
||||
+ | Caml of caml_event_handler
|
||||
|
||||
type uri = string Eliom_lazy.request
|
||||
val string_of_uri : uri -> string
|
||||
@@ -127,7 +124,7 @@ module RawXML : sig
|
||||
type racontent =
|
||||
| RA of acontent
|
||||
| RAReact of acontent option React.signal
|
||||
- | RACamlEventHandler of biggest_event caml_event_handler
|
||||
+ | RACamlEventHandler of caml_event_handler
|
||||
| RALazyStr of string Eliom_lazy.request
|
||||
| RALazyStrL of separator * string Eliom_lazy.request list
|
||||
| RAClient of string * attrib option * poly (* attrib client_value *)
|
@ -1,136 +0,0 @@
|
||||
commit 27c69ac5dfbc26744e304232bb8c0cf22d396082
|
||||
Author: Vasilis Papavasileiou <git@vasilis.airpost.net>
|
||||
Date: Thu May 5 11:14:02 2016 -0400
|
||||
|
||||
Fix PPX for 4.03 (empty let bindings)
|
||||
|
||||
diff --git a/src/ppx/ppx_eliom_client.ml b/src/ppx/ppx_eliom_client.ml
|
||||
index 580d2b5..fb2d263 100644
|
||||
--- a/src/ppx/ppx_eliom_client.ml
|
||||
+++ b/src/ppx/ppx_eliom_client.ml
|
||||
@@ -89,21 +89,25 @@ module Pass = struct
|
||||
]
|
||||
|
||||
let define_client_functions ~loc client_value_datas =
|
||||
- let bindings =
|
||||
- List.map
|
||||
- (fun (_num, id, expr, args) ->
|
||||
- let patt = Pat.var id in
|
||||
- let typ = find_fragment id in
|
||||
- let args = List.map Pat.var args in
|
||||
- let expr =
|
||||
- [%expr
|
||||
- fun [%p pat_args args] -> ([%e expr] : [%t typ])
|
||||
- ] [@metaloc loc]
|
||||
- in
|
||||
- Vb.mk ~loc patt expr)
|
||||
- client_value_datas
|
||||
- in
|
||||
- Str.value ~loc Nonrecursive bindings
|
||||
+ match client_value_datas with
|
||||
+ | [] ->
|
||||
+ []
|
||||
+ | _ ->
|
||||
+ let bindings =
|
||||
+ List.map
|
||||
+ (fun (_num, id, expr, args) ->
|
||||
+ let patt = Pat.var id in
|
||||
+ let typ = find_fragment id in
|
||||
+ let args = List.map Pat.var args in
|
||||
+ let expr =
|
||||
+ [%expr
|
||||
+ fun [%p pat_args args] -> ([%e expr] : [%t typ])
|
||||
+ ] [@metaloc loc]
|
||||
+ in
|
||||
+ Vb.mk ~loc patt expr)
|
||||
+ client_value_datas
|
||||
+ in
|
||||
+ [Str.value ~loc Nonrecursive bindings]
|
||||
|
||||
(* For injections *)
|
||||
|
||||
@@ -139,8 +143,8 @@ module Pass = struct
|
||||
let client_expr_data = flush_client_value_datas () in
|
||||
open_client_section loc ::
|
||||
register_client_closures client_expr_data @
|
||||
- [ define_client_functions loc client_expr_data ;
|
||||
- item ;
|
||||
+ define_client_functions loc client_expr_data @
|
||||
+ [ item ;
|
||||
close_server_section loc ;
|
||||
]
|
||||
|
||||
@@ -155,11 +159,13 @@ module Pass = struct
|
||||
push_client_value_data num id expr
|
||||
(List.map fst escaped_bindings);
|
||||
|
||||
- match context with
|
||||
- | `Server ->
|
||||
+ match context, escaped_bindings with
|
||||
+ | `Server, _ ->
|
||||
(* We are in a server fragment, this code should always be discarded. *)
|
||||
Exp.extension @@ AM.extension_of_error @@ Location.errorf "Eliom: ICE"
|
||||
- | `Shared ->
|
||||
+ | `Shared, [] ->
|
||||
+ [%expr [%e frag_eid] ()][@metaloc loc]
|
||||
+ | `Shared, _ ->
|
||||
let bindings =
|
||||
List.map
|
||||
(fun (gen_id, expr) ->
|
||||
diff --git a/src/ppx/ppx_eliom_server.ml b/src/ppx/ppx_eliom_server.ml
|
||||
index 97f0b53..b5238ad 100644
|
||||
--- a/src/ppx/ppx_eliom_server.ml
|
||||
+++ b/src/ppx/ppx_eliom_server.ml
|
||||
@@ -85,6 +85,7 @@ module Pass = struct
|
||||
let $gen_id$ = $orig_expr$ and ...
|
||||
(Necessary for injections in shared section) *)
|
||||
let bind_injected_idents injections =
|
||||
+ assert (injections <> []);
|
||||
let bindings =
|
||||
List.map
|
||||
(fun (txt, expr,_) ->
|
||||
@@ -134,10 +135,15 @@ module Pass = struct
|
||||
|
||||
let client_str item =
|
||||
let all_injections = flush_injections () in
|
||||
- let loc = item.pstr_loc in
|
||||
- [ bind_injected_idents all_injections;
|
||||
+ let ccs =
|
||||
+ let loc = item.pstr_loc in
|
||||
close_client_section loc all_injections
|
||||
- ]
|
||||
+ in
|
||||
+ match all_injections with
|
||||
+ | [] ->
|
||||
+ [ ccs ]
|
||||
+ | l ->
|
||||
+ [ bind_injected_idents l ; ccs ]
|
||||
|
||||
let server_str item = [
|
||||
item ;
|
||||
@@ -146,12 +152,19 @@ module Pass = struct
|
||||
|
||||
let shared_str item =
|
||||
let all_injections = flush_injections () in
|
||||
- let loc = item.pstr_loc in
|
||||
- [ bind_injected_idents all_injections ;
|
||||
- item ;
|
||||
- close_server_section loc ;
|
||||
- close_client_section loc all_injections ;
|
||||
- ]
|
||||
+ let cl =
|
||||
+ let loc = item.pstr_loc in
|
||||
+ [
|
||||
+ item;
|
||||
+ close_server_section loc ;
|
||||
+ close_client_section loc all_injections ;
|
||||
+ ]
|
||||
+ in
|
||||
+ match all_injections with
|
||||
+ | [] ->
|
||||
+ cl
|
||||
+ | l ->
|
||||
+ bind_injected_idents l :: cl
|
||||
|
||||
let fragment ?typ ~context:_ ~num ~id expr =
|
||||
let typ =
|
@ -1,37 +0,0 @@
|
||||
Index: eliom-5.0.0/src/lib/eliom_lib.client.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_lib.client.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_lib.client.mli
|
||||
@@ -43,7 +43,6 @@ type 'a shared_value = 'a
|
||||
|
||||
val create_shared_value : 'a -> 'a client_value -> 'a shared_value
|
||||
|
||||
-exception Eliom_Internal_Error of string
|
||||
|
||||
(** This exception is raised (in Lwt) on the client if a call to a
|
||||
server function {% <<a_api subproject="server"|val
|
||||
Index: eliom-5.0.0/src/lib/eliom_lib.server.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_lib.server.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_lib.server.mli
|
||||
@@ -50,7 +50,6 @@ type +'a shared_value
|
||||
*)
|
||||
exception Client_value_creation_invalid_context of string
|
||||
|
||||
-exception Eliom_Internal_Error of string
|
||||
|
||||
type file_info = Ocsigen_extensions.file_info
|
||||
|
||||
Index: eliom-5.0.0/src/syntax/pa_include.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/syntax/pa_include.ml
|
||||
+++ eliom-5.0.0/src/syntax/pa_include.ml
|
||||
@@ -27,7 +27,7 @@ module Make(Syntax : Camlp4.Sig.Camlp4Sy
|
||||
class subst_type env = object (self)
|
||||
inherit Ast.map as super
|
||||
method sig_item si = match si with
|
||||
- | Ast.SgTyp (_loc, (Ast.TyDcl (_, lid, _, Ast.TyNil _, _)))
|
||||
+ | Ast.SgTyp (_loc, rf, (Ast.TyDcl (_, lid, _, Ast.TyNil _, _)))
|
||||
when List.mem_assoc lid env -> <:sig_item< >>
|
||||
| si -> super#sig_item si
|
||||
method ctyp ty = match ty with
|
@ -1,500 +0,0 @@
|
||||
Index: eliom-5.0.0/src/lib/eliom_common.server.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_common.server.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_common.server.ml
|
||||
@@ -1372,7 +1372,7 @@ let create_persistent_table name =
|
||||
|
||||
let persistent_cookies_table :
|
||||
(full_state_name * float option * timeout * perssessgrp option)
|
||||
- Ocsipersist.table Lazy.t =
|
||||
+ Ocsipersist.table Lwt.t Lazy.t =
|
||||
lazy (create_persistent_table eliom_persistent_cookie_table)
|
||||
(* Another tables, containing the session info for each cookie *)
|
||||
(* the table contains:
|
||||
@@ -1390,7 +1390,7 @@ let persistent_cookies_table :
|
||||
let remove_from_all_persistent_tables key =
|
||||
Perstables.fold (* could be replaced by a parallel map *)
|
||||
(fun thr t -> thr >>= fun () ->
|
||||
- Ocsipersist.remove (Ocsipersist.open_table t) key >>= Lwt_unix.yield)
|
||||
+ Ocsipersist.open_table t >>= fun table -> Ocsipersist.remove table key >>= Lwt_unix.yield)
|
||||
(return ())
|
||||
!perstables
|
||||
|
||||
Index: eliom-5.0.0/src/lib/eliom_common.server.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_common.server.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_common.server.mli
|
||||
@@ -609,10 +609,10 @@ module Perstables :
|
||||
val fold : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
|
||||
end
|
||||
val perstables : string list ref
|
||||
-val create_persistent_table : string -> 'a Ocsipersist.table
|
||||
+val create_persistent_table : string -> 'a Ocsipersist.table Lwt.t
|
||||
val persistent_cookies_table :
|
||||
(full_state_name * float option * timeout * perssessgrp option)
|
||||
- Ocsipersist.table Lazy.t
|
||||
+ Ocsipersist.table Lwt.t Lazy.t
|
||||
val remove_from_all_persistent_tables : string -> unit Lwt.t
|
||||
val absolute_change_sitedata : sitedata -> unit
|
||||
val get_current_sitedata : unit -> sitedata
|
||||
Index: eliom-5.0.0/src/lib/eliom_reference.server.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_reference.server.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_reference.server.ml
|
||||
@@ -32,8 +32,8 @@ type 'a eref_kind =
|
||||
| Ref of 'a lazy_t ref (* Ocaml reference *)
|
||||
| Vol of 'a volatile_table Lazy.t (* Vol. table (group, session, process) *)
|
||||
| Ocsiper of 'a option Ocsipersist.t Lwt.t (* Global persist. table *)
|
||||
- | Ocsiper_sit of 'a Ocsipersist.table (* Persist. table for site *)
|
||||
- | Per of 'a persistent_table (* Persist. table for group session or process *)
|
||||
+ | Ocsiper_sit of 'a Ocsipersist.table Lwt.t (* Persist. table for site *)
|
||||
+ | Per of 'a persistent_table Lwt.t (* Persist. table for group session or process *)
|
||||
|
||||
type volatile = [ `Volatile ]
|
||||
type persistent = [ `Persistent ]
|
||||
@@ -174,9 +174,7 @@ let eref_from_fun_ ~ext ~scope ?secure ?
|
||||
| None -> (Volatile.eref_from_fun_ ~ext ~scope ?secure f :> _ eref)
|
||||
| Some name ->
|
||||
(f, ext,
|
||||
- Ocsiper (Ocsipersist.make_persistent
|
||||
- ~store:pers_ref_store
|
||||
- ~name ~default:None))
|
||||
+ Ocsiper (pers_ref_store >>= fun store -> Ocsipersist.make_persistent ~store ~name ~default:None))
|
||||
end
|
||||
| `Site ->
|
||||
begin
|
||||
@@ -207,6 +205,7 @@ let get_site_id () =
|
||||
let get (f, _, table as eref) =
|
||||
match table with
|
||||
| Per t ->
|
||||
+ t >>= fun t ->
|
||||
(get_persistent_data ~table:t () >>= function
|
||||
| Data d -> Lwt.return d
|
||||
| _ ->
|
||||
@@ -221,6 +220,7 @@ let get (f, _, table as eref) =
|
||||
Ocsipersist.set r (Some value) >>= fun () ->
|
||||
Lwt.return value)
|
||||
| Ocsiper_sit t ->
|
||||
+ t >>= fun t ->
|
||||
(let site_id = get_site_id () in
|
||||
try_lwt Ocsipersist.find t site_id
|
||||
with Not_found ->
|
||||
@@ -231,9 +231,10 @@ let get (f, _, table as eref) =
|
||||
|
||||
let set (_, _, table as eref) value =
|
||||
match table with
|
||||
- | Per t -> set_persistent_data ~table:t value
|
||||
+ | Per t -> t >>= fun t -> set_persistent_data ~table:t value
|
||||
| Ocsiper r -> r >>= fun r -> Ocsipersist.set r (Some value)
|
||||
| Ocsiper_sit t ->
|
||||
+ t >>= fun t ->
|
||||
Ocsipersist.add t (get_site_id ()) value
|
||||
| _ -> Lwt.return (Volatile.set eref value)
|
||||
|
||||
@@ -242,9 +243,10 @@ let modify eref f =
|
||||
|
||||
let unset (f, _, table as eref) =
|
||||
match table with
|
||||
- | Per t -> remove_persistent_data ~table:t ()
|
||||
+ | Per t -> t >>= fun t -> remove_persistent_data ~table:t ()
|
||||
| Ocsiper r -> r >>= fun r -> Ocsipersist.set r None
|
||||
| Ocsiper_sit t ->
|
||||
+ t >>= fun t ->
|
||||
Ocsipersist.remove t (get_site_id ())
|
||||
| _ -> Lwt.return (Volatile.unset eref)
|
||||
|
||||
@@ -258,6 +260,7 @@ module Ext = struct
|
||||
match table with
|
||||
| Vol _ -> Lwt.return (Volatile.Ext.get state r)
|
||||
| Per t ->
|
||||
+ t >>= fun t ->
|
||||
(Lwt.catch
|
||||
(fun () -> Eliom_state.Ext.Low_level.get_persistent_data
|
||||
~state ~table:t)
|
||||
@@ -279,6 +282,7 @@ module Ext = struct
|
||||
match table with
|
||||
| Vol _ -> Lwt.return (Volatile.Ext.set state r value)
|
||||
| Per t ->
|
||||
+ t >>= fun t ->
|
||||
Eliom_state.Ext.Low_level.set_persistent_data
|
||||
~state ~table:t value
|
||||
| _ -> Lwt.fail (Failure "wrong eref for this function")
|
||||
@@ -291,7 +295,7 @@ module Ext = struct
|
||||
let state = Eliom_state.Ext.untype_state state in
|
||||
match table with
|
||||
| Vol _ -> Lwt.return (Volatile.Ext.unset state r)
|
||||
- | Per t -> Eliom_state.Ext.Low_level.remove_persistent_data
|
||||
+ | Per t -> t >>= fun t -> Eliom_state.Ext.Low_level.remove_persistent_data
|
||||
~state ~table:t
|
||||
| _ -> failwith "wrong eref for this function"
|
||||
|
||||
Index: eliom-5.0.0/src/lib/eliom_state.server.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_state.server.ml
|
||||
+++ eliom-5.0.0/src/lib/eliom_state.server.ml
|
||||
@@ -918,11 +918,11 @@ type 'a persistent_table =
|
||||
bool *
|
||||
(int64 * 'a) Ocsipersist.table)
|
||||
|
||||
-let create_persistent_table ~scope ?secure name : 'a persistent_table =
|
||||
+let create_persistent_table ~scope ?secure name : 'a persistent_table Lwt.t =
|
||||
let sitedata = Eliom_request_info.find_sitedata "create_persistent_table" in
|
||||
let secure = Eliom_common.get_secure secure sitedata in
|
||||
- let t = Eliom_common.create_persistent_table name in
|
||||
- (scope, secure, t)
|
||||
+ Eliom_common.create_persistent_table name >>= fun t ->
|
||||
+ Lwt.return (scope, secure, t)
|
||||
|
||||
let get_p_table_key_
|
||||
~table:(scope, secure, table)
|
||||
@@ -1271,10 +1271,8 @@ module Ext = struct
|
||||
|
||||
let get_persistent_cookie_info
|
||||
((_, _, cookie) : ([< Eliom_common.cookie_level ], [ `Pers ]) state) =
|
||||
- Ocsipersist.find
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
- cookie
|
||||
- >>= fun v ->
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= fun table ->
|
||||
+ Ocsipersist.find table cookie >>= fun v ->
|
||||
Lwt.return (cookie, v)
|
||||
|
||||
let discard_state ~state =
|
||||
@@ -1487,10 +1485,8 @@ module Ext = struct
|
||||
| None -> TNone
|
||||
| Some t -> TSome t
|
||||
in
|
||||
- Ocsipersist.add
|
||||
- (Lazy.force Eliom_common.persistent_cookies_table)
|
||||
- cookie
|
||||
- (fullstname, exp, ti, sessgrp)
|
||||
+ Lazy.force Eliom_common.persistent_cookies_table >>= fun table ->
|
||||
+ Ocsipersist.add table cookie (fullstname, exp, ti, sessgrp)
|
||||
|
||||
let get_service_cookie_timeout ~cookie:(_, (_, _, _, r, _, _)) =
|
||||
!r
|
||||
@@ -1510,10 +1506,8 @@ module Ext = struct
|
||||
|
||||
let unset_persistent_data_cookie_timeout
|
||||
~cookie:(cookie, (fullstname, exp, _, sessgrp)) =
|
||||
- Ocsipersist.add
|
||||
- (Lazy.force Eliom_common.persistent_cookies_table)
|
||||
- cookie
|
||||
- (fullstname, exp, TGlobal, sessgrp)
|
||||
+ Lazy.force Eliom_common.persistent_cookies_table >>= fun table ->
|
||||
+ Ocsipersist.add table cookie (fullstname, exp, TGlobal, sessgrp)
|
||||
|
||||
|
||||
let get_session_group_list () =
|
||||
Index: eliom-5.0.0/src/lib/eliom_state.server.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_state.server.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_state.server.mli
|
||||
@@ -1019,7 +1019,7 @@ val remove_volatile_data :
|
||||
val create_persistent_table :
|
||||
scope:Eliom_common.user_scope ->
|
||||
?secure:bool ->
|
||||
- string -> 'a persistent_table
|
||||
+ string -> 'a persistent_table Lwt.t
|
||||
|
||||
(** gets persistent session data for the current persistent session (if any).
|
||||
(low level) *)
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_cookies.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_cookies.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_cookies.ml
|
||||
@@ -152,8 +152,7 @@ let get_cookie_info
|
||||
lazy
|
||||
(catch
|
||||
(fun () ->
|
||||
- Ocsipersist.find
|
||||
- (Lazy.force Eliom_common.persistent_cookies_table) value >>=
|
||||
+ Lazy.force Eliom_common.persistent_cookies_table >>= fun table -> Ocsipersist.find table value >>=
|
||||
fun (full_state_name, persexp, perstimeout, sessgrp) ->
|
||||
|
||||
Eliommod_sessiongroups.Pers.up value sessgrp >>= fun () ->
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_gc.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_gc.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_gc.ml
|
||||
@@ -309,7 +309,8 @@ let persistent_session_gc sitedata =
|
||||
(fun () ->
|
||||
let now = Unix.time () in
|
||||
Lwt_log.ign_info ~section "GC of persistent sessions";
|
||||
- (Ocsipersist.iter_table
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>=
|
||||
+ Ocsipersist.iter_table
|
||||
(fun k ((scope, _, _), exp, _, session_group) ->
|
||||
(match exp with
|
||||
| Some exp when exp < now ->
|
||||
@@ -320,8 +321,7 @@ let persistent_session_gc sitedata =
|
||||
session_group k
|
||||
(*WAS: remove_from_all_persistent_tables k *)
|
||||
| _ -> return ())
|
||||
- )
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)))
|
||||
+ ))
|
||||
>>=
|
||||
f
|
||||
in ignore (f ())
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_pagegen.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_pagegen.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_pagegen.ml
|
||||
@@ -135,8 +135,9 @@ let update_cookie_table ?now sitedata (c
|
||||
oldv = newc.Eliom_common.pc_value ->
|
||||
catch
|
||||
(fun () ->
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= fun table ->
|
||||
Ocsipersist.replace_if_exists
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
+ table
|
||||
newc.Eliom_common.pc_value
|
||||
(name,
|
||||
newexp,
|
||||
@@ -147,8 +148,9 @@ let update_cookie_table ?now sitedata (c
|
||||
(* someone else closed the session *)
|
||||
| e -> fail e)
|
||||
| _ ->
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= fun table ->
|
||||
Ocsipersist.add
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
+ table
|
||||
newc.Eliom_common.pc_value
|
||||
(name,
|
||||
newexp,
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_persess.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_persess.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_persess.ml
|
||||
@@ -50,7 +50,7 @@ let number_of_persistent_table_elements
|
||||
List.fold_left
|
||||
(fun thr t ->
|
||||
thr >>= fun l ->
|
||||
- Ocsipersist.length (Ocsipersist.open_table t) >>= fun e ->
|
||||
+ Ocsipersist.open_table t >>= fun table -> Ocsipersist.length table >>= fun e ->
|
||||
return ((t, e)::l)) (return []) !perstables
|
||||
|
||||
let close_persistent_state2
|
||||
@@ -141,8 +141,7 @@ let rec find_or_create_persistent_cookie
|
||||
(* We do not need to verify if it already exists.
|
||||
make_new_session_id does never generate twice the same cookie. *)
|
||||
let usertimeout = ref Eliom_common.TGlobal (* See global table *) in
|
||||
- Ocsipersist.add
|
||||
- (Lazy.force persistent_cookies_table) c
|
||||
+ Lazy.force persistent_cookies_table >>= fun table -> Ocsipersist.add table c
|
||||
(full_st_name,
|
||||
None (* Some 0. *) (* exp on server - We'll change it later *),
|
||||
Eliom_common.TGlobal (* timeout - see global config *),
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_persess.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_persess.mli
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_persess.mli
|
||||
@@ -22,7 +22,7 @@ val perstables : string list ref
|
||||
val persistent_cookies_table :
|
||||
(Eliom_common.full_state_name * float option * Eliom_common.timeout *
|
||||
Eliom_common.perssessgrp option)
|
||||
- Ocsipersist.table Lazy.t
|
||||
+ Ocsipersist.table Lwt.t Lazy.t
|
||||
val number_of_persistent_tables : unit -> int
|
||||
val number_of_persistent_table_elements : unit -> (string * int) list Lwt.t
|
||||
val close_persistent_state2 :
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_sessadmin.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_sessadmin.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_sessadmin.ml
|
||||
@@ -94,6 +94,7 @@ let close_all_data_states ~scope ~secure
|
||||
|
||||
|
||||
let close_all_persistent_states2 full_st_name sitedata =
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>=
|
||||
Ocsipersist.iter_table
|
||||
(fun k ((scope, _, _) as full_st_name2, old_exp, old_t, sessiongrp) ->
|
||||
if full_st_name = full_st_name2 && old_t = Eliom_common.TGlobal
|
||||
@@ -102,7 +103,6 @@ let close_all_persistent_states2 full_st
|
||||
Lwt_unix.yield
|
||||
else return ()
|
||||
)
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
|
||||
(** Close all persistent sessions for one session name.
|
||||
If the optional parameter [?state_name] (session name) is not present,
|
||||
@@ -195,6 +195,7 @@ let update_pers_exp full_st_name sitedat
|
||||
close_all_persistent_states2 full_st_name sitedata
|
||||
| _ ->
|
||||
let now = Unix.time () in
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= fun table ->
|
||||
Ocsipersist.iter_table
|
||||
(fun k ((scope, _, _) as full_st_name2, old_exp, old_t, sessgrp) ->
|
||||
if full_st_name = full_st_name2 && old_t =
|
||||
@@ -211,11 +212,7 @@ let update_pers_exp full_st_name sitedat
|
||||
Eliommod_persess.close_persistent_state2
|
||||
~scope sitedata sessgrp k
|
||||
| _ ->
|
||||
- Ocsipersist.add
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
- k
|
||||
- (full_st_name2, newexp,
|
||||
- Eliom_common.TGlobal, sessgrp) >>= Lwt_unix.yield
|
||||
+ Ocsipersist.add table k (full_st_name2, newexp, Eliom_common.TGlobal, sessgrp) >>= Lwt_unix.yield
|
||||
else return ()
|
||||
)
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
+ table
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_sessexpl.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_sessexpl.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_sessexpl.ml
|
||||
@@ -57,12 +57,12 @@ let iter_data_cookies f =
|
||||
|
||||
(** Iterator on persistent cookies *)
|
||||
let iter_persistent_cookies f =
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>=
|
||||
Ocsipersist.iter_table
|
||||
(fun k v ->
|
||||
f (k, v) >>=
|
||||
Lwt_unix.yield
|
||||
)
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
|
||||
|
||||
(** Iterator on service cookies *)
|
||||
@@ -94,13 +94,14 @@ let fold_data_cookies f beg =
|
||||
|
||||
(** Iterator on persistent cookies *)
|
||||
let fold_persistent_cookies f beg =
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= fun table ->
|
||||
Ocsipersist.fold_table
|
||||
(fun k v beg ->
|
||||
f (k, v) beg >>= fun res ->
|
||||
Lwt_unix.yield () >>= fun () ->
|
||||
return res
|
||||
)
|
||||
- (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
+ table
|
||||
beg
|
||||
|
||||
(*****************************************************************************)
|
||||
@@ -121,4 +122,4 @@ let number_of_table_elements () =
|
||||
List.map (fun f -> f ()) !Eliommod_datasess.counttableelements
|
||||
|
||||
let number_of_persistent_cookies () =
|
||||
- Ocsipersist.length (Lazy.force Eliommod_persess.persistent_cookies_table)
|
||||
+ Lazy.force Eliommod_persess.persistent_cookies_table >>= Ocsipersist.length
|
||||
Index: eliom-5.0.0/src/lib/server/eliommod_sessiongroups.ml
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/server/eliommod_sessiongroups.ml
|
||||
+++ eliom-5.0.0/src/lib/server/eliommod_sessiongroups.ml
|
||||
@@ -413,7 +413,7 @@ module Pers = struct
|
||||
(*VVV Verify this carefully! *)
|
||||
(*VVV VEOcsigen_request_infoFY concurrent access *)
|
||||
|
||||
- let grouptable : (nbmax * string list) Ocsipersist.table Lazy.t =
|
||||
+ let grouptable : (nbmax * string list) Ocsipersist.table Lwt.t Lazy.t =
|
||||
lazy (Ocsipersist.open_table "__eliom_session_group_table")
|
||||
(* It is lazy because if the module is linked statically,
|
||||
the creation of the table must happen after initialisation
|
||||
@@ -426,7 +426,7 @@ module Pers = struct
|
||||
| Some g ->
|
||||
Lwt.catch
|
||||
(fun () ->
|
||||
- Ocsipersist.find !!grouptable
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.find grouptable
|
||||
(Eliom_common.string_of_perssessgrp g) >>= fun (_, a) ->
|
||||
Lwt.return a)
|
||||
(function
|
||||
@@ -439,7 +439,7 @@ module Pers = struct
|
||||
let sg = Eliom_common.string_of_perssessgrp sg in
|
||||
Lwt.catch
|
||||
(fun () ->
|
||||
- Ocsipersist.find !!grouptable sg >>= fun (max2, cl) ->
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.find grouptable sg >>= fun (max2, cl) ->
|
||||
let max, newmax = match set_max with
|
||||
| None -> ((match max2 with
|
||||
| Default -> defaultmax
|
||||
@@ -449,7 +449,7 @@ module Pers = struct
|
||||
| Some (Some v) -> Some v, Val v
|
||||
in
|
||||
let cl, toclose = cut max cl in
|
||||
- Ocsipersist.replace_if_exists !!grouptable sg (newmax, (sess_id::cl))
|
||||
+ Ocsipersist.replace_if_exists grouptable sg (newmax, (sess_id::cl))
|
||||
>>= fun () ->
|
||||
Lwt.return toclose)
|
||||
(function
|
||||
@@ -459,7 +459,7 @@ module Pers = struct
|
||||
| Some None -> Nolimit
|
||||
| Some (Some v) -> Val v
|
||||
in
|
||||
- Ocsipersist.add !!grouptable sg (max, [sess_id]) >>= fun () ->
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.add grouptable sg (max, [sess_id]) >>= fun () ->
|
||||
Lwt.return []
|
||||
| e -> Lwt.fail e)
|
||||
| None -> Lwt.return []
|
||||
@@ -502,8 +502,7 @@ module Pers = struct
|
||||
belonging to the group grp *)
|
||||
(* group_name is the cookie value *)
|
||||
remove sitedata group_name grp >>= fun () ->
|
||||
- Ocsipersist.remove
|
||||
- (!!Eliom_common.persistent_cookies_table) group_name
|
||||
+ !!Eliom_common.persistent_cookies_table >>= fun table -> Ocsipersist.remove table group_name
|
||||
| _ -> Lwt.return ())
|
||||
>>= fun () ->
|
||||
|
||||
@@ -511,7 +510,7 @@ module Pers = struct
|
||||
match sess_grp with
|
||||
| Some sg ->
|
||||
let sg = Eliom_common.string_of_perssessgrp sg in
|
||||
- Ocsipersist.remove !!grouptable sg
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.remove grouptable sg
|
||||
| None -> Lwt.return ()
|
||||
)
|
||||
(function Not_found -> Lwt.return () | e -> Lwt.fail e)
|
||||
@@ -526,7 +525,7 @@ module Pers = struct
|
||||
match cookie_level with
|
||||
| `Client_process -> begin
|
||||
(* We remove cookie info from the table *)
|
||||
- Ocsipersist.remove (!!Eliom_common.persistent_cookies_table) cookie
|
||||
+ !!Eliom_common.persistent_cookies_table >>= fun table -> Ocsipersist.remove table cookie
|
||||
>>= fun () ->
|
||||
|
||||
(* We remove the session from its group: *)
|
||||
@@ -555,7 +554,7 @@ module Pers = struct
|
||||
let sg = Eliom_common.string_of_perssessgrp sg0 in
|
||||
Lwt.catch
|
||||
(fun () ->
|
||||
- Ocsipersist.find !!grouptable sg >>= fun (max, cl) ->
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.find grouptable sg >>= fun (max, cl) ->
|
||||
let newcl = List.remove_first_if_any sess_id cl in
|
||||
(match newcl with
|
||||
| [] ->
|
||||
@@ -570,8 +569,8 @@ module Pers = struct
|
||||
remove_group ~cookie_level:`Session sitedata sess_grp
|
||||
| _ -> Lwt.return ()
|
||||
) >>= fun () ->
|
||||
- Ocsipersist.remove !!grouptable sg
|
||||
- | _ -> Ocsipersist.replace_if_exists !!grouptable sg (max, newcl)
|
||||
+ Ocsipersist.remove grouptable sg
|
||||
+ | _ -> Ocsipersist.replace_if_exists grouptable sg (max, newcl)
|
||||
)
|
||||
)
|
||||
(function
|
||||
@@ -586,9 +585,9 @@ module Pers = struct
|
||||
let sg = Eliom_common.string_of_perssessgrp sg in
|
||||
Lwt.catch
|
||||
(fun () ->
|
||||
- Ocsipersist.find !!grouptable sg >>= fun (max, cl) ->
|
||||
+ !!grouptable >>= fun grouptable -> Ocsipersist.find grouptable sg >>= fun (max, cl) ->
|
||||
let newcl = List.remove_first_if_any sess_id cl in
|
||||
- Ocsipersist.replace_if_exists !!grouptable sg (max, sess_id::newcl)
|
||||
+ Ocsipersist.replace_if_exists grouptable sg (max, sess_id::newcl)
|
||||
)
|
||||
(function
|
||||
| Not_found -> Lwt.return ()
|
||||
@@ -601,6 +600,6 @@ module Pers = struct
|
||||
end
|
||||
else Lwt.return []
|
||||
|
||||
- let nb_of_groups () = Ocsipersist.length !!grouptable
|
||||
+ let nb_of_groups () = !!grouptable >>= Ocsipersist.length
|
||||
|
||||
end
|
@ -1,44 +0,0 @@
|
||||
Index: eliom-5.0.0/src/lib/eliom_shared.eliom
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_shared.eliom
|
||||
+++ eliom-5.0.0/src/lib/eliom_shared.eliom
|
||||
@@ -288,7 +288,7 @@ module FakeReactiveData = struct
|
||||
val concat : 'a t -> 'a t -> 'a t
|
||||
val value : 'a t -> 'a list
|
||||
val synced : 'a t -> bool
|
||||
- val signal : 'a t -> 'a list FakeReact.S.t
|
||||
+ val signal : ?eq:('a -> 'a -> bool) -> 'a t -> 'a list FakeReact.S.t
|
||||
val singleton_s : 'a FakeReact.S.t -> 'a t
|
||||
val map : ('a -> 'b) -> 'a t -> 'b t
|
||||
val from_signal :
|
||||
@@ -304,7 +304,7 @@ module FakeReactiveData = struct
|
||||
let singleton_s s = [FakeReact.S.value s], FakeReact.S.synced s
|
||||
let value (l, _) = l
|
||||
let synced (_, b) = b
|
||||
- let signal (l, synced) = fst (FakeReact.S.create ~synced l)
|
||||
+ let signal ?eq (l, synced) = fst (FakeReact.S.create ~synced l)
|
||||
let map f (l, b) = List.map f l, b
|
||||
let from_signal ?eq s = FakeReact.S.(value s, synced s)
|
||||
module Lwt = struct
|
||||
@@ -635,7 +635,7 @@ module ReactiveData = struct
|
||||
let value (s : 'a t) = {shared# 'a list {
|
||||
FakeReactiveData.RList.value (Value.local %s) }}
|
||||
|
||||
- let signal (s : 'a t) = {shared# 'a list FakeReact.S.t {
|
||||
+ let signal ?eq (s : 'a t) = {shared# 'a list FakeReact.S.t {
|
||||
FakeReactiveData.RList.signal (Value.local %s) }}
|
||||
|
||||
let map f s = {shared# 'a FakeReactiveData.RList.t {
|
||||
Index: eliom-5.0.0/src/lib/eliom_shared_sigs.shared.mli
|
||||
===================================================================
|
||||
--- eliom-5.0.0.orig/src/lib/eliom_shared_sigs.shared.mli
|
||||
+++ eliom-5.0.0/src/lib/eliom_shared_sigs.shared.mli
|
||||
@@ -143,7 +143,7 @@ module type RLIST = sig
|
||||
|
||||
val concat : 'a t -> 'a t -> 'a t
|
||||
val value : 'a t -> 'a list Eliom_lib.shared_value
|
||||
- val signal : 'a t -> 'a list signal
|
||||
+ val signal : ?eq:(('a -> 'a -> bool)) -> 'a t -> 'a list signal
|
||||
val singleton_s : 'a signal -> 'a t
|
||||
val map : ('a -> 'b) Eliom_lib.shared_value -> 'a t -> 'b t
|
||||
val from_signal :
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,31 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit findlib
|
||||
|
||||
DESCRIPTION="Inline (Unit) Tests for OCaml"
|
||||
HOMEPAGE="https://github.com/vincent-hugot/iTeML"
|
||||
SRC_URI="https://github.com/vincent-hugot/iTeML/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE=""
|
||||
|
||||
RDEPEND="dev-ml/ounit:=
|
||||
dev-lang/ocaml:=[ocamlopt]
|
||||
>=dev-ml/qcheck-0.5:=
|
||||
"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-ml/ocamlbuild
|
||||
"
|
||||
|
||||
src_install() {
|
||||
findlib_src_preinst
|
||||
dodir /usr/bin
|
||||
emake BIN="${ED}/usr/bin/" install
|
||||
dodoc README.adoc HOWTO.adoc
|
||||
}
|
@ -1,4 +1,2 @@
|
||||
DIST ocaml-containers-0.18.tar.gz 418480 SHA256 8bac90113e229a9dc55a2f54c20cf363df43c2e72ca349a5a811ad113a6d2909 SHA512 fa61039fc3bbfcd53117ae582689ffca645b42a811ebe0fc8aa5da93ba5373c2ac54896ecaddbe3eff7593b2be44f208abb625ad3354d2b089a0b811b9f77cff WHIRLPOOL 10795e812baab4525f6fdfbc101c7b14230ef87893ccf01702a6a75e373a12bf643f775f63cb27640f0dd398da541e6c185489dc27cd9fc7bd75a4a90f34baf2
|
||||
DIST ocaml-containers-0.19.tar.gz 419243 SHA256 e53472e009ea2699f39940844fc0ef9abb332234834c6963f8325aa7df0694f5 SHA512 1ed078121770d72ba685c116ddeebc848b086e371604c7fedf1bdb58ea5cb9685db8a3c7c4edcac69a9cd18ece1eb601d1675c25efe6ab61e2a511a8a857aff2 WHIRLPOOL 27df23c2b0196647f071089d2044dbb7cf4b2c710bdc066eda892e8e4ffe229d5bafc2ec29b5afc4cffd0513d69d16776342258e667e62613ff2c771762ea1d5
|
||||
DIST ocaml-containers-0.20.tar.gz 427546 SHA256 d5ffbf6c87bc25b914043817f02a5513fe9b0499d3d0d67b43cceb2bc38d286b SHA512 9e97d4563824a937c42fee89dc86e91ff740bdb4c444ab4ce9b31f50b272f9f400d2d71fb298294d80443002f4b511f2292cc41be15234128bdcd18dd1b1cfd4 WHIRLPOOL f1e0599504d206725a6027905803355e5a80ee936287024bd184062c3030796dd289044e2d6d301bdb104eda25a9d457f424371123f0ce5b320dff1e83463d1f
|
||||
DIST ocaml-containers-0.21.tar.gz 429430 SHA256 7b3395964e527a60cfc3c96354c4ba1ebb9996e6f83399a31dd58eb053fd777b SHA512 fd339b09296245d40eac7661468147c98c45cdfc882ac890ca9a903f3a4abb21d4d13981b9784710d317ef4b3f76c3141b322df78673df2e0108d20cb633ae84 WHIRLPOOL 5cdd686f4d1b2b33ecc401b569a9321bc639b5c83866b5954585b021ecadb72e2a2b66eca778e6d5b0105f2c613d7df2cc3e20f2c1b44db622a03f7bf9068f9e
|
||||
DIST ocaml-containers-0.22.tar.gz 429678 SHA256 883e64a6b2275355086521a67d5fe0e436bbf79f54c8fb068a05ab3cf3408e98 SHA512 1454f8bcd11d02a9efd2fe223e2db591d2e1d66df6877af920b4d8a2cc3a2c6b34b0979069015565618700dfb4a74d6a8f2d8cd8f9fc6fa7888331320ea41c46 WHIRLPOOL f5993d629fe2a803b1284cd5794f3345060215cf16bb97347dd2173b7015735ddcd43b98c3b5ccf365d372ffedf77892e862fbc276b24468699a95492dc784e7
|
||||
|
@ -1,18 +0,0 @@
|
||||
Index: ocaml-containers-0.18/Makefile
|
||||
===================================================================
|
||||
--- ocaml-containers-0.18.orig/Makefile
|
||||
+++ ocaml-containers-0.18/Makefile
|
||||
@@ -90,12 +90,7 @@ QTEST_PREAMBLE='open CCFun;; '
|
||||
|
||||
qtest-gen:
|
||||
@mkdir -p qtest
|
||||
- @if which qtest > /dev/null ; then \
|
||||
- qtest extract --preamble $(QTEST_PREAMBLE) \
|
||||
- -o qtest/run_qtest.ml \
|
||||
- $(QTESTABLE) 2> /dev/null ; \
|
||||
- else touch qtest/run_qtest.ml ; \
|
||||
- fi
|
||||
+ touch qtest/run_qtest.ml
|
||||
|
||||
push-stable:
|
||||
git checkout stable
|
@ -1,33 +0,0 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
#OASIS_BUILD_TESTS=1
|
||||
OASIS_BUILD_DOCS=1
|
||||
|
||||
inherit oasis
|
||||
|
||||
DESCRIPTION="A modular standard library focused on data structures"
|
||||
HOMEPAGE="https://github.com/c-cube/ocaml-containers"
|
||||
SRC_URI="https://github.com/c-cube/ocaml-containers/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE=""
|
||||
|
||||
RDEPEND="
|
||||
dev-ml/result:=
|
||||
dev-ml/sequence:=
|
||||
"
|
||||
DEPEND="${RDEPEND} dev-ml/cppo"
|
||||
PATCHES=( "${FILESDIR}/notests.patch" )
|
||||
|
||||
src_configure() {
|
||||
oasis_configure_opts="
|
||||
--enable-unix
|
||||
--disable-bench
|
||||
" oasis_src_configure
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
#OASIS_BUILD_TESTS=1
|
||||
OASIS_BUILD_DOCS=1
|
||||
|
||||
inherit oasis
|
||||
|
||||
DESCRIPTION="A modular standard library focused on data structures"
|
||||
HOMEPAGE="https://github.com/c-cube/ocaml-containers"
|
||||
SRC_URI="https://github.com/c-cube/ocaml-containers/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD-2"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE=""
|
||||
|
||||
RDEPEND="
|
||||
dev-ml/result:=
|
||||
dev-ml/sequence:=
|
||||
"
|
||||
DEPEND="${RDEPEND} dev-ml/cppo"
|
||||
PATCHES=( "${FILESDIR}/notests.patch" )
|
||||
|
||||
src_configure() {
|
||||
oasis_configure_opts="
|
||||
--enable-unix
|
||||
--disable-bench
|
||||
" oasis_src_configure
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST qcheck-0.5.tar.gz 101731 SHA256 930d035981b91617c7f7104228c51741d2b9116094d47ea2a8260091fd80bb3f SHA512 449a73298eacd1348058f8307af3d702007049d4516e2a86214c07968b9b77fec5fa7006bfc681ec6ae6cb8561ee9f6353649b97c698ef338576026af340d5fa WHIRLPOOL 01db048a5db094c51640514b723a752a542535243b613b7877c0095ada9dff9442a03d60e804f3a2e4fed592dda269151f4f8698e2d4a3bfda9f68cfe0bbf5eb
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>printing@gentoo.org</email>
|
||||
<name>Gentoo Printing Project</name>
|
||||
</maintainer>
|
||||
<maintainer type="project">
|
||||
<email>ml@gentoo.org</email>
|
||||
<name>Gentoo ML Project</name>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
@ -0,0 +1,21 @@
|
||||
# Copyright 1999-2016 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Id$
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit oasis
|
||||
|
||||
DESCRIPTION="QuickCheck inspired property-based testing for OCaml"
|
||||
HOMEPAGE="https://github.com/c-cube/qcheck/"
|
||||
SRC_URI="https://github.com/c-cube/qcheck/archive/${PV}.tar.gz -> ${P}.tar.gz"
|
||||
|
||||
LICENSE="LGPL-2.1"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
RDEPEND="dev-ml/ounit:=
|
||||
!<dev-ml/iTeML-2.5"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-ml/ocamlbuild"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue