Hi Robert, If you avoid setting AXIS2C_HOME, then the build scripts will define it within the script to point to deploy directory within the source checkout directory. That should avoid a lot of errors when building the code.
It looks like there is a error in core where it should be using AXIS2_FREE(m_env->allocator, xml_str); instead of AXIS2_FREE(env->allocator, xml_str); I opened a pull request for that. Please check. Regards Nandika On Tue, 18 Mar 2025 at 04:31, robertlazarski <robertlazar...@gmail.com> wrote: > > > On Mon, Mar 17, 2025 at 11:08 AM robertlazarski <robertlazar...@gmail.com> > wrote: > >> Hi Bill, thanks for the help so far - see my comments inline. >> >> On Sun, Mar 2, 2025 at 10:30 AM Bill Blough <de...@blough.us.invalid> >> wrote: >> >>> Hi Robert, >>> >>> On Sun, Mar 02, 2025 at 07:14:20AM -1000, robertlazarski wrote: >>> > >>> > The INSTALL doc is confusing as it says run ./configure as usual but it >>> > isn't there without executing the script. >>> >>> I think the INSTALL doc is typically for the end user, so it expects >>> building from a dist tarball, which would already have ./configure >>> generated. But for development purposes, it's my understanding that >>> it's best practice to not check ./configure (and other, generated build >>> system files) into the repo. So when starting from a checkout rather >>> than a dist tarball, it requires that autoconf, automake, etc. be run to >>> get to a buildable state. >>> >>> Maybe we should also have an INSTALL.developers (or whatever). >>> >>> >> Maybe a DEV file to compliment INSTALL- as there are bash scripts used a >> lot it seems but even as someone like me who codes often in bash, I skipped >> right over them. I am not there yet though, I still need to learn the >> project better. >> >> I can run build.sh after the recent commit from Nandika. Seems like >> build_for_dist.sh needs the same fix - I will commit that. >> >> > >>> > Running "sh build_for_tests.sh" shows errors in the Makefile: >>> > >>> > /usr/bin/install: 'AUTHORS' and >>> > '/home/robert/repos/axis-axis2-c-core/AUTHORS' are >>> > the same file >>> > make[2]: *** [Makefile:504: install-dataDATA] Error 1 >>> > make[2]: Leaving directory '/home/robert/repos/axis-axis2-c-core' >>> > make[1]: *** [Makefile:948: install-am] Error 2 >>> > make[1]: Leaving directory '/home/robert/repos/axis-axis2-c-core' >>> > make: *** [Makefile:636: install-recursive] Error 1 >>> > >>> >>> That's strange. For what it's worth, I can do a brand new checkout, >>> then run build_for_tests.sh, and it completes successfully with no >>> errors, installing a complete binary distribution (with samples) into >>> $src_dir/deploy. >>> >>> Since it looks like it's trying to install into the root of the source >>> tree instead of the deploy subdir, I'm guessing there's an issue with how >>> AXIS2C_HOME is getting set on your system, which is causing issues with >>> the install prefix. It should all be set up in build_for_tests.sh, so >>> you might start there. >>> >>> >> I stopped using AXIS2C_HOME and now it is undefined. It definitely was >> causing problems. As Nandika explained, the deploy dir is where the >> build output goes by default. >> >> > In the end I manually edited the Makefile so "install" would complete - >>> as >>> > shown via diff, I need to find the right place to fix this: >>> >>> Since (as far as I can tell) the existing line should be correct, I >>> think once you figure out the AXIS2C_HOME and/or prefix/destdir issue >>> referenced above, then the diff, or any further/related fix, shouldn't >>> be necessary. >>> >>> I'm happy to try to help you work through it, but as I said, it "works >>> on my machine" so much of my help would probably answering questions or >>> making suggestions based on the info you give me. >>> >>> > >>> > Running "sh run-tests.sh" shows one error - an HTTP 500 error on >>> "Service >>> > not Found" which arguably could be a 404. The log dir shows: >>> > >>> > [Sun Mar 2 06:03:09 2025] [info] Service Not found. Endpoint >>> reference is >>> > : http >>> > ://127.0.0.1:9090/axis2/services/echo/echo >>> >>> <snip> >>> >>> > >>> > Then it fails here - about : >>> > >>> > AddressSanitizer: CHECK failed: sanitizer_thread_arg_retval.cpp:57 >>> > "((!t->second.deta >>> > ched)) != (0)" (0x0, 0x0) (tid=335462) >>> >>> I suspect this is related to install issue above. The installed >>> file isn't where the test server is expecting it, so when it tries to >>> load it, there's a null pointer dereferece. (There are a lot of >>> functions and code paths that lack null pointer checks - which is >>> something I wanted to improve at some point) >>> >>> If I do run_tests.sh, then all tests pass. However, I can duplicate >>> what you're seeing by renaming deploy/services/echo to something else. >>> So I think sorting out the install function will fix this, too. >>> >>> >>> >>> > >>> > ./configure --enable-json >>> > >>> > Returns this error. Seems like you applied the patch to support JSON >>> back >>> > in 2013. >>> > >>> > https://issues.apache.org/jira/browse/AXIS2C-1645 >>> > >>> > Is there some Ubuntu package I need to install? Simply "json" not found >>> > isn't clear to me. I see json.h in a couple places. I tried "apt >>> > install libjson-c-dev" >>> > from Ubuntu 22.04 since it also has json_object but it didn't help. >>> > >>> > checking for json... no >>> > configure: error: Package requirements (json) were not met: >>> > >>> > Package 'json', required by 'virtual:world', not found >>> >>> According to this comment >>> https://issues.apache.org/jira/browse/AXIS2C-1645?focusedCommentId=13758315&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13758315 >>> it sounds like libjson-c-dev is the correct package, but it looks like >>> the references to library references to "json" still need to be replaced >>> with >>> "json-c". >>> >>> In doing that, I got configure to succeed, but then got compiler errors. >>> It looks like json-c needs C99 or newer. So I added --std=c99 when JSON >>> is >>> enabled, and was able to get a clean compile. I haven't done any >>> testing. (side note: maybe we should make the whole project require c99 >>> for the 2.0 release, not just when JSON is enabled). >>> >>> I've attached the patch with my changes. >>> >>> Best regards, >>> Bill >>> >>> >> The patch to fix json support helped a lot, thanks! I think I am going to >> commit it. >> >> I see what appears to be an obvious problem to in the json test code >> when adding --enable-json=yes to build_for_tests.sh >> , am I reading this correctly that it should be m_env instead of env? It >> compiles after making that change. >> >> test_http_transport.cc: In member function ‘virtual void TestHTTPTranspo >> rt_test_json_Test::TestBody()’: >> test_http_transport.cc:368:20: error: ‘env’ was not declared in this sco >> pe; did you mean ‘m_env’? >> 368 | AXIS2_FREE(env->allocator, xml_str); >> >> Are you able to run build_for_tests.sh ? I get the error below. I'd like >> to see the JSON test complete as referenced above, but it seems like this >> error happens before that. >> >> >> [ OK ] TestHTTPTransport.test_url (0 ms) >> [ RUN ] TestHTTPTransport.test_http_client >> AddressSanitizer: CHECK failed: sanitizer_thread_arg_retval.cpp:57 >> "((!t->second.detached) >> ) != (0)" (0x0, 0x0) (tid=304564) >> #0 0x70c61fd08a47 in CheckUnwind >> ../../../../src/libsanitizer/asan/asan_rtl.cpp:69 >> >> With or without setting export AXIS2C_HOME to the deploy dir seemed to >> help. >> >> > On that last error - I meant to say it was on run-tests.sh and I am asking > if that runs ok or it is a problem with my environment somehow, > >> >> >