ports/115216: ADA florist exit_process program doesn't compile due to internal error
Douglas Wells
sysmaint at contek.com
Sun Aug 5 14:10:01 UTC 2007
>Number: 115216
>Category: ports
>Synopsis: ADA florist exit_process program doesn't compile due to internal error
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Aug 05 14:10:00 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Douglas Wells
>Release: FreeBSD 6.2-RELEASE-p1 i386
>Organization:
>Environment:
System: FreeBSD flame.contek.com 6.2-RELEASE-p1 FreeBSD 6.2-RELEASE-p1 #0: Sun Feb 11 18:14:07 EST 2007 root at flame.contek.com:/other5/src.6.2/sys/i386/compile/FLAME.6.2 i386
GNAT: gnat-3.15p_1 / gnat-gcc-3.4.6_3
florist: florist-3.15p_1
(tools installed via ports compilation)
>Description:
A simple Ada program using devel/florist to access POSIX
process primitives encounters the error:
px_true.adb:2:06: file "posix-implementation-ok_signals.ads" not found
px_true.adb:2:06: "px_true (body)" depends on "posix.process_primitives (spec)"
px_true.adb:2:06: "posix.process_primitives (spec)" depends on "posix.signals (spec)"
px_true.adb:2:06: "posix.signals (spec)" depends on "posix.implementation.ok_signals (spec)"
gnatmake: "px_true.adb" compilation error
Note that posix-implementation-ok_signals.ads is internal
to florist.
>How-To-Repeat:
Use the command:
gnatmake -I/usr/local/lib/florist px_true.adb
with this test program:
------------------------- px_true.adb ------------------------
with POSIX.Process_Primitives;
procedure px_true is
package PPP renames POSIX.Process_Primitives;
begin
PPP.Exit_Process (0);
end px_true;
----------------------- end px_true.adb ----------------------
>Fix:
The problem arises because the configuration process has somehow
become confused about the use of threads. If, after running
"make configure", the Makefile is altered so that the line (~26):
SIGNALS_GENERATED =
is changed to:
SIGNALS_GENERATED = posix-implementation-ok_signals.ads
the resulting system properly creates and installs the
file posix-implementation-ok_signals.ads, but this results in
a system with errors due to duplicate signal values. This problem,
in turn, seems to arise because several BSD signals are only
defined in XSI mode or if a later version of POSIX is assumed.
If pconfig.h is then changed to include:
#define #define __XSI_VISIBLE 1
near the top, the resulting system properly compiles and
executes this program and several others with the command:
gnatmake -I/usr/local/lib/florist -gnato px_true.adb \
-L/usr/local/lib -largs -lflorist && ./px_true
Note that there is clearly an underlying problem in the
configuration mechanism that this workaround does not
address.
Also note that if the compilation is changed to include the
"-gnato" flag, execution of the program results in the error:
raised CONSTRAINT_ERROR : posix-signals.adb:1167 overflow check failed
which is also some form of internal error for which I have
not determined a workaround.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list