Skip to content

Instantly share code, notes, and snippets.

@shimarin
Last active May 27, 2017 06:36
Show Gist options
  • Select an option

  • Save shimarin/d505e30f7001243e80778c4a0b58421a to your computer and use it in GitHub Desktop.

Select an option

Save shimarin/d505e30f7001243e80778c4a0b58421a to your computer and use it in GitHub Desktop.
Gentooの Nginx 1.13.0を mruby対応にするパッチ
--- /usr/portage/www-servers/nginx/metadata.xml 2016-08-15 20:34:53.000000000 +0900
+++ metadata.xml 2017-05-27 12:08:38.069476300 +0900
@@ -24,6 +24,7 @@
<flag name="pcre-jit">Enable JIT for pcre</flag>
<flag name="ssl">Enable HTTPS module for http. Enable SSL/TLS support for POP3/IMAP/SMTP for mail.</flag>
<flag name="rtmp">NGINX-based Media Streaming Server</flag>
+ <flag name="mruby">ngx_mruby</flag>
</use>
<upstream>
<changelog>http://nginx.org/en/CHANGES</changelog>
--- /usr/portage/www-servers/nginx/nginx-1.13.0.ebuild 2017-04-26 17:26:04.000000000 +0900
+++ nginx-1.13.0.ebuild 2017-05-27 15:26:17.389332489 +0900
@@ -88,6 +88,12 @@
RTMP_MODULE_URI="https://github.com/arut/nginx-rtmp-module/archive/v${RTMP_MODULE_PV}.tar.gz"
RTMP_MODULE_WD="${WORKDIR}/nginx-rtmp-module-${RTMP_MODULE_PV}"
+# nginx-mruby-module (https://github.com/matsumotory/ngx_mruby, MIT License)
+MRUBY_MODULE_PV="1.19.4"
+MRUBY_MODULE_P="ngx_mruby-${MRUBY_MODULE_PV}"
+MRUBY_MODULE_URI="https://github.com/matsumotory/ngx_mruby/archive/v${MRUBY_MODULE_PV}.tar.gz"
+MRUBY_MODULE_WD="${WORKDIR}/ngx_mruby-${MRUBY_MODULE_PV}"
+
# nginx-dav-ext-module (https://github.com/arut/nginx-dav-ext-module, BSD license)
HTTP_DAV_EXT_MODULE_PV="0.0.3"
HTTP_DAV_EXT_MODULE_P="ngx_http_dav_ext-${HTTP_DAV_EXT_MODULE_PV}"
@@ -158,6 +164,7 @@
nginx_modules_http_metrics? ( ${HTTP_METRICS_MODULE_URI} -> ${HTTP_METRICS_MODULE_P}.tar.gz )
nginx_modules_http_naxsi? ( ${HTTP_NAXSI_MODULE_URI} -> ${HTTP_NAXSI_MODULE_P}.tar.gz )
rtmp? ( ${RTMP_MODULE_URI} -> ${RTMP_MODULE_P}.tar.gz )
+ mruby? ( ${MRUBY_MODULE_URI} -> ${MRUBY_MODULE_P}.tar.gz )
nginx_modules_http_dav_ext? ( ${HTTP_DAV_EXT_MODULE_URI} -> ${HTTP_DAV_EXT_MODULE_P}.tar.gz )
nginx_modules_http_echo? ( ${HTTP_ECHO_MODULE_URI} -> ${HTTP_ECHO_MODULE_P}.tar.gz )
nginx_modules_http_security? ( ${HTTP_SECURITY_MODULE_URI} -> ${HTTP_SECURITY_MODULE_P}.tar.gz )
@@ -209,7 +216,7 @@
http_auth_ldap"
IUSE="aio debug +http +http2 +http-cache +ipv6 libatomic libressl luajit +pcre
- pcre-jit rtmp selinux ssl threads userland_GNU vim-syntax"
+ pcre-jit rtmp +mruby selinux ssl threads userland_GNU vim-syntax"
for mod in $NGINX_MODULES_STD; do
IUSE="${IUSE} +nginx_modules_http_${mod}"
@@ -287,6 +294,7 @@
!www-servers/nginx:0"
DEPEND="${CDEPEND}
nginx_modules_http_security? ( ${AUTOTOOLS_DEPEND} )
+ mruby? ( dev-vcs/git dev-libs/oniguruma )
arm? ( dev-libs/libatomic_ops )
libatomic? ( dev-libs/libatomic_ops )"
PDEPEND="vim-syntax? ( app-vim/nginx-syntax )"
@@ -504,6 +512,16 @@
myconf+=( --add-module=${RTMP_MODULE_WD} )
fi
+ if use mruby; then
+ http_enabled=1
+ myconf+=( --add-module=${MRUBY_MODULE_WD} --add-module=${MRUBY_MODULE_WD}/dependence/ngx_devel_kit )
+ cd "${MRUBY_MODULE_WD}" || die
+ ./configure --with-ngx-src-root="${WORKDIR}"/nginx-"${PV}"
+ ARCH="" make build_mruby generate_gems_config
+ echo 'CORE_LIBS="$CORE_LIBS '`./mruby/bin/mruby-config --ldflags-before-libs`\" >> mrbgems_config
+ cd "${S}" || die
+ fi
+
if use nginx_modules_http_dav_ext ; then
http_enabled=1
myconf+=( --add-module=${HTTP_DAV_EXT_MODULE_WD} )
@@ -728,6 +746,11 @@
dodoc "${RTMP_MODULE_WD}"/{AUTHORS,README.md,stat.xsl}
fi
+ if use mruby; then
+ docinto ${MRUBY_MODULE_P}
+ dodoc "${MRUBY_MODULE_WD}"/{AUTHORS,README.md}
+ fi
+
if use nginx_modules_http_dav_ext; then
docinto ${HTTP_DAV_EXT_MODULE_P}
dodoc "${HTTP_DAV_EXT_MODULE_WD}"/README
@shimarin
Copy link
Author

shimarin commented May 27, 2017

他に必要なファイル(オリジナルのものをそのまま使用)

files/nginx-1.4.1-fix-perl-install-path.patch
files/nginx-httpoxy-mitigation-r1.patch
files/nginx.conf-r2
files/nginx.initd-r4
files/nginx.confd
files/nginx.service-r1
files/nginx.logrotate-r1

repomanでdigestする

repoman --digest=y -d full

あわせて読みたい・ローカルリポジトリの登録方法

/etc/portage/repos.conf

[localrepo]
location = /usr/local/portage

/usr/local/portage/metadata/layout.conf

masters = gentoo
auto-sync = false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment