diff mbox series

package/mg: new package

Message ID 20200830090050.889647-1-troglobit@gmail.com
State Superseded
Headers show
Series package/mg: new package | expand

Commit Message

Joachim Wiberg Aug. 30, 2020, 9 a.m. UTC
Mg is a small Emacs-like editor with no external dependencies except a
standard C library.  It weighs in at 130 kiB and is one of a select few
completely free (public domain) text editors suitable for small and
embedded systems.

This version is based on the OpenBSD Mg, but with more features, one of
which being the no-ncurses/termcap support, which heavily reduces the
impact on a resource constrained system.

Upstream: https://github.com/troglobit/mg/

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
---
 package/Config.in    |  1 +
 package/mg/Config.in | 18 ++++++++++++++++++
 package/mg/mg.hash   |  5 +++++
 package/mg/mg.mk     | 24 ++++++++++++++++++++++++
 4 files changed, 48 insertions(+)
 create mode 100644 package/mg/Config.in
 create mode 100644 package/mg/mg.hash
 create mode 100644 package/mg/mg.mk

Comments

Gilles Talis Aug. 30, 2020, 3:27 p.m. UTC | #1
Hello Joachim,

thanks for your contribution.
Please find a few comments below.

Le dim. 30 août 2020 à 11:01, Joachim Wiberg <troglobit@gmail.com> a écrit :
>
> Mg is a small Emacs-like editor with no external dependencies except a
> standard C library.  It weighs in at 130 kiB and is one of a select few
> completely free (public domain) text editors suitable for small and
> embedded systems.
>
> This version is based on the OpenBSD Mg, but with more features, one of
> which being the no-ncurses/termcap support, which heavily reduces the
> impact on a resource constrained system.
>
> Upstream: https://github.com/troglobit/mg/
>
> Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
> ---
>  package/Config.in    |  1 +
>  package/mg/Config.in | 18 ++++++++++++++++++
>  package/mg/mg.hash   |  5 +++++
>  package/mg/mg.mk     | 24 ++++++++++++++++++++++++
>  4 files changed, 48 insertions(+)
>  create mode 100644 package/mg/Config.in
>  create mode 100644 package/mg/mg.hash
>  create mode 100644 package/mg/mg.mk
>
You need to add an entry to the DEVELOPERS file with your name and
package, so that you are identified as the maintainer for this
package. Please take a look at the DEVELOPERS file.

> diff --git a/package/Config.in b/package/Config.in
> index d7e79f4795..db2563f789 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -2431,6 +2431,7 @@ menu "Text editors and viewers"
>         source "package/joe/Config.in"
>         source "package/less/Config.in"
>         source "package/mc/Config.in"
> +       source "package/mg/Config.in"
>         source "package/most/Config.in"
>         source "package/nano/Config.in"
>         source "package/uemacs/Config.in"
> diff --git a/package/mg/Config.in b/package/mg/Config.in
> new file mode 100644
> index 0000000000..11e5bdb273
> --- /dev/null
> +++ b/package/mg/Config.in
> @@ -0,0 +1,18 @@
> +config BR2_PACKAGE_MG
> +       bool "mg"
> +       depends on BR2_USE_MMU # fork()
> +       help
> +         Emacs-like text editor (130 kiB)
> +
> +         Mg is a MicroEMACS clone with the goal of being compatible
> +         with GNU Emacs, because there should never be any reason to
> +         learn more than one Emacs flavor.
> +
> +         Unlike many other editors it does not require ncurses, only a
> +         standard C library, making it suitable for really small and
> +         embedded systems.
> +
> +         This version is based on mg2a from OpenBSD, with more features
> +         and, in particular, no requirement on ncurses or termcap.
> +
> +         https://github.com/troglobit/mg/
> diff --git a/package/mg/mg.hash b/package/mg/mg.hash
> new file mode 100644
> index 0000000000..6b3c400faa
> --- /dev/null
> +++ b/package/mg/mg.hash
> @@ -0,0 +1,5 @@
> +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/
I assume you meant: "from:
https://github.com/troglobit/mg/releases/download/v3.4/mg-3.4.tar.gz.md5"

> +md5 6b79855d54770bcb23e5457ebde8296c  mg-3.4.tar.gz
It should be two spaces after "md5"

> +# Locally computed:
> +sha256 1a620cf5b2dd4b00006d6c929ac8e2a70eeab5f807a0d6e5334b878aa182b713  mg-3.4.tar.gz
> +sha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c  UNLICENSE
For the two lines above, it should be two spaces after "sha256"

> diff --git a/package/mg/mg.mk b/package/mg/mg.mk
> new file mode 100644
> index 0000000000..c8df6eddc6
> --- /dev/null
> +++ b/package/mg/mg.mk
> @@ -0,0 +1,24 @@
> +################################################################################
> +#
> +# mg2a
> +#
> +################################################################################
> +
> +MG_VERSION = 3.4
> +MG_SITE = https://github.com/troglobit/mg/releases/download/v$(MG_VERSION)
> +MG_LICENSE = Public Domain
> +MG_LICENSE_FILES = UNLICENSE
> +
> +ifeq ($(BR2_PACKAGE_NCURSES),y)
> +MG_DEPENDENCIES += ncurses
We prefer to force the options, so you should have a "MG_CONF_OPTS =
--with-curses" here

