diff mbox

[v4] package/python-web2py: cleaning for space saving

Message ID 1438070683-2109-1-git-send-email-angelo.compagnucci@gmail.com
State Changes Requested
Headers show

Commit Message

Angelo Compagnucci July 28, 2015, 8:04 a.m. UTC
This patch removes from web2py folder welcome, examples application
and a bunch of other files uneeded in production,
furthermore, it removes the admin interface if unneeded.

Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
Changes:

v3->v4:
 * Fixed erroneously removed installation of system v init script

v2->v3:
 * Changed to a positive logic for PYTHON_WEB2PY_INSTALL_ADMIN (suggested by Thomas)
 * Changed to a makefile based conditional logic (suggested by Thomas)
 * Extended cleaning of uneeded files.
 
v1->v2:
 * Reworked otion sequence as suggested by Thomas.
 * Changed to a makefile based conditional as suggested by Thomas.

 package/python-web2py/Config.in        | 11 +++++++++++
 package/python-web2py/python-web2py.mk | 36 ++++++++++++++++++++++++++++++----
 2 files changed, 43 insertions(+), 4 deletions(-)

Comments

Angelo Compagnucci Dec. 29, 2015, 8:49 p.m. UTC | #1
Dear Yann E. MORIN,


This patch works and applies cleanly on master, I just rebased and tested.

2015-07-28 10:04 GMT+02:00 Angelo Compagnucci <angelo.compagnucci@gmail.com>:
> This patch removes from web2py folder welcome, examples application
> and a bunch of other files uneeded in production,
> furthermore, it removes the admin interface if unneeded.
>
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> ---
> Changes:
>
> v3->v4:
>  * Fixed erroneously removed installation of system v init script
>
> v2->v3:
>  * Changed to a positive logic for PYTHON_WEB2PY_INSTALL_ADMIN (suggested by Thomas)
>  * Changed to a makefile based conditional logic (suggested by Thomas)
>  * Extended cleaning of uneeded files.
>
> v1->v2:
>  * Reworked otion sequence as suggested by Thomas.
>  * Changed to a makefile based conditional as suggested by Thomas.
>
>  package/python-web2py/Config.in        | 11 +++++++++++
>  package/python-web2py/python-web2py.mk | 36 ++++++++++++++++++++++++++++++----
>  2 files changed, 43 insertions(+), 4 deletions(-)
>
> diff --git a/package/python-web2py/Config.in b/package/python-web2py/Config.in
> index b10d3a4..3b55153 100644
> --- a/package/python-web2py/Config.in
> +++ b/package/python-web2py/Config.in
> @@ -14,6 +14,15 @@ config BR2_PACKAGE_PYTHON_WEB2PY
>
>  if BR2_PACKAGE_PYTHON_WEB2PY
>
> +config BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
> +       bool "install admin panel application"
> +       default y
> +       help
> +         This option install web2py admin panel application.
> +         It can be removed to save space on embedded systems.
> +
> +if BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
> +
>  config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
>         string "admin panel password"
>         default web2py
> @@ -21,3 +30,5 @@ config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
>           Set the admin panel password.
>
>  endif
> +
> +endif
> diff --git a/package/python-web2py/python-web2py.mk b/package/python-web2py/python-web2py.mk
> index 313114a..be95517 100644
> --- a/package/python-web2py/python-web2py.mk
> +++ b/package/python-web2py/python-web2py.mk
> @@ -11,13 +11,41 @@ PYTHON_WEB2PY_LICENSE_FILES = LICENSE
>  PYTHON_WEB2PY_DEPENDENCIES = python python-pydal host-python-pydal
>
>  define PYTHON_WEB2PY_INSTALL_TARGET_CMDS
> -       $(HOST_DIR)/usr/bin/python2 -c 'import os; \
> -               os.chdir("$(@D)"); \
> -               from gluon.main import save_password; \
> -               save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)'
>         mkdir -p $(TARGET_DIR)/var/www/web2py
>         cp -dpfr $(@D)/* $(TARGET_DIR)/var/www/web2py
> +       rm -rf $(TARGET_DIR)/var/www/web2py/welcome.w2p
> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/examples
> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/welcome
> +       rm -rf $(TARGET_DIR)/var/www/web2py/deposit
> +       rm -rf $(TARGET_DIR)/var/www/web2py/docs
> +       rm -rf $(TARGET_DIR)/var/www/web2py/examples
> +       rm -rf $(TARGET_DIR)/var/www/web2py/extras
> +       rm -rf $(TARGET_DIR)/var/www/web2py/handlers
> +       rm -rf $(TARGET_DIR)/var/www/web2py/scripts
> +       rm -rf $(TARGET_DIR)/var/www/web2py/ABOUT
> +       rm -rf $(TARGET_DIR)/var/www/web2py/anyserver.py
> +       rm -rf $(TARGET_DIR)/var/www/web2py/CHANGELOG
> +       rm -rf $(TARGET_DIR)/var/www/web2py/Makefile
> +       rm -rf $(TARGET_DIR)/var/www/web2py/MANIFEST.in
> +       rm -rf $(TARGET_DIR)/var/www/web2py/README.markdown
> +       rm -rf $(TARGET_DIR)/var/www/web2py/setup.py
> +       rm -rf $(TARGET_DIR)/var/www/web2py/tox.ini
> +endef
> +
> +ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y)
> +define PYTHON_WEB2PY_GENERATE_PASSWORD
> +       $(HOST_DIR)/usr/bin/python2 -c 'import os; \
> +       os.chdir("$(@D)"); \
> +       from gluon.main import save_password; \
> +       save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)';
> +endef
> +PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD
> +else
> +define PYTHON_WEB2PY_REMOVE_ADMIN
> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/admin
>  endef
> +PYTHON_WEB2PY_POST_INSTALL_TARGET_HOOKS += PYTHON_WEB2PY_REMOVE_ADMIN
> +endif
>
>  define PYTHON_WEB2PY_INSTALL_INIT_SYSV
>         $(INSTALL) -m 0755 -D package/python-web2py/S51web2py \
> --
> 1.9.1
>
Arnout Vandecappelle Dec. 30, 2015, 3:03 p.m. UTC | #2
On 29-12-15 21:49, Angelo Compagnucci wrote:
> Dear Yann E. MORIN,
> 
> 
> This patch works and applies cleanly on master, I just rebased and tested.
> 
> 2015-07-28 10:04 GMT+02:00 Angelo Compagnucci <angelo.compagnucci@gmail.com>:
>> This patch removes from web2py folder welcome, examples application
>> and a bunch of other files uneeded in production,
>> furthermore, it removes the admin interface if unneeded.
>>
>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>> ---
>> Changes:
>>
>> v3->v4:
>>  * Fixed erroneously removed installation of system v init script
>>
>> v2->v3:
>>  * Changed to a positive logic for PYTHON_WEB2PY_INSTALL_ADMIN (suggested by Thomas)
>>  * Changed to a makefile based conditional logic (suggested by Thomas)
>>  * Extended cleaning of uneeded files.
>>
>> v1->v2:
>>  * Reworked otion sequence as suggested by Thomas.
>>  * Changed to a makefile based conditional as suggested by Thomas.
>>
>>  package/python-web2py/Config.in        | 11 +++++++++++
>>  package/python-web2py/python-web2py.mk | 36 ++++++++++++++++++++++++++++++----
>>  2 files changed, 43 insertions(+), 4 deletions(-)
>>
>> diff --git a/package/python-web2py/Config.in b/package/python-web2py/Config.in
>> index b10d3a4..3b55153 100644
>> --- a/package/python-web2py/Config.in
>> +++ b/package/python-web2py/Config.in
>> @@ -14,6 +14,15 @@ config BR2_PACKAGE_PYTHON_WEB2PY
>>
>>  if BR2_PACKAGE_PYTHON_WEB2PY
>>
>> +config BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
>> +       bool "install admin panel application"
>> +       default y
>> +       help
>> +         This option install web2py admin panel application.
>> +         It can be removed to save space on embedded systems.
>> +
>> +if BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
>> +
>>  config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
>>         string "admin panel password"
>>         default web2py
>> @@ -21,3 +30,5 @@ config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
>>           Set the admin panel password.
>>
>>  endif
>> +
>> +endif
>> diff --git a/package/python-web2py/python-web2py.mk b/package/python-web2py/python-web2py.mk
>> index 313114a..be95517 100644
>> --- a/package/python-web2py/python-web2py.mk
>> +++ b/package/python-web2py/python-web2py.mk
>> @@ -11,13 +11,41 @@ PYTHON_WEB2PY_LICENSE_FILES = LICENSE
>>  PYTHON_WEB2PY_DEPENDENCIES = python python-pydal host-python-pydal
>>
>>  define PYTHON_WEB2PY_INSTALL_TARGET_CMDS
>> -       $(HOST_DIR)/usr/bin/python2 -c 'import os; \
>> -               os.chdir("$(@D)"); \
>> -               from gluon.main import save_password; \
>> -               save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)'
>>         mkdir -p $(TARGET_DIR)/var/www/web2py
>>         cp -dpfr $(@D)/* $(TARGET_DIR)/var/www/web2py
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/welcome.w2p
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/examples
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/welcome
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/deposit
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/docs
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/examples
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/extras
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/handlers
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/scripts
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/ABOUT
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/anyserver.py
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/CHANGELOG
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/Makefile
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/MANIFEST.in
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/README.markdown
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/setup.py
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/tox.ini

 I would have found it cleaner to avoid copying all these files to begin with,
by using rsync with --exclude to copy the files. Then you can have the
exclusions in a variable:

PYTHON_WEB2PY_EXCLUSIONS = \
	welcome.w2p \
	applications/examples \
...

	rsync -a $(@D)/ $(TARGET_DIR)/var/www/web2py/ \
		$(addprefix --exclude=,$(PYTHON_WEB2PY_EXCLUSIONS))



 But regardless of that:

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 Regards,
 Arnout

>> +endef
>> +
>> +ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y)
>> +define PYTHON_WEB2PY_GENERATE_PASSWORD
>> +       $(HOST_DIR)/usr/bin/python2 -c 'import os; \
>> +       os.chdir("$(@D)"); \
>> +       from gluon.main import save_password; \
>> +       save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)';
>> +endef
>> +PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD
>> +else
>> +define PYTHON_WEB2PY_REMOVE_ADMIN
>> +       rm -rf $(TARGET_DIR)/var/www/web2py/applications/admin
>>  endef
>> +PYTHON_WEB2PY_POST_INSTALL_TARGET_HOOKS += PYTHON_WEB2PY_REMOVE_ADMIN
>> +endif
>>
>>  define PYTHON_WEB2PY_INSTALL_INIT_SYSV
>>         $(INSTALL) -m 0755 -D package/python-web2py/S51web2py \
>> --
>> 1.9.1
>>
> 
> 
>
Yann E. MORIN Jan. 10, 2016, 1:26 p.m. UTC | #3
Angelo, All,

On 2015-07-28 10:04 +0200, Angelo Compagnucci spake thusly:
> This patch removes from web2py folder welcome, examples application
> and a bunch of other files uneeded in production,
> furthermore, it removes the admin interface if unneeded.

Well, I think this should have been two commits:
  - one to get rid of the admin interface
  - one to get rid of unnecessary files

See mor ecomments below...

> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
[--SNIP--]
> diff --git a/package/python-web2py/python-web2py.mk b/package/python-web2py/python-web2py.mk
> index 313114a..be95517 100644
> --- a/package/python-web2py/python-web2py.mk
> +++ b/package/python-web2py/python-web2py.mk
> @@ -11,13 +11,41 @@ PYTHON_WEB2PY_LICENSE_FILES = LICENSE
>  PYTHON_WEB2PY_DEPENDENCIES = python python-pydal host-python-pydal
>  
>  define PYTHON_WEB2PY_INSTALL_TARGET_CMDS
> -	$(HOST_DIR)/usr/bin/python2 -c 'import os; \
> -		os.chdir("$(@D)"); \
> -		from gluon.main import save_password; \
> -		save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)'
>  	mkdir -p $(TARGET_DIR)/var/www/web2py
>  	cp -dpfr $(@D)/* $(TARGET_DIR)/var/www/web2py
> +	rm -rf $(TARGET_DIR)/var/www/web2py/welcome.w2p
> +	rm -rf $(TARGET_DIR)/var/www/web2py/applications/examples
> +	rm -rf $(TARGET_DIR)/var/www/web2py/applications/welcome
> +	rm -rf $(TARGET_DIR)/var/www/web2py/deposit
> +	rm -rf $(TARGET_DIR)/var/www/web2py/docs
> +	rm -rf $(TARGET_DIR)/var/www/web2py/examples
> +	rm -rf $(TARGET_DIR)/var/www/web2py/extras
> +	rm -rf $(TARGET_DIR)/var/www/web2py/handlers
> +	rm -rf $(TARGET_DIR)/var/www/web2py/scripts
> +	rm -rf $(TARGET_DIR)/var/www/web2py/ABOUT
> +	rm -rf $(TARGET_DIR)/var/www/web2py/anyserver.py
> +	rm -rf $(TARGET_DIR)/var/www/web2py/CHANGELOG
> +	rm -rf $(TARGET_DIR)/var/www/web2py/Makefile
> +	rm -rf $(TARGET_DIR)/var/www/web2py/MANIFEST.in
> +	rm -rf $(TARGET_DIR)/var/www/web2py/README.markdown
> +	rm -rf $(TARGET_DIR)/var/www/web2py/setup.py
> +	rm -rf $(TARGET_DIR)/var/www/web2py/tox.ini
> +endef
> +
> +ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y)
> +define PYTHON_WEB2PY_GENERATE_PASSWORD
> +	$(HOST_DIR)/usr/bin/python2 -c 'import os; \
> +	os.chdir("$(@D)"); \
> +	from gluon.main import save_password; \
> +	save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)';
> +endef
> +PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD

Previously, the password was generated at install time; now, it is
generated at build time. Why?

If I read the thing corretly, that's because the password was previously
generated before the files were being copied. So I think you could have
used a pre-install hook to generate the password, keeping the same
sequence as we have today:

    PYTHON_WEB2PY_PRE_INSTALL_TARGET_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD

However, I think that is is correct and better to generate it at the end
of the build. It would have warranted a bit of explanations in the commit
log, though.

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> +else
> +define PYTHON_WEB2PY_REMOVE_ADMIN
> +	rm -rf $(TARGET_DIR)/var/www/web2py/applications/admin
>  endef
> +PYTHON_WEB2PY_POST_INSTALL_TARGET_HOOKS += PYTHON_WEB2PY_REMOVE_ADMIN
> +endif
>  
>  define PYTHON_WEB2PY_INSTALL_INIT_SYSV
>  	$(INSTALL) -m 0755 -D package/python-web2py/S51web2py \
> -- 
> 1.9.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni Feb. 23, 2016, 10:43 p.m. UTC | #4
Angelo,

On Tue, 28 Jul 2015 10:04:43 +0200, Angelo Compagnucci wrote:
> This patch removes from web2py folder welcome, examples application
> and a bunch of other files uneeded in production,
> furthermore, it removes the admin interface if unneeded.
> 
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>

I saw this old patch having Reviewed-by from Arnout and Yann and was
therefore tempted to apply it. However, I believe Arnout and Yann made
some very valuable comments before giving their Reviewed-by, and I
would prefer to see those comments be implemented rather than applying
the patch as-is.

To sum-up, the comments are:

 * Split in three patches: 1/ clean-up the installation, 2/ add option
   to remove the admin interface, 3/ move the admin password generation
   from install time to build time. This will also mean you'll have
   more detailed commit log, which will also fulfill a comment made by
   Yann.

 * Use rsync with exclude to copy only the useful files

Could you rework this patch to take into account those comments?

Thanks a lot!

Thomas
diff mbox

Patch

diff --git a/package/python-web2py/Config.in b/package/python-web2py/Config.in
index b10d3a4..3b55153 100644
--- a/package/python-web2py/Config.in
+++ b/package/python-web2py/Config.in
@@ -14,6 +14,15 @@  config BR2_PACKAGE_PYTHON_WEB2PY
 
 if BR2_PACKAGE_PYTHON_WEB2PY
 
+config BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
+	bool "install admin panel application"
+	default y
+	help
+	  This option install web2py admin panel application.
+	  It can be removed to save space on embedded systems.
+
+if BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN
+
 config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
 	string "admin panel password"
 	default web2py
@@ -21,3 +30,5 @@  config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD
 	  Set the admin panel password.
 
 endif
+
+endif
diff --git a/package/python-web2py/python-web2py.mk b/package/python-web2py/python-web2py.mk
index 313114a..be95517 100644
--- a/package/python-web2py/python-web2py.mk
+++ b/package/python-web2py/python-web2py.mk
@@ -11,13 +11,41 @@  PYTHON_WEB2PY_LICENSE_FILES = LICENSE
 PYTHON_WEB2PY_DEPENDENCIES = python python-pydal host-python-pydal
 
 define PYTHON_WEB2PY_INSTALL_TARGET_CMDS
-	$(HOST_DIR)/usr/bin/python2 -c 'import os; \
-		os.chdir("$(@D)"); \
-		from gluon.main import save_password; \
-		save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)'
 	mkdir -p $(TARGET_DIR)/var/www/web2py
 	cp -dpfr $(@D)/* $(TARGET_DIR)/var/www/web2py
+	rm -rf $(TARGET_DIR)/var/www/web2py/welcome.w2p
+	rm -rf $(TARGET_DIR)/var/www/web2py/applications/examples
+	rm -rf $(TARGET_DIR)/var/www/web2py/applications/welcome
+	rm -rf $(TARGET_DIR)/var/www/web2py/deposit
+	rm -rf $(TARGET_DIR)/var/www/web2py/docs
+	rm -rf $(TARGET_DIR)/var/www/web2py/examples
+	rm -rf $(TARGET_DIR)/var/www/web2py/extras
+	rm -rf $(TARGET_DIR)/var/www/web2py/handlers
+	rm -rf $(TARGET_DIR)/var/www/web2py/scripts
+	rm -rf $(TARGET_DIR)/var/www/web2py/ABOUT
+	rm -rf $(TARGET_DIR)/var/www/web2py/anyserver.py
+	rm -rf $(TARGET_DIR)/var/www/web2py/CHANGELOG
+	rm -rf $(TARGET_DIR)/var/www/web2py/Makefile
+	rm -rf $(TARGET_DIR)/var/www/web2py/MANIFEST.in
+	rm -rf $(TARGET_DIR)/var/www/web2py/README.markdown
+	rm -rf $(TARGET_DIR)/var/www/web2py/setup.py
+	rm -rf $(TARGET_DIR)/var/www/web2py/tox.ini
+endef
+
+ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y)
+define PYTHON_WEB2PY_GENERATE_PASSWORD
+	$(HOST_DIR)/usr/bin/python2 -c 'import os; \
+	os.chdir("$(@D)"); \
+	from gluon.main import save_password; \
+	save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)';
+endef
+PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD
+else
+define PYTHON_WEB2PY_REMOVE_ADMIN
+	rm -rf $(TARGET_DIR)/var/www/web2py/applications/admin
 endef
+PYTHON_WEB2PY_POST_INSTALL_TARGET_HOOKS += PYTHON_WEB2PY_REMOVE_ADMIN
+endif
 
 define PYTHON_WEB2PY_INSTALL_INIT_SYSV
 	$(INSTALL) -m 0755 -D package/python-web2py/S51web2py \