nit.git
6 years agoMerge: Nitcatalog for nitpm
Jean Privat [Mon, 7 May 2018 23:57:32 +0000 (19:57 -0400)]
Merge: Nitcatalog for nitpm

This move the packages fetched by nitpm to nitlanguage.org and use the nitcatalog infrastructure to publish and update the ini files.

The list of public packages is now in `contrig/nitpm_packages.txt` (was `oot.txt`) and new public packages can be added to the file trough PR and review by the community.

Note that there is nothing yet to check the sanity of public pagkage (nor do any long run quality assurance).

Pull-Request: #2650
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoMerge: pnacl: remove target and related projects
Jean Privat [Mon, 7 May 2018 23:57:31 +0000 (19:57 -0400)]
Merge: pnacl: remove target and related projects

Since PNaCl is now deprecated for all targets, and since nobody use the
platform or the contributed online_ide, we remove the packages from the
repo.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2651

6 years agoMerge: share/man: update man page for nitweb
Jean Privat [Mon, 7 May 2018 23:57:30 +0000 (19:57 -0400)]
Merge: share/man: update man page for nitweb

This PR fixes the warning thrown by check-manpages.sh for the `nitweb` tool.

Pull-Request: #2654

6 years agoshare/man: update man page for nitweb
Alexandre Terrasa [Mon, 7 May 2018 20:34:56 +0000 (16:34 -0400)]
share/man: update man page for nitweb

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agocontrib: add an official nitpm_packages.txt list of repositories
Jean Privat [Mon, 7 May 2018 17:56:17 +0000 (13:56 -0400)]
contrib: add an official nitpm_packages.txt list of repositories

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agopnacl: remove target and related projects
Lucas Bajolet [Mon, 7 May 2018 16:39:12 +0000 (12:39 -0400)]
pnacl: remove target and related projects

Since PNaCl is now deprecated for all targets, and since nobody use the
platform or the contributed online_ide, we remove the packages from the
repo.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agocontrib/oot.sh: the name is optional (if guessable from the reponame)
Jean Privat [Mon, 7 May 2018 15:53:48 +0000 (11:53 -0400)]
contrib/oot.sh: the name is optional (if guessable from the reponame)

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agonitpm: use the inifiles exposed by the nit catalog
Jean Privat [Mon, 7 May 2018 16:30:49 +0000 (12:30 -0400)]
nitpm: use the inifiles exposed by the nit catalog

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agonitcatalog: copy the ini files in p/name.ini
Jean Privat [Mon, 7 May 2018 16:30:19 +0000 (12:30 -0400)]
nitcatalog: copy the ini files in p/name.ini

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agoMerge: lib/socket: fix socket_c documentation
Jean Privat [Mon, 7 May 2018 12:47:59 +0000 (08:47 -0400)]
Merge: lib/socket: fix socket_c documentation

The socket_c module contained a lot of undocumented functions and
classes, which in turn caused nitpick to be too verbous on subsequent
modules when editing.

This commit fixes all the documentation warnings left in the module.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2643

6 years agolib/socket: fix socket documentation
Lucas Bajolet [Wed, 2 May 2018 19:18:07 +0000 (15:18 -0400)]
lib/socket: fix socket documentation

The socket modules contained a lot of undocumented functions and
classes, which in turn caused nitpick to be too verbous on subsequent
modules when editing.

This commit fixes all the documentation warnings left in the modules.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agoMerge: lib: expand packages
Jean Privat [Fri, 4 May 2018 19:37:05 +0000 (15:37 -0400)]
Merge: lib: expand packages

I'm currently working on generating README files for packages that don't already have one.
The first step is to create a directory for each package (I call it *expanding* the package).

In this PR, I move all singleton packages to their own directory:
* `lib/a_star.nit` --> `lib/a_star/a_star.nit`
* `lib/x11.nit` --> `lib/x11/x11.nit`
* ...

The `package.ini` file is also moved and renamed.

I used the `nitreadme` bin to do that:

~~~sh
nitreadme --expand lib/
~~~

Next step will be to create the README.md file into the newly created directory.

Pull-Request: #2637
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

6 years agoMerge: doc/commands: introduce CmdEntityLink command
Jean Privat [Fri, 4 May 2018 19:37:03 +0000 (15:37 -0400)]
Merge: doc/commands: introduce CmdEntityLink command

This PR introduce the CmdEntityLink command.

The link command is used to create a link from the generated documentation file to an external resource.

Command forms:
* `[[popcorn]]` generates a link to the `popcorn` package documentation resource.
* `[[popcorn | text: foo, title: bar]]` allows customization of link text and title.

The resource URL depends on the tool.

For example:
* `nitweb` (when the command is used in `docdown` or in a `README`) renders a link to the HTML documentation page on the server
* `nitdoc` (TODO) renders a link to the static documentation page
* `nitx` replaces the link commands by the comment commands (that contains the file location)

Pull-Request: #2641
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

6 years agoMerge: Write byte updates
Jean Privat [Fri, 4 May 2018 19:37:01 +0000 (15:37 -0400)]
Merge: Write byte updates

More in the Stream refactor series, this commit adds a low-level byte writing method, to be re-implemented when needed. The read_bytes service can now be defined in writer only, as a wrapper to the lower-level service.

Pull-Request: #2642

6 years agoMerge: doc/commands: add tests for html rendering
Jean Privat [Fri, 4 May 2018 19:37:00 +0000 (15:37 -0400)]
Merge: doc/commands: add tests for html rendering

As mentioned by @R4PaSs in #2641, there is no tests for the HTML rendering of commands.

This PR adds nitunit tests for the `commands_html.nit` module.

Pull-Request: #2644
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

6 years agoMerge: nitpick: do not warn in not explicitly required modules
Jean Privat [Fri, 4 May 2018 19:36:59 +0000 (15:36 -0400)]
Merge: nitpick: do not warn in not explicitly required modules

The infrastructure was already in toocontext, now nitpick uses it.

Pull-Request: #2645

6 years agoMerge: tests/nitunit: test that private methods are nitunited
Jean Privat [Fri, 4 May 2018 19:36:57 +0000 (15:36 -0400)]
Merge: tests/nitunit: test that private methods are nitunited

The code date from #360

close #1603

Pull-Request: #2646

6 years agoMerge: Remove the binary serialization service
Jean Privat [Fri, 4 May 2018 19:36:56 +0000 (15:36 -0400)]
Merge: Remove the binary serialization service

This PR simply removes the binary::serialization module and its tests. Clients should use `msgpack` instead.

The binary serialization service was mostly a test of the serialization framework, it uses a custom format that is hard to debug, it does not subtype check the data before deserialization, and it has no more clients. In comparison, the msgpack serialization service uses a standardized format, it is debuggable and it is generally more space efficient.

Pull-Request: #2647

6 years agotests: update tests for `c` module
Alexandre Terrasa [Fri, 4 May 2018 16:04:52 +0000 (12:04 -0400)]
tests: update tests for `c` module

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agotests: add sav for nitpackage
Alexandre Terrasa [Fri, 4 May 2018 16:04:29 +0000 (12:04 -0400)]
tests: add sav for nitpackage

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agoshare/man: add manpage for `nitpackage`
Alexandre Terrasa [Wed, 2 May 2018 19:59:56 +0000 (15:59 -0400)]
share/man: add manpage for `nitpackage`

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agolib/: expand all packages in their own directories
Alexandre Terrasa [Tue, 1 May 2018 17:08:26 +0000 (13:08 -0400)]
lib/: expand all packages in their own directories

Using `nitreadme lib/ --expand`

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agolib/core: add low-level byte writing method
Lucas Bajolet [Tue, 1 May 2018 21:36:06 +0000 (17:36 -0400)]
lib/core: add low-level byte writing method