> +else
> +MG_CONF_OPTS += --without-curses
> +endif
> +
> +define MG_INSTALL_TARGET_CMDS
> +       $(INSTALL) -m 0755 -D $(@D)/tutorial $(TARGET_DIR)/usr/share/doc/tutorial
> +       gzip -9 $(TARGET_DIR)/usr/share/doc/tutorial
We prefer not to install documentation on the target to keep the
footprint small. Can you please remove the two lines above?

> +       $(INSTALL) -m 0755 -D $(@D)/src/mg $(TARGET_DIR)/usr/bin/mg
> +endef
> +
> +$(eval $(autotools-package))
> --
> 2.25.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
One last comment: did you run the the test-pkg script to check for any
potential issues with some architectures and build options?

Can you please send a v2 with the fixes proposed above?

thanks
Gilles.
Thomas Petazzoni Aug. 30, 2020, 8:06 p.m. UTC | #2
Hello,

Thanks for your contribution!

On Sun, 30 Aug 2020 11:00:51 +0200
Joachim Wiberg <troglobit@gmail.com> wrote:

> diff --git a/package/mg/mg.hash b/package/mg/mg.hash
> new file mode 100644
> index 0000000000..6b3c400faa
> --- /dev/null
> +++ b/package/mg/mg.hash
> @@ -0,0 +1,5 @@
> +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/

Is this a bad copy paste ?

> diff --git a/package/mg/mg.mk b/package/mg/mg.mk
> new file mode 100644
> index 0000000000..c8df6eddc6
> --- /dev/null
> +++ b/package/mg/mg.mk
> @@ -0,0 +1,24 @@
> +################################################################################
> +#
> +# mg2a

Should be just "mg"

> +#
> +################################################################################
> +
> +MG_VERSION = 3.4
> +MG_SITE = https://github.com/troglobit/mg/releases/download/v$(MG_VERSION)
> +MG_LICENSE = Public Domain
> +MG_LICENSE_FILES = UNLICENSE
> +
> +ifeq ($(BR2_PACKAGE_NCURSES),y)
> +MG_DEPENDENCIES += ncurses

Could you add:

MG_CONF_OPTS += --with-curses

or whatever is needed to explicitly enable ncurses support ?

> +else
> +MG_CONF_OPTS += --without-curses
> +endif
> +
> +define MG_INSTALL_TARGET_CMDS
> +	$(INSTALL) -m 0755 -D $(@D)/tutorial $(TARGET_DIR)/usr/share/doc/tutorial
> +	gzip -9 $(TARGET_DIR)/usr/share/doc/tutorial

/usr/share/doc gets dropped from $(TARGET_DIR) during the
target-finalize step, so installing documentation there is not useful.

> +	$(INSTALL) -m 0755 -D $(@D)/src/mg $(TARGET_DIR)/usr/bin/mg
> +endef
> +
> +$(eval $(autotools-package))

Thanks!

Thomas
Joachim Wiberg Aug. 31, 2020, 7:45 p.m. UTC | #3
On Sun Aug 30, 2020 at 5:27 PM CEST, Gilles Talis wrote:
> Hello Joachim,

Hi Gilles!

> thanks for your contribution.
> Please find a few comments below.

Thank you for taking the time to review :)

> Le dim. 30 août 2020 à 11:01, Joachim Wiberg <troglobit@gmail.com> a
> You need to add an entry to the DEVELOPERS file with your name and
> package, so that you are identified as the maintainer for this
> package. Please take a look at the DEVELOPERS file.

Didn't know that was mandatory, fixing

> > +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/
> I assume you meant: "from:
> https://github.com/troglobit/mg/releases/download/v3.4/mg-3.4.tar.gz.md5"

Yeah, copy-paste error.  I actually managed to b0rk that whole file,
sorry about that.

> > +md5 6b79855d54770bcb23e5457ebde8296c  mg-3.4.tar.gz
> It should be two spaces after "md5"
> > +# Locally computed:
> > +sha256 1a620cf5b2dd4b00006d6c929ac8e2a70eeab5f807a0d6e5334b878aa182b713  mg-3.4.tar.gz
> > +sha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c  UNLICENSE
> For the two lines above, it should be two spaces after "sha256"

You mean after the hash, right?  The joe.hash and busybox.hash files don't have
double spaces after the leading keyword (md5/sha256).

> > +ifeq ($(BR2_PACKAGE_NCURSES),y)
> > +MG_DEPENDENCIES += ncurses
> We prefer to force the options, so you should have a "MG_CONF_OPTS =
> --with-curses" here

Odd, but OK, fixing

