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,
>
>>
>>
>

Reply via email to