# $Id: Portfile 68367 2010-06-02 05:41:28Z ryandesign@macports.org $

PortSystem 1.0

name            nginx
version         0.7.65
categories      www mail
platforms       darwin
maintainers     boeyms openmaintainer
description     High-performance HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
long_description    Nginx ("engine x") is a high-performance HTTP(S) server \
                    and reverse proxy, as well as an IMAP/POP3 proxy server. \
                    Nginx was written by Igor Sysoev for Rambler.ru, Russia's \
                    second-most visited website, where it has been running in \
                    production for over two and a half years. Igor has \
                    released the source code under a BSD-like license. \
                    Although still in beta, Nginx is known for its stability, \
                    rich feature set, simple configuration, and low resource \
                    consumption.
homepage        http://nginx.net/
master_sites    http://sysoev.ru/nginx:nginx \
                http://www.grid.net.ru/nginx/download/:upload_module \
                http://wiki.nginx.org/images/1/10/:secure_download_module \
                http://wiki.nginx.org/images/b/bb/:zip_module \
                http://people.freebsd.org/~osa/:redis_module
distfiles       ${name}-${version}${extract.suffix}:nginx
checksums       ${name}-${version}${extract.suffix} \
                md5     abc4f76af450eedeb063158bd963feaa \
                sha1    f2dcc8e015903ff1277e6fa427f9b7911c4f35ce \
                rmd160  c03386b135ec4d72d2997b19ea70b28aeaa7a6da

depends_lib     port:pcre port:zlib

patchfiles      patch-auto__install.diff patch-conf__nginx.conf.diff

set nginx_confdir       ${prefix}/etc/${name}
set nginx_logdir        ${prefix}/var/log/${name}
set nginx_rundir        ${prefix}/var/run/${name}

set nginx_pidfile       ${nginx_rundir}/${name}.pid

configure.args-append \
            --with-cc-opt=\"${configure.cppflags} ${configure.cflags}\" \
            --with-ld-opt=\"${configure.ldflags}\" \
            --conf-path=${nginx_confdir}/${name}.conf \
            --error-log-path=${nginx_logdir}/error.log \
            --http-log-path=${nginx_logdir}/access.log \
            --pid-path=${nginx_pidfile} \
            --lock-path=${nginx_rundir}/${name}.lock \
            --http-client-body-temp-path=${nginx_rundir}/client_body_temp \
            --http-proxy-temp-path=${nginx_rundir}/proxy_temp \
            --http-fastcgi-temp-path=${nginx_rundir}/fastcgi_temp

universal_variant   no

build.target        build
destroot.keepdirs   ${destroot}${nginx_logdir} \
                    ${destroot}${nginx_rundir}

post-destroot {
    set nginx_conf ${prefix}/etc/${name}/${name}.conf
    # Try to cover for the fact that, in earlier revisions of this port, the
    # configuration file was installed live instead of an example, in which
    # case an upgrade will clobber any customisations that a user might have
    # made :(
    catch "exec port provides ${nginx_conf}" provides_output
    set nginx_conf_is_registered_to_nginx \
        [regexp "${nginx_conf} is provided by: ${name}" ${provides_output}]
    set nginx_conf_differs \
        [catch {exec cmp ${nginx_conf} ${worksrcpath}/conf/${name}.conf}]
    if { ${nginx_conf_is_registered_to_nginx} && ${nginx_conf_differs} } {
        copy ${nginx_conf} ${nginx_conf}.altered
        ui_msg ""
        ui_msg "###############################################################"
        ui_msg "# It appears that you have altered ${nginx_conf},"
        ui_msg "# and that upgrading or uninstalling your previous installation"
        ui_msg "# of ${name} will clobber your copy.  It has been copied to"
        ui_msg "# ${nginx_conf}.altered for preservation when you upgrade or"
        ui_msg "# uninstall ${name}.  This problem should not occur with future"
        ui_msg "# upgrades or installations of this port.\n"
        ui_msg "###############################################################"
        ui_msg ""
    }
}

startupitem.create      yes
startupitem.executable  ${prefix}/sbin/nginx
startupitem.pidfile     auto ${nginx_pidfile}

variant dav description {Add WebDAV support to server} {
    configure.args-append   --with-http_dav_module
}

variant flv description {Add FLV (Flash Video) streaming support to server} {
    configure.args-append   --with-http_flv_module
}

variant mail description {Add IMAP4/POP3 mail proxy support} {
    configure.args-append   --with-mail
}

variant ssl description {Add SSL (HTTPS) support to the server, and\
        also to the mail proxy if that is enabled} {
    depends_lib-append      port:openssl
    configure.args-append   --with-http_ssl_module
    if [variant_isset mail] {
        configure.args-append   --with-mail_ssl_module
    }
}

variant status description {Add /nginx_status support to the server} {
    configure.args-append   --with-http_stub_status_module
}

# This variant has been labelled "perl5" so as to allow users to easily stick
# with perl 5.x once perl 6.x is released; a "perl6" variant will also be added
# at that time.
variant perl5 description {Add perl support to the server directly within\
        nginx and call perl via SSI} {
    depends_run-append	    path:bin/perl:perl5
    configure.args-append   --with-http_perl_module \
                            --with-perl=${prefix}/bin/perl
}

variant realip description {Using nginx as a backend} {
    configure.args-append   --with-http_realip_module
}

variant addition description {Append text to pages} {
    configure.args-append   --with-http_addition_module
}

variant substitution description {Replace text in pages} {
    configure.args-append   --with-http_sub_module
}

variant gzip_static description {Avoids compressing the same file each\
        time it is requested} {
    configure.args-append   --with-http_gzip_static_module
}

variant google_perftools description {Enable Google Performance Tools\
        profiling for workers} {
    depends_lib-append      port:google-perftools
    configure.args-append   --with-google_perftools_module
}

variant upload description {Enable Valery Kholodkov's upload module\
        (http://grid.net.ru/nginx/upload.en.html)} {
    set upload_filename nginx_upload_module
    set upload_version  2.0.9
    set upload_distname ${upload_filename}-${upload_version}
    distfiles-append    ${upload_distname}.tar.gz:upload_module
    checksums-append    ${upload_distname}.tar.gz \
                            md5     bd8ee6011e3e24805c8ead617211a04b \
                            sha1    4dd932eba456a5370db806d15e8cc97acd104d55 \
                            rmd160  60b4107d8d4891944c78506b9b659a916b7e528f
    configure.args-append   --add-module=${workpath}/${upload_distname}
}

variant secure_download description {Enable Ngx http secure download \
        (http://wiki.nginx.org/NginxHttpSecureDownload)} {

    set secure_download_distname Ngx_http_secure_download
    distfiles-append    ${secure_download_distname}.tar.gz:secure_download_module
    checksums-append    ${secure_download_distname}.tar.gz \
                            md5     ae35f1355fd9f1aa6d54ea15eb413163
    configure.args-append   --add-module=${workpath}/${secure_download_distname}
    depends_lib-append  port:mhash
}

variant zip description {Enable Ngx zip download module \
        (http://wiki.nginx.org/NginxNgxZip)} {

    set zip_distname Mod_zip-1.1.4
    distfiles-append    ${zip_distname}.tar.gz:zip_module
    checksums-append    ${zip_distname}.tar.gz \
                            md5     be934138446793ca783ebfcc1a74883d
    configure.args-append   --add-module=${workpath}/${zip_distname}
}

variant redis description {Enable Ngx HTTP Redis module} {
    set redis_filename  ngx_http_redis
    set redis_version   0.3.1
    set redis_distname  ${redis_filename}-${redis_version}
    distfiles-append    ${redis_distname}.tar.gz:redis_module
    checksums-append    ${redis_distname}.tar.gz \
                            md5     c731d6ac14b4c8a99fda2c7e89356a8f
    configure.args-append   --add-module=${workpath}/${redis_distname}
}