> > +define MG_INSTALL_TARGET_CMDS
> > +       $(INSTALL) -m 0755 -D $(@D)/tutorial $(TARGET_DIR)/usr/share/doc/tutorial
> > +       gzip -9 $(TARGET_DIR)/usr/share/doc/tutorial
> We prefer not to install documentation on the target to keep the
> footprint small. Can you please remove the two lines above?

I realized the whole usr/share/doc directory is pruned from the target
dir anyway.  The intention was to keep the built-in `C-h t` tutorial,
but I guess the *quick* help will have to do.

Thanks, fixing

> One last comment: did you run the the test-pkg script to check for any
> potential issues with some architectures and build options?

Did not know about that, will try it out, thanks! :)

> Can you please send a v2 with the fixes proposed above?

Will do!

Best regards
 /Joachim
Joachim Wiberg Aug. 31, 2020, 7:53 p.m. UTC | #4
On Sun Aug 30, 2020 at 10:06 PM CEST, Thomas Petazzoni wrote:
> Thanks for your contribution!

Thanks, and thank you for the review!

> On Sun, 30 Aug 2020 11:00:51 +0200 Joachim Wiberg <troglobit@gmail.com> wrote:
> > +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/
> Is this a bad copy paste ?

Indeed.

> > +# mg2a
> Should be just "mg"

OK, fixing

> > +ifeq ($(BR2_PACKAGE_NCURSES),y)
> > +MG_DEPENDENCIES += ncurses
> Could you add:
> MG_CONF_OPTS += --with-curses
> or whatever is needed to explicitly enable ncurses support ?

It's auto-detected, but will do.

> > +define MG_INSTALL_TARGET_CMDS
> > +	$(INSTALL) -m 0755 -D $(@D)/tutorial $(TARGET_DIR)/usr/share/doc/tutorial
> > +	gzip -9 $(TARGET_DIR)/usr/share/doc/tutorial
> /usr/share/doc gets dropped from $(TARGET_DIR) during the
> target-finalize step, so installing documentation there is not useful.

Yeah I realized.  It's actually referenced from withing Mg using C-h t,
should that be patched out then?

Best regards
 /Joachim
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index d7e79f4795..db2563f789 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2431,6 +2431,7 @@  menu "Text editors and viewers"
 	source "package/joe/Config.in"
 	source "package/less/Config.in"
 	source "package/mc/Config.in"
+	source "package/mg/Config.in"
 	source "package/most/Config.in"
 	source "package/nano/Config.in"
 	source "package/uemacs/Config.in"
diff --git a/package/mg/Config.in b/package/mg/Config.in
new file mode 100644
index 0000000000..11e5bdb273
--- /dev/null
+++ b/package/mg/Config.in
@@ -0,0 +1,18 @@ 
+config BR2_PACKAGE_MG
+	bool "mg"
+	depends on BR2_USE_MMU # fork()
+	help
+	  Emacs-like text editor (130 kiB)
+
+	  Mg is a MicroEMACS clone with the goal of being compatible
+	  with GNU Emacs, because there should never be any reason to
+	  learn more than one Emacs flavor.
+
+	  Unlike many other editors it does not require ncurses, only a
+	  standard C library, making it suitable for really small and
+	  embedded systems.
+
+	  This version is based on mg2a from OpenBSD, with more features
+	  and, in particular, no requirement on ncurses or termcap.
+
+	  https://github.com/troglobit/mg/
diff --git a/package/mg/mg.hash b/package/mg/mg.hash
new file mode 100644
index 0000000000..6b3c400faa
--- /dev/null
+++ b/package/mg/mg.hash
@@ -0,0 +1,5 @@ 
+# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/
+md5 6b79855d54770bcb23e5457ebde8296c  mg-3.4.tar.gz
+# Locally computed:
+sha256 1a620cf5b2dd4b00006d6c929ac8e2a70eeab5f807a0d6e5334b878aa182b713  mg-3.4.tar.gz
+sha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c  UNLICENSE
diff --git a/package/mg/mg.mk b/package/mg/mg.mk
new file mode 100644
index 0000000000..c8df6eddc6
--- /dev/null
+++ b/package/mg/mg.mk
@@ -0,0 +1,24 @@ 
+################################################################################
+#
+# mg2a
+#
+################################################################################
+
+MG_VERSION = 3.4
+MG_SITE = https://github.com/troglobit/mg/releases/download/v$(MG_VERSION)
+MG_LICENSE = Public Domain
+MG_LICENSE_FILES = UNLICENSE
+
+ifeq ($(BR2_PACKAGE_NCURSES),y)
+MG_DEPENDENCIES += ncurses
+else
+MG_CONF_OPTS += --without-curses
+endif
+
+define MG_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/tutorial $(TARGET_DIR)/usr/share/doc/tutorial
+	gzip -9 $(TARGET_DIR)/usr/share/doc/tutorial
+	$(INSTALL) -m 0755 -D $(@D)/src/mg $(TARGET_DIR)/usr/bin/mg
+endef
+
+$(eval $(autotools-package))