Skip to contentSkip to conversation

Nginx package

Buildroot Geoffrey Ragot 3 participants 6 messages Dec 26, 2015

lore
Share & tools
lore
#0 lore raw

Hello,

I have a question related to packages dependencies.

I have a case where i want to compile nginx with some additionnal modules (luajit).
I can define modules paths in the nginx config, but i don't find a way to say buildroot to compile these additional modules before nginx, otherwise than modifying nginx dependencies.

Is there a way to override dependencies of a package where a package is selected?

Regards,
Geoffrey Ragot

#1 lore raw

Hello,

Quoted 7 lines · Geoffrey Ragot

I have a question related to packages dependencies.

I have a case where i want to compile nginx with some additionnal modules (luajit).
I can define modules paths in the nginx config, but i don't find a way to say buildroot to compile these additional modules before nginx, otherwise than modifying nginx dependencies.

Well, look at nginx.mk, there are plenty of examples:

ifeq ($(BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE),y)
NGINX_DEPENDENCIES += zlib
NGINX_CONF_OPTS += --with-http_spdy_module
endif

If BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is enabled, then zlib is guaranteed to be built before nginx, and the option --with-http_spdy_module will be passed to the nginx configure script.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

Hello,

the pb is that luajit (in the context) is not a builtin module of nginx. It has to be built in a directory and nginx has to be compiled with "--add-module <path_to_luajit>".

The nginx package has an option to specify "--add-module" arguments but in this case, the dependency is not clearly mentionned in nginx.mk. I have to care about build luajit before nginx to ensure that <path_to_luajit> contains required files.

Quoted 25 lines · Thomas Petazzoni

Hello,

Quoted 7 lines · Geoffrey Ragot

I have a question related to packages dependencies.

I have a case where i want to compile nginx with some additionnal modules (luajit).
I can define modules paths in the nginx config, but i don't find a way to say buildroot to compile these additional modules before nginx, otherwise than modifying nginx dependencies.

Well, look at nginx.mk, there are plenty of examples:

ifeq ($(BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE),y)
NGINX_DEPENDENCIES += zlib
NGINX_CONF_OPTS += --with-http_spdy_module
endif

If BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is enabled, then zlib is guaranteed to be built before nginx, and the option --with-http_spdy_module will be passed to the nginx configure script.

Best regards,

Thomas

#3 lore raw

Geoffrey,

Quoted 8 lines · Geoffrey Ragot

the pb is that luajit (in the context) is not a builtin module of nginx. It has to be built in a directory and nginx has to be compiled with "--add-module <path_to_luajit>".

The nginx package has an option to specify "--add-module" arguments but in this case, the dependency is not clearly mentionned in nginx.mk. I have to care about build luajit before nginx to ensure that <path_to_luajit> contains required files.

I see two options here:

(1) If you really need to have the source of the Nginx Lua module extracted before building nginx in order to use the --add-module option, then you will have to create a package like nginx-lua, that only downloads/extracts the module source code (and does not build/install it). Then you change the nginx package to depend on this nginx-lua package, and you pass --add-module=$(NGINX_LUA_DIR).

(2) If however, it is possible to build nginx-lua after nginx, then you can do a better and more traditional packaging. Even though they document --add-module as being the way of building nginx-lua, all it seems to do during nginx configure is calling the "config" script from nginx-lua, and then the "config.make" script. So I am pretty sure it is possible to build nginx-lua after nginx.

If it is possible, (2) would be preferred.

Note that this is clearly not a trivial package to create.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw
Quoted 29 lines · Thomas Petazzoni

Geoffrey,

Quoted 8 lines · Geoffrey Ragot

the pb is that luajit (in the context) is not a builtin module of nginx. It has to be built in a directory and nginx has to be compiled with "--add-module <path_to_luajit>".

The nginx package has an option to specify "--add-module" arguments but in this case, the dependency is not clearly mentionned in nginx.mk. I have to care about build luajit before nginx to ensure that <path_to_luajit> contains required files.

I see two options here:

(1) If you really need to have the source of the Nginx Lua module extracted before building nginx in order to use the --add-module option, then you will have to create a package like nginx-lua, that only downloads/extracts the module source code (and does not build/install it). Then you change the nginx package to depend on this nginx-lua package, and you pass --add-module=$(NGINX_LUA_DIR).

(2) If however, it is possible to build nginx-lua after nginx, then you can do a better and more traditional packaging. Even though they document --add-module as being the way of building nginx-lua, all it seems to do during nginx configure is calling the "config" script from nginx-lua, and then the "config.make" script. So I am pretty sure it is possible to build nginx-lua after nginx.

Quoted 3 lines

If it is possible, (2) would be preferred.

Note that this is clearly not a trivial package to create.

FWIW: I had to do option 1 for a few ngx-* packages, as Thomas
described: for each one. I made an ngx-xxx package that simply extracts, added a sub-option to nginx's Config.in file, and then added lines to the end of nginx.mk to add ngx-xxx to NGINX_DEPENDENCIES, and the additional --add-module term. The result is that the additional source files are built and linked in to the one single nginx executable - no .so option.

That was maybe six months ago. At around that time, I heard that nginx would eventually be introducing better support to have these things be more like plugins or shared objects so that this mechanism wouldn't be needed. That sounded hopeful, but we needed an immediate solution. Even if the feature had been ready, we would have preferred to use a "stable" nginx release rather than depending on a brand new feature in the "mainline" release.

Danomi -

Quoted 11 lines

Best regards,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#5 lore raw
In reply to Thomas Petazzoni

Ok.
I will try the second way, it seems to be more straightforward if it works.

Thks for help.

Regards,
Geoffrey Ragot

Quoted 35 lines · Thomas Petazzoni

Geoffrey,

Quoted 8 lines · Geoffrey Ragot

the pb is that luajit (in the context) is not a builtin module of nginx. It has to be built in a directory and nginx has to be compiled with "--add-module <path_to_luajit>".

The nginx package has an option to specify "--add-module" arguments but in this case, the dependency is not clearly mentionned in nginx.mk. I have to care about build luajit before nginx to ensure that <path_to_luajit> contains required files.

I see two options here:

(1) If you really need to have the source of the Nginx Lua module extracted before building nginx in order to use the --add-module option, then you will have to create a package like nginx-lua, that only downloads/extracts the module source code (and does not build/install it). Then you change the nginx package to depend on this nginx-lua package, and you pass --add-module=$(NGINX_LUA_DIR).

(2) If however, it is possible to build nginx-lua after nginx, then you can do a better and more traditional packaging. Even though they document --add-module as being the way of building nginx-lua, all it seems to do during nginx configure is calling the "config" script from nginx-lua, and then the "config.make" script. So I am pretty sure it is possible to build nginx-lua after nginx.

If it is possible, (2) would be preferred.

Note that this is clearly not a trivial package to create.

Best regards,

Thomas