adacore / xmlada Goto Github PK
View Code? Open in Web Editor NEWThe XML/Ada toolkit.
License: Other
The XML/Ada toolkit.
License: Other
Starting a week ago, bootstraping a new toolchain based on development sources started to fail. Building on linux (Ubuntu Focal LTS) with the general steps of 1) starting with the Ubuntu provided 9.3 compiler and an empty /usr/local directory 2) build and install a new gcc (c,c++,ada) from github:/gcc-mirror/gcc-mirror/gcc, 2) build/install gprbuild-bootstrap, and then 3) build xmlada, which fails with:
raised STORAGE_ERROR : stack overflow or erroneous memory access
gprbuild: *** compilation phase failed
compilation of schema-validators.adb failed
This behavior started with commit gcc-mirror/gcc@ae99b31. Pinning gcc source to commits prior appears to be a reasonable workaround at this time.
A few more details are available at steve-cs/gnat-builder#24
Has AdaCore seen it or can confirm or could use help reproducing?
The 2018 products from Adacore seem to be out, but unlike previous years, there's no gpl-2018 branch, nor is there a tag or release that points to the equivalent of the 2018 GPL release.
What branch and tag represents xmlada GPL-2018?
Perhaps it should be tagged and/or branched to match previous years.
I configured my gprbuild bootstrap with --libexecdir=/usr/lib
(see AdaCore/gprbuild#2 (comment)) but when building xmlada with the following:
./configure --prefix=/usr --enable-shared
make relocatable
I get these errors:
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking whether gnat can build shared libs... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
configure: creating ./config.status
config.status: creating shared.gpr
config.status: creating Makefile
config.status: creating tests/dom/default.gpr
gprbuild -j0 -m -p -XLIBRARY_TYPE=relocatable -XBUILD=Production -XPROCESSORS=0 xmlada.gpr
gprbuild: could not locate library builder "/usr/libexec/gprbuild/gprlib"
Makefile:55: recipe for target 'relocatable' failed
While the file /usr/lib/gprbuild/gprlib
does exist, gprbuild
seems to be looking for it in /usr/libexec
instead. I can't seem to find anything in the xmlada repo which relates to this search path, is it something gprbuild
itself hardwires?
Commit cc01d58 introduced in community-2018 release causes regression on RedHat and probably also Fedora systems:
rpmbuild usually applies a %configure macro during build process. This macro sets the build and the host platform and passes them as parameter to the configure script. But not the target platform. This is not an issue, as configure --help clearly states the following strategy:
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
configure assumes the target platform to be the same as the host platform, if not explicitly specified.
Commit cc01d58 violates this strategy. If --host is passed but not --target $target_alias is NULL, i. e. different from $host_alias, configure tries to check gprbuild's shared library support for an unspecified target platform (NULL), which leads to following failure:
gprbuild: illegal option "--target=" on the command line
Check will always fail regardless if the host=target platform supports shared GNAT libraries or not.
When xmlada is built with the usual method of ./configure && make all install
, all produced xmlada library files are suffixed with 18.0w - due to that version being hardcoded into configure
script (& configure.in
)
lrwxrwxrwx 1 cpigott domain users 53 Oct 7 15:42 libxmlada_dom.so -> ../lib/xmlada/xmlada_dom.relocatable/libxmlada_dom.so
lrwxrwxrwx 1 cpigott domain users 59 Oct 7 15:42 libxmlada_dom.so.18.0w -> ../lib/xmlada/xmlada_dom.relocatable/libxmlada_dom.so.18.0w
lrwxrwxrwx 1 cpigott domain users 65 Oct 7 15:42 libxmlada_input_sources.so -> ../lib/xmlada/xmlada_input.relocatable/libxmlada_input_sources.so
lrwxrwxrwx 1 cpigott domain users 71 Oct 7 15:42 libxmlada_input_sources.so.18.0w -> ../lib/xmlada/xmlada_input.relocatable/libxmlada_input_sources.so.18.0w
lrwxrwxrwx 1 cpigott domain users 53 Oct 7 15:42 libxmlada_sax.so -> ../lib/xmlada/xmlada_sax.relocatable/libxmlada_sax.so
lrwxrwxrwx 1 cpigott domain users 59 Oct 7 15:42 libxmlada_sax.so.18.0w -> ../lib/xmlada/xmlada_sax.relocatable/libxmlada_sax.so.18.0w
lrwxrwxrwx 1 cpigott domain users 59 Oct 7 15:42 libxmlada_schema.so -> ../lib/xmlada/xmlada_schema.relocatable/libxmlada_schema.so
lrwxrwxrwx 1 cpigott domain users 65 Oct 7 15:42 libxmlada_schema.so.18.0w -> ../lib/xmlada/xmlada_schema.relocatable/libxmlada_schema.so.18.0w
lrwxrwxrwx 1 cpigott domain users 61 Oct 7 15:42 libxmlada_unicode.so -> ../lib/xmlada/xmlada_unicode.relocatable/libxmlada_unicode.so
lrwxrwxrwx 1 cpigott domain users 67 Oct 7 15:42 libxmlada_unicode.so.18.0w -> ../lib/xmlada/xmlada_unicode.relocatable/libxmlada_unicode.so.18.0w
This is an issue when building xmlada manually, i.e. getting the release archive via alr alr get xmlada
(my particular usecase is using it as a dependency of libadalang)
At the very least the version should be overridable, which it isn't as far as I can see (I might be missing something)
(This doesn't appear to be an issue with GNAT Pro distributions of xmlada, so they are presumably being built via other methods)
Could we please have tags/releases corresponding to CE releases? the last release here is from 2016, and doesn’t compile with CE 2019.
This means that nothing that uses xmlada can be put into an Alire crate.
(Actually, what it means is that any Alire crate must ignore the fact that there’s an xmlada crate and hope that the user’s system has a working xmlada installed)
During linking I get the following errors:
gprbuild -j4 -m -p -XLIBRARY_TYPE=relocatable -XBUILD=Production -XPROCESSORS=4 xmlada.gpr
gprlib xmlada_unicode.lexch
gcc -shared -o /home/earnest/build/store/ada-xmlada-git/src/xmlada/unicode/lib/relocatable/libxmlada_unicode.so.17.0w ... @/home/earnest/build/store/ada-xmlada-git/src/xmlada/unicode/obj/relocatable/GNAT-TEMP-000002.TMP
/usr/bin/ld: cannot find -lgnat-6.1
collect2: error: ld returned 1 exit status
gprlib: /usr/bin/gcc execution error
gprbuild: could not build library for project xmlada_unicode
Makefile:55: recipe for target 'relocatable' failed
make: *** [relocatable] Error 4
I'm not sure why xmlada_unicode
is searching for a libgnat-6.1
when the GCC build of Ada only includes
/usr/lib/libgnat-6.so
and /usr/lib/libgnat.so
. More importantly, why is to even attempting to use a versioned library in the first place?
Is this caused by the following code in xmlada_unicode.gpr
?
for Library_Version use "lib" & Project'Library_Name
& Shared.So_Ext & "." & Shared.Version;
If this is not the case and a symlink for libgnat-6.1.so
is supposed to exist it may be a packging bug with the distribution and I can report it there instead. (The curious issue here is that it wants 6.1
while gcc is at either 6
or 6.1.1
.)
Hello,
Version in configure still refers to 18.0w even for more recent ones:
PACKAGE_VERSION='18.0w'
(many other references exist)
HTH, Pascal.
You cannot store symbols in strings.
I need the degree symbol.
Using Ada.Characters.Latin_1.Degree_Symbol causes the program to crash:
raised UNICODE.CES.INVALID_ENCODING : unicode-ces-utf8.adb:258
If you try and enter the HTML symbol definition, "°", then the ampersand gets quoted out.
package DOM.Core.Elements is
...
procedure Set_Attribute
(Elem : Element; Name : DOM_String; Value : DOM_String);
-- Set the value of a specific attribute. The attribute is created if it
-- doesn't exist yet.
^^^^^^^^^^^^^^^^
But the procedure creates a new attribute every time, even if it already exists.
with DOM.Core.Documents;
with DOM.Core.Elements;
procedure XMLBug is
Imp : DOM.Core.DOM_Implementation;
Doc : DOM.Core.Document;
Root : DOM.Core.Element;
begin
Doc := DOM.Core.Create_Document (Imp);
Root := DOM.Core.Documents.Create_Element (Doc, "data");
loop
DOM.Core.Elements.Set_Attribute (Root, "bug", "memory leak");
end loop;
end XMLBug;
When the namespace feature is enabled, both functions work as expected. When disabling it, the string-based function becomes unusable, because there is no equivalent string for 'No_Symbol' as far as I can see.
Similarly, the symbol-based function behaves differently: When using 'No_Symbol' as input, the function returns the expected index, but in combination with Get_URI the attribute is not found. I think it would be better to return 'No_Symbol' from Get_URI when the namespace feature is disabled, because then it is compatible with the enabled feature without having to change code.
Here is a small test as txt: main.txt
I need a cdata section which contains ecmascript.
It contains the greater & less than signs, <> amongst others.
When printing, these get mangled into their html id's, < >
This is wrong. the cdata section should not be encoding these or any other characters.
As is, this breaks the ecmascript.
If this encoding is required, it should be enabled via a switch, and should not happen as default.
% make PROCESSORS="$(nproc)" relocatable
[...]
Build Libraries
[gprlib] xmlada_unicode.lexch
raised CONSTRAINT_ERROR : g-dyntab.adb:259 access check failed
gprbuild: could not build library for project xmlada_unicode
make: *** [Makefile:58: relocatable] Error 4
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.