Akin to the read without overhead, this commit adds a low-level service
to write bytes to a Writer stream.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agobinary: remove the serialization service, clients should use msgpack
Alexis Laferrière [Fri, 4 May 2018 14:54:20 +0000 (10:54 -0400)]
binary: remove the serialization service, clients should use msgpack

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agotests/nitunit: test that private methods are nitunited
Jean Privat [Fri, 4 May 2018 00:39:32 +0000 (20:39 -0400)]
tests/nitunit: test that private methods are nitunited

The code date from #360

close #1603

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agoMerge: parse_examples: minor fixes
Jean Privat [Thu, 3 May 2018 23:15:49 +0000 (19:15 -0400)]
Merge: parse_examples: minor fixes

This PR fixes two things:
1. call `visit_all` so statements are all visited
2. also count newly instanciated mclasses

Pull-Request: #2639

6 years agonitpick: do not warn in not explicitly required modules
Jean Privat [Thu, 3 May 2018 19:11:01 +0000 (15:11 -0400)]
nitpick: do not warn in not explicitly required modules

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agoparse_examples: count new on classes
Alexandre Terrasa [Thu, 3 May 2018 15:20:36 +0000 (11:20 -0400)]
parse_examples: count new on classes

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agoMerge: No intrude rope stream
Jean Privat [Thu, 3 May 2018 13:46:32 +0000 (09:46 -0400)]
Merge: No intrude rope stream

Two things happening here, in two commits:

* the first commit moves the definition of `decoder` into Stream, and renames it to `codec` since both coding/decoding will be used by streams when dealing with String semantics.
* the second commit removes the `intrude inport ropes` from stream as this was not necessary, and performance-wise did not matter sufficiently to justify this

Pull-Request: #2632
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoMerge: Read byte rewrite
Jean Privat [Thu, 3 May 2018 13:44:24 +0000 (09:44 -0400)]
Merge: Read byte rewrite

As part of the stream refactor series, this patches cleanup msgpack a bit and introduce a lower-level `read_byte` implementation on which `read_byte(s)` will rely for reading data from a source.

In the future, the lowest-level interface to read bytes, and the only one required for implementing a new stream will be the `raw_read_byte(s)` functions.

A cleanup of the current streams will be needed for this to be used properly, coming in the next few PRs.

Note: The first two commits have already been submitted under #2632, therefore disregard them for this PR.

Pull-Request: #2633
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoMerge: nitmetrics: metrics about ReadMe files
Jean Privat [Thu, 3 May 2018 13:44:21 +0000 (09:44 -0400)]
Merge: nitmetrics: metrics about ReadMe files

This PR add an option `--readme` to extract metrics about ReadMe / Markdown files.

Running the following command:

~~~sh
nitmetrics --readme tests/test_prog
~~~

Will produce the following output:

~~~md
*** METRICS ***

# ReadMe metrics

 ## package test_prog (test_prog/README.md)
  * has_package 1
  * has_readme 1
  * md_lines 12
  * nb_section 0
  * md_blocks 14
  * BlockParagraph 4
  * BlockUnorderedList 1
  * BlockListItem 4
  * SpanCode 4
  * Image 1
~~~

Pull-Request: #2634
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>

6 years agoMerge: Some lib/graph love
Jean Privat [Thu, 3 May 2018 13:44:19 +0000 (09:44 -0400)]
Merge: Some lib/graph love

I needed an Eulerian circuit so I implemented a quick and dirty one

Pull-Request: #2635
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

6 years agoMerge: model_collect: collect all modules from a package
Jean Privat [Thu, 3 May 2018 13:44:18 +0000 (09:44 -0400)]
Merge: model_collect: collect all modules from a package

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

Pull-Request: #2638

6 years agoMerge: lib/msgpack: unify several cases for deserialization
Jean Privat [Thu, 3 May 2018 13:44:16 +0000 (09:44 -0400)]
Merge: lib/msgpack: unify several cases for deserialization

Some cases were treated independently while retaining mostly the same
code.

This commit tries to unite such cases into a single branch.

Doing so helps readability, reduces code duplication and should
hopefully improve performance as the number of tests to be performed is
lower.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2640
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agodoc/api: allow entity url customization
Alexandre Terrasa [Wed, 2 May 2018 22:54:55 +0000 (18:54 -0400)]
doc/api: allow entity url customization

Also update tests for HTML since the URLs are different.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: DocDown accept CmdEntityLink commands
Alexandre Terrasa [Tue, 1 May 2018 19:34:51 +0000 (15:34 -0400)]
doc/commands: DocDown accept CmdEntityLink commands

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: term accept CmdEntityLink commands
Alexandre Terrasa [Tue, 1 May 2018 19:33:56 +0000 (15:33 -0400)]
doc/commands: term accept CmdEntityLink commands

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: do not accept empty CmdEntity names
Alexandre Terrasa [Tue, 1 May 2018 19:33:35 +0000 (15:33 -0400)]
doc/commands: do not accept empty CmdEntity names

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: parse CmdEntityLink command strings
Alexandre Terrasa [Tue, 1 May 2018 19:33:14 +0000 (15:33 -0400)]
doc/commands: parse CmdEntityLink command strings

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: generate CmdEntityLink command to HTML
Alexandre Terrasa [Tue, 1 May 2018 19:32:43 +0000 (15:32 -0400)]
doc/commands: generate CmdEntityLink command to HTML

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: generate CmdEntityLink to JSON
Alexandre Terrasa [Tue, 1 May 2018 19:30:41 +0000 (15:30 -0400)]
doc/commands: generate CmdEntityLink to JSON

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: parse CmdEntityLink commands from http
Alexandre Terrasa [Tue, 1 May 2018 19:30:11 +0000 (15:30 -0400)]
doc/commands: parse CmdEntityLink commands from http

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: introduce CmdEntityLink command
Alexandre Terrasa [Tue, 1 May 2018 19:29:46 +0000 (15:29 -0400)]
doc/commands: introduce CmdEntityLink command

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: fix linearization warnings for commands HTML rendering
Alexandre Terrasa [Wed, 2 May 2018 22:40:52 +0000 (18:40 -0400)]
doc/commands: fix linearization warnings for commands HTML rendering

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: fix HTML rendering for CmdEntity
Alexandre Terrasa [Wed, 2 May 2018 22:40:19 +0000 (18:40 -0400)]
doc/commands: fix HTML rendering for CmdEntity

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agodoc/commands: add tests for commands_html
Alexandre Terrasa [Wed, 2 May 2018 22:39:54 +0000 (18:39 -0400)]
doc/commands: add tests for commands_html

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agonitreadme: introduce `nitreadme` a tool to manage README files
Alexandre Terrasa [Tue, 1 May 2018 17:06:51 +0000 (13:06 -0400)]
nitreadme: introduce `nitreadme` a tool to manage README files

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agolib/core: add no-overhead read_bytes implementation
Lucas Bajolet [Wed, 25 Apr 2018 20:27:31 +0000 (16:27 -0400)]
lib/core: add no-overhead read_bytes implementation

read_bytes as a simple interface is relevant, but may hinder
performances in case a chunk is repeatedly read and discarded as for
each read operation, a buffer is re-allocated.

A secondary read operation is introduced to read directly to a CString,
using closer-to-C semantics.

Also start using codec lookahead as source for reading bytes.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agotests: add test for --readme option from nitmetrics
Alexandre Terrasa [Tue, 1 May 2018 15:34:36 +0000 (11:34 -0400)]
tests: add test for --readme option from nitmetrics

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agonitmetrics: extract metrics about Readme/Markdown files
Alexandre Terrasa [Tue, 1 May 2018 15:34:14 +0000 (11:34 -0400)]
nitmetrics: extract metrics about Readme/Markdown files

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agolib/msgpack: unify several cases for deserialization
Lucas Bajolet [Mon, 30 Apr 2018 22:23:39 +0000 (18:23 -0400)]
lib/msgpack: unify several cases for deserialization

Some cases were treated independently while retaining mostly the same
code.

This commit tries to unite such cases into a single branch.

Doing so helps readability, reduces code duplication and should
hopefully improve performance as the number of tests to be performed is
lower.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agolib/core: remove ropes intrude import in stream
Lucas Bajolet [Fri, 6 Apr 2018 05:57:29 +0000 (01:57 -0400)]
lib/core: remove ropes intrude import in stream

The intrude import of ropes in lib/core/stream was only due to the
ropification of the read_all_bytes.

As the leaves were too small to have a positive impact with the actual
threshold value being chosen here, we remove the ropification in the
read_all function.

This simplifies code a lot, and keeps out the intrude import of the
ropes module.

We also take advantage of this modification to start using codecs here
to decode the string.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agostream: move decoder to stream and rename as codec
Lucas Bajolet [Fri, 6 Apr 2018 02:15:28 +0000 (22:15 -0400)]
stream: move decoder to stream and rename as codec

Since every stream will need to pass through a codec to code/decode to
and from textual data, the former 'decoder' attribute is now moved to
Stream and renamed to better reflect its use.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agolib/core: remove ropes intrude import in stream
Lucas Bajolet [Fri, 6 Apr 2018 05:57:29 +0000 (01:57 -0400)]
lib/core: remove ropes intrude import in stream

The intrude import of ropes in lib/core/stream was only due to the
ropification of the read_all_bytes.

As the leaves were too small to have a positive impact with the actual
threshold value being chosen here, we remove the ropification in the
read_all function.

This simplifies code a lot, and keeps out the intrude import of the
ropes module.

We also take advantage of this modification to start using codecs here
to decode the string.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agostream: move decoder to stream and rename as codec
Lucas Bajolet [Fri, 6 Apr 2018 02:15:28 +0000 (22:15 -0400)]
stream: move decoder to stream and rename as codec

Since every stream will need to pass through a codec to code/decode to
and from textual data, the former 'decoder' attribute is now moved to
Stream and renamed to better reflect its use.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agoparse_examples: visit all statements
Alexandre Terrasa [Tue, 1 May 2018 17:47:25 +0000 (13:47 -0400)]
parse_examples: visit all statements

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agomodel_collect: collect all modules from a package
Alexandre Terrasa [Tue, 1 May 2018 17:44:08 +0000 (13:44 -0400)]
model_collect: collect all modules from a package

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

6 years agolib/graph: add `Digraph::eulerian_path`
Jean Privat [Tue, 1 May 2018 15:41:53 +0000 (11:41 -0400)]
lib/graph: add `Digraph::eulerian_path`

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agolib/graph: add MutableDigraph::add_graph
Jean Privat [Tue, 1 May 2018 15:40:52 +0000 (11:40 -0400)]
lib/graph: add MutableDigraph::add_graph

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agolib/graph: remove unneeded import in docunits
Jean Privat [Tue, 1 May 2018 15:39:48 +0000 (11:39 -0400)]
lib/graph: remove unneeded import in docunits

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agolib: rename graphs to graph
Jean Privat [Tue, 1 May 2018 15:01:30 +0000 (11:01 -0400)]
lib: rename graphs to graph

plurial in packagename is weird

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agoMerge: core/stream: change read_byte return type to Int
Jean Privat [Fri, 27 Apr 2018 16:19:33 +0000 (12:19 -0400)]
Merge: core/stream: change read_byte return type to Int

A read_byte used to return a nullable Byte, which could cause
unnecessary boxings, and thus could harm performance.

This commit changes its return to Int, and adopts a closer-to-C api,
returning a negative value when an error occurs.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2631

6 years agocore/stream: change read_byte return type to Int
Lucas Bajolet [Thu, 29 Mar 2018 19:57:22 +0000 (15:57 -0400)]
core/stream: change read_byte return type to Int

A read_byte used to return a nullable Byte, which could cause
unnecessary boxings, and thus could harm performance.

This commit changes its return to Int, and adopts a closer-to-C api,
returning a negative value when an error occurs.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agoMerge: nitc: do not autocast primitive types
Jean Privat [Fri, 6 Apr 2018 02:04:37 +0000 (22:04 -0400)]
Merge: nitc: do not autocast primitive types

Fix #2629

Pull-Request: #2630

6 years agoMerge: tests: fix locale issue on non-Debian linux
Jean Privat [Fri, 6 Apr 2018 02:04:36 +0000 (22:04 -0400)]
Merge: tests: fix locale issue on non-Debian linux

The C.UTF-8 locale is Debian-specific and causes issues on other
platforms.

To avoid setlocale error messages, the LC_ALL export will default on C
if C.UTF-8 is unavailable on the target platform.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2628

6 years agoMerge: gitignore: ignore nit_compile folders and contents
Jean Privat [Fri, 6 Apr 2018 02:04:36 +0000 (22:04 -0400)]
Merge: gitignore: ignore nit_compile folders and contents

nit_compile are a series of generated intermediate C files that should
not be versioned.

We therefore add them to the .gitignore to eliminate them from the
index.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

Pull-Request: #2627
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoMerge: console: don't color output when stdout is not a TTY (by default)
Jean Privat [Fri, 6 Apr 2018 02:04:35 +0000 (22:04 -0400)]
Merge: console: don't color output when stdout is not a TTY (by default)

Change the behavior of the `console` package to ignore color commands like `Text::green` when stdout is not a TTY. You can override this behavior by setting `force_console_colors = true`.

I made this change to color the output of nitpm, however, it can be useful to other tools to support stdout redirection by default.

Pull-Request: #2626

6 years agoMerge: Extend nitpm (formerly picnit) to support package versions and dependencies
Jean Privat [Fri, 6 Apr 2018 02:01:35 +0000 (22:01 -0400)]
Merge: Extend nitpm (formerly picnit) to support package versions and dependencies

Rename picnit to nitpm and intro 4 main new features.

### Install package versions

Install specific versions of a package using the following command:

~~~
nitpm install gamnit=0.5
~~~

The version string (the `0.5` in the above example) must be a Git branch or tag, it will be used when cloning the package locally. The package will be downloaded to `~/.local/lib/nit/gamnit=0.5/`, allowing multiple versions of the same package to be installed concurrently.

### Dependencies in package.ini

Packages should now declare dependencies to other nitpm packages in the `package.ini` at the `import` key:

~~~
[package]
name=my_package
import=hello_nitpm, gamnit=0.5
~~~

The dependencies can then be installed automatically with `nitpm install` from the root of the package.

Nit tools read the local `package.ini` to redirect imports of `gamnit` inside this package to this specific version. So for `my_package` described above, all references to `gamnit` will use the implementation `gamnit=0.5`.

### Recursive installation

nitpm installs dependencies recursively, so if `gamnit` requires `glesv2`, after an explicit command to install `gamnit` nitpm will also install `glesv2`. This implementation is minimal, it could be improved by precalculating all dependencies and asking for confirmation.

### Customizable install directory

You can now use the env var `NITPM_PATH` to set the path where libraries are installed. This will override the default path at `~/.local/lib/nit/`.

### Others

* `nitpm uninstall` can uninstall many packages at once, it is safer and it accepts the -f option to skip the confirmation.
* `nitpm list` lists packages in alphabetical order.

Pull-Request: #2622
Reviewed-by: Romain Chanoir <romain.chanoir@viacesi.fr>
Reviewed-by: Jean Privat <jean@pryen.org>

6 years agonitc: do not autocast primitive types
Jean Privat [Thu, 5 Apr 2018 18:05:46 +0000 (14:05 -0400)]
nitc: do not autocast primitive types

Signed-off-by: Jean Privat <jean@pryen.org>

6 years agotests: fix locale issue on non-Debian linux
Lucas Bajolet [Thu, 29 Mar 2018 19:53:46 +0000 (15:53 -0400)]
tests: fix locale issue on non-Debian linux

The C.UTF-8 locale is Debian-specific and causes issues on other
platforms.

To avoid setlocale error messages, the LC_ALL export will default on
C.UTF-8, the system utf-8 locale if unavailable, and on C if no better
choice is available.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agogitignore: ignore nit_compile folders and contents
Lucas Bajolet [Thu, 29 Mar 2018 03:20:12 +0000 (23:20 -0400)]
gitignore: ignore nit_compile folders and contents

nit_compile are a series of generated intermediate C files that should
not be versioned.

We therefore add them to the .gitignore to eliminate them from the
index.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

6 years agotests: remove colors from savs of nitls, nitlight, etc.
Alexis Laferrière [Thu, 29 Mar 2018 14:47:52 +0000 (10:47 -0400)]
tests: remove colors from savs of nitls, nitlight, etc.

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agorubix: force console colors because it makes no sense without it
Alexis Laferrière [Thu, 29 Mar 2018 14:51:14 +0000 (10:51 -0400)]
rubix: force console colors because it makes no sense without it

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoconsole: only color outputs if stdout isa TTY
Alexis Laferrière [Fri, 16 Mar 2018 14:42:22 +0000 (10:42 -0400)]
console: only color outputs if stdout isa TTY

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoMerge: Make the `do catch` great again
Jean Privat [Thu, 29 Mar 2018 00:11:33 +0000 (20:11 -0400)]
Merge: Make the `do catch` great again

This PR removes some of the limitations of the `do catch` :
* Hard-coded limit of 100 jumping environments is gone, the array is now dynamic
* The structure for managing jump environments is now lazy initialized
* Now using gcc's `__thread` specifier so that each thread has it's own jumping stack

Pull-Request: #2612
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

6 years agoMerge: share: shallow clone bdwgc for Android and iOS
Jean Privat [Thu, 29 Mar 2018 00:11:32 +0000 (20:11 -0400)]
Merge: share: shallow clone bdwgc for Android and iOS

When compiling a Nit app for Android, a specific branch of bdwgc/libgc/boehm-gc is cloned locally. Using a shallow clone only fetches the last commit, for a faster download and to use less disk space.

Closes #2621.

Pull-Request: #2624
Reviewed-by: Romain Chanoir <romain.chanoir@viacesi.fr>

6 years agoMerge: curl: basic Unix domain socket support
Jean Privat [Thu, 29 Mar 2018 00:11:31 +0000 (20:11 -0400)]
Merge: curl: basic Unix domain socket support

Support using a Unix socket to send an HTTP request.

~~~
var request = new CurlHTTPRequest("http://localhost/")
request.unix_socket_path = "/tmp/nginx.sock"
var response = request.execute
~~~

@matthmsl Is this what you needed for #2623?

Pull-Request: #2625
Reviewed-by: Romain Chanoir <romain.chanoir@viacesi.fr>

6 years agoconsole: move up services from String to Text, and update doc
Alexis Laferrière [Fri, 16 Mar 2018 14:40:44 +0000 (10:40 -0400)]
console: move up services from String to Text, and update doc

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoconsole: fix typos and doc
Alexis Laferrière [Fri, 16 Mar 2018 14:39:41 +0000 (10:39 -0400)]
console: fix typos and doc

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agotests: niti skips nitpm because it doesn't support curl callbacks
Alexis Laferrière [Mon, 5 Mar 2018 20:37:24 +0000 (15:37 -0500)]
tests: niti skips nitpm because it doesn't support curl callbacks

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agotests: updates test for nitpm with new services
Alexis Laferrière [Mon, 5 Mar 2018 15:54:18 +0000 (10:54 -0500)]
tests: updates test for nitpm with new services

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoshare: update picnit man page
Alexis Laferrière [Sat, 3 Mar 2018 20:53:20 +0000 (15:53 -0500)]
share: update picnit man page

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: tweak -h and -v to please check_manpages.sh
Alexis Laferrière [Mon, 5 Mar 2018 20:56:47 +0000 (15:56 -0500)]
nitpm: tweak -h and -v to please check_manpages.sh

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: protect uninstall from deleting parent folders
Alexis Laferrière [Sun, 4 Mar 2018 21:47:21 +0000 (16:47 -0500)]
nitpm: protect uninstall from deleting parent folders

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: uninstall accepts many packages and can be forced
Alexis Laferrière [Mon, 5 Mar 2018 15:54:50 +0000 (10:54 -0500)]
nitpm: uninstall accepts many packages and can be forced

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: list packages in alphabetical order
Alexis Laferrière [Sun, 4 Mar 2018 20:48:29 +0000 (15:48 -0500)]
nitpm: list packages in alphabetical order

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: rename from picnit
Alexis Laferrière [Sat, 3 Mar 2018 23:27:43 +0000 (18:27 -0500)]
nitpm: rename from picnit

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: keep going if a package is already installed
Alexis Laferrière [Sat, 3 Mar 2018 13:27:03 +0000 (08:27 -0500)]
nitpm: keep going if a package is already installed

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm/loader: use NITPM_PATH
Alexis Laferrière [Sat, 3 Mar 2018 13:24:49 +0000 (08:24 -0500)]
nitpm/loader: use NITPM_PATH

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoloader: search for the package version declared in package.ini
Alexis Laferrière [Mon, 26 Feb 2018 19:22:18 +0000 (14:22 -0500)]
loader: search for the package version declared in package.ini

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: recursively install imported packages
Alexis Laferrière [Fri, 2 Mar 2018 23:51:57 +0000 (18:51 -0500)]
nitpm: recursively install imported packages

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: support installing a specific package version
Alexis Laferrière [Fri, 2 Mar 2018 23:51:45 +0000 (18:51 -0500)]
nitpm: support installing a specific package version

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: install packages listed in package.ini by default
Alexis Laferrière [Sat, 3 Mar 2018 21:11:04 +0000 (16:11 -0500)]
nitpm: install packages listed in package.ini by default

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agonitpm: intro service to parse the import line in package.ini
Alexis Laferrière [Mon, 26 Feb 2018 21:19:09 +0000 (16:19 -0500)]
nitpm: intro service to parse the import line in package.ini

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoadditional tests for `do catch` structure
Romain Chanoir [Wed, 24 Jan 2018 20:37:21 +0000 (21:37 +0100)]
additional tests for `do catch` structure

Signed-off-by: Romain Chanoir <romain.chanoir@viacesi.fr>

6 years agoabstract_compiler: Multi threaded and dynamic `do catch` mecanism
Romain Chanoir [Wed, 24 Jan 2018 20:36:46 +0000 (21:36 +0100)]
abstract_compiler: Multi threaded and dynamic `do catch` mecanism

Signed-off-by: Romain Chanoir <romain.chanoir@viacesi.fr>

6 years agocurl: intro `CurlHTTPRequest::unix_socket_path`
Alexis Laferrière [Sun, 25 Mar 2018 12:49:59 +0000 (08:49 -0400)]
curl: intro `CurlHTTPRequest::unix_socket_path`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoshare: shallow clone bdwgc for Android and iOS
Alexis Laferrière [Sun, 25 Mar 2018 14:06:38 +0000 (10:06 -0400)]
share: shallow clone bdwgc for Android and iOS

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agocurl: cleanup, remove a typo and a callback from C to Nit
Alexis Laferrière [Sun, 25 Mar 2018 12:48:59 +0000 (08:48 -0400)]
curl: cleanup, remove a typo and a callback from C to Nit

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

6 years agoloader: fix typo in `search_module_by_amodule_name`
Alexis Laferrière [Mon, 26 Feb 2018 19:21:47 +0000 (14:21 -0500)]
loader: fix typo in `search_module_by_amodule_name`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>