Skip to content

Releases: suve/GHActions-FPC

v0.4.0 - "user-defined" input, node16 running

11 Nov 10:52
Compare
Choose a tag to compare
This release adds the "user-defined" input, allowing users to ignore
some user-defined compiler messages. By default, no extra filtering
is done and both compiler built-in and user-defined messages are
handled the same.

In response to GitHub deprecating Node12 for running Actions,
this release switches to running on Node16, as recommended.
All dependencies have also been upgraded to their latest versions.

v0.3.2 - fold "found declaration" messages

30 Nov 22:55
Compare
Choose a tag to compare
This release improves support for "Wrong number of parameters" errors.
These are typically followed by FPC listing all functions/methods with
a matching name. Previously, the Action would parse all of those
compiler messages separately, resulting in generating error-level
annotations attached to each declaration. This release adds some code
for folding the list of declarations into the original error,
resulting in a more helpful annotation attached to the caller.

This release also introduces the 'exclude-path' input, allowing to
specify a list of directories and files which should be ignored
by the Action. Any compiler messages pertaining to excluded paths
will be ignored and no annotations will be generated. This does not
affect error-level messages, as those cause compilation to fail.

v0.3.1 - improved fatal error support

22 Oct 18:27
Compare
Choose a tag to compare
This release improves support for Fatal Errors, by having the Action
detect when FPC and GitHub disagree about how many lines a file has.
This would cause GH to ignore some annotations, dismissing them
as occuring past the end of file; they are now registered properly.

The logic for finding FPC on MS Windows has also been improved,
by making it search all possible locations before choosing
the latest version of the compiler, instead of picking
from the versions found in the first existing location.

Also, the 'fail-on' and 'verbosity' inputs have been made
case-insensitive, to match the way FPC treats verbosity options.

v0.3.0 - working sub-directory support

17 Oct 16:05
Compare
Choose a tag to compare
This release makes use of FPC's '-vb' option, which makes the compiler
use full file paths when printing diagnostic messages. This allows
for proper handling of files located in locations different than the
main source file, be it sub-directories or parent directories.

Because of the dependency on the '-vb' option, this release introduces
a minimum version requirement for FPC - 2.1.2. Said version has been
released in March 2007, so while it's doubtful that anyone actually
uses older releases, a check has been added to ensure that the version
used is compatible with this Action.

v0.2.0 - Initial annotation support

14 Oct 09:23
Compare
Choose a tag to compare
This version adds limited support for annotations.
It also introduces the 'fail-on' input,
allowing for "treat warnings as errors" behaviour.

Known issues that need resolving:
- FPC emits some errors, like "unexpected end of file",
  with a line number of one past end of file.
  For example, consider the following 4-line program:
    1 Program hello_infinite;
    2
    3 Begin
    4     Writeln('Oops, forgot to "End." the program!');
  When you try to compile it, you'll get the following error:
    hello.pas(5) Fatal: Unexpected end of file
  GitHub ignores any annotations where the specified line number
  exceeds the number of lines in the file. This could be fixed
  by adding some extra logic for "column-less" diagnostics,
  to make sure the line number doesn't go past end of file.

- FPC emits diagnostics using only the base name of the file.
  For example, if you have a directory structure like this:
    - main.pas
    - units/my_unit.pas
  Then a diagnostic for units/my_unit.pas will look like this:
    my_unit.pas(20,5) Note: Local variable "Counter" not used
  When the Action emits an annotation for "my_unit.pas", GitHub will
  notice that the file doestn't exist, and ignore it.
  This could be fixed by utilizing info output from FPC (i.e. '-vi'):
    Compiling main.pas
    Compiling /home/user/test/units/my_unit.pas
    my_unit.pas(20,5) Note: Local variable "Counter" not used
  Note how the "Compiling..." line contains the full path for
  my_unit.pas - by converting it to a path relative to the working
  directory, we could get the path of the file in the repository.
  This would require making the parser stateful,
  so caution is advised during implementation.

Extra issues which would be nice to get solved:
- FPC emits some messages which are most commonly ignored, e.g.:
    - Warning: "crtbegin.o" not found, this will probably
               cause a linking failure
    - Warning: "crtend.o" not found, this will probably
               cause a linking failure
  These are common when building GUI programs. Some people may find them
  useful, though, so ignoring these should be optional.

- FPC emits a Fatal when a file contains errors and end of file
  is reached:
    Fatal: There were 5 errors compiling module, stopping
  We already create annotations for errors, and "5 errors found" is
  redundant information either way, so this should be ignored.

v0.1.0 - initial public release

13 Oct 17:07
Compare
Choose a tag to compare
Initial public release with limited functionality.