Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GDAL] Add expat support #1918

Merged
merged 2 commits into from
Oct 19, 2020
Merged

[GDAL] Add expat support #1918

merged 2 commits into from
Oct 19, 2020

Conversation

evetion
Copy link
Contributor

@evetion evetion commented Oct 18, 2020

Works on Linux, let's see what all other platforms do.

Should support many webbased xml formats in GDAL. See also JuliaGeo/GDAL.jl#65 and ping @visr.

@evetion
Copy link
Contributor Author

evetion commented Oct 18, 2020

Well, that's disappointing. Almost all complain:
[15:16:17] configure: error: PROJ 6 symbols not found

Mac seems to work a bit more, but fails on curl version differences:
[15:17:35] "_curl_easy_cleanup", referenced from:

I'd expect this build to work, we've got a working release over at GDAL_jll, do we need to pin some other releases?

@giordano
Copy link
Member

Unfortunately libraries that need LibCURL don't work right now, as also hinted by the warnings in https://dev.azure.com/JuliaPackaging/Yggdrasil/_build/results?buildId=6604&view=results

@visr
Copy link
Contributor

visr commented Oct 18, 2020

The OSX libcurl version issues seem to be present in the current build as well: JuliaGeo/GDAL.jl#98 (comment)

##[warning]Dependency LibCURL_jll does not have an Artifacts.toml at /usr/local/share/julia/stdlib/v1.6/LibCURL_jll/Artifacts.toml!

Should that be fixed by JuliaLang/julia#38070? I can't seem to find which Julia version runs on CI.

I've hit the PROJ 6 symbols not found before as well, not sure what triggers it now. There are some GDAL issues that mention the same, for instance OSGeo/gdal#2619.

Would be great to update to more recent GDAL and PROJ versions as well. Though I just read that around November 1st both PROJ 7.2.0 and GDAL 3.2.0 will be released, so we can also wait on that.

@giordano
Copy link
Member

Should that be fixed by JuliaLang/julia#38070?

Yes

I can't seem to find which Julia version runs on CI.

https://dev.azure.com/JuliaPackaging/Yggdrasil/_build/results?buildId=6604&view=logs&j=96c13d9d-dfd2-51e5-2f76-4a0b3ce09abc&t=09532434-8b0a-5f0e-118d-a3181cde5ec8&l=14

@evetion
Copy link
Contributor Author

evetion commented Oct 18, 2020

Ah, so all these issues could be explained by the fact it runs Julia Version 1.6.0-DEV.1210? Not sure where that comes into play though..

Both on my mac as my linux machine, I can built multiple GDAL platforms with Julia 1.5.2. I can't replicate the PROJ 6 symbols not found error. Proj_jll hasn't been touched since May, nor did I change the GDAL version (yet), so I don't know why it pops up here.

@giordano
Copy link
Member

Not sure it'll work (we may need to manually add nghttp2 as extra dependency), but we'll see

@giordano giordano closed this Oct 18, 2020
@giordano giordano reopened this Oct 18, 2020
@giordano
Copy link
Member

So, it's failing with

configure:24335: checking for internal_proj_create_from_wkt in -linternalproj
configure:24360: c++ -o conftest -DHAVE_AVX_AT_COMPILE_TIME -DHAVE_SSSE3_AT_COMPILE_TIME -DHAVE_SSE_AT_COMPILE_TIME -g -O2   conftest.cpp -linternalproj  -L/workspace/destdir/lib -linternalproj -lz -L/workspace/destdir -L/workspace/destdir/lib -lpthread -lm -lrt -ldl  >&5
/opt/x86_64-linux-gnu/bin/../lib/gcc/x86_64-linux-gnu/6.1.0/../../../../x86_64-linux-gnu/bin/ld: cannot find -linternalproj
/opt/x86_64-linux-gnu/bin/../lib/gcc/x86_64-linux-gnu/6.1.0/../../../../x86_64-linux-gnu/bin/ld: cannot find -linternalproj
collect2: error: ld returned 1 exit status
configure:24360: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT 1
| #define HAVE_CXX11 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_STD_IS_NAN 1
| #define HAVE_LIBDL 1
| #define HAVE_LIBRT 1
| #define HAVE_LIBM 1
| #define STDC_HEADERS 1
| #define HAVE_ASSERT_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_LOCALE_H 1
| #define HAVE_VALUES_H 1
| #define HAVE_FLOAT_H 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LINUX_USERFAULTFD_H 1
| #define HAVE_LONG_LONG 1
| #define UNIX_STDIO_64 1
| #define VSI_LARGE_API_SUPPORTED 1
| #define VSI_FTELL64 ftello64
| #define VSI_FSEEK64 fseeko64
| #define VSI_STAT64 stat64
| #define VSI_STAT64_T stat64
| #define VSI_FOPEN64 fopen64
| #define VSI_FTRUNCATE64 ftruncate64
| #define SIZEOF_INT 4
| #define SIZEOF_UNSIGNED_LONG 8
| #define SIZEOF_VOIDP 8
| #define HAVE_UINTPTR_T 1
| #define HAVE_IEEEFP 1
| #define HOST_FILLORDER FILLORDER_LSB2MSB
| #define HAVE_VPRINTF 1
| #define HAVE_SNPRINTF 1
| #define HAVE_VSNPRINTF 1
| #define HAVE_ATOLL 1
| #define HAVE_STRTOULL 1
| #define HAVE_STRTOF 1
| #define HAVE_GETCWD 1
| #define HAVE_DECL_STRTOF 1
| #define HAVE_READLINK 1
| #define HAVE_LSTAT 1
| #define HAVE_POSIX_SPAWNP 1
| #define HAVE_POSIX_MEMALIGN 1
| #define HAVE_VFORK 1
| #define HAVE_MMAP 1
| #define HAVE_SIGACTION 1
| #define HAVE_STATVFS 1
| #define HAVE_STATVFS64 1
| #define HAVE_GETRLIMIT 1
| #define HAVE_RLIMIT_AS 1
| #define HAVE_USELOCALE 1
| #define HAVE_GCC_ATOMIC_BUILTINS 1
| #define HAVE_GCC_BSWAP 1
| #define HAVE_UINT128_T 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1
| #define HAVE_PTHREAD_MUTEX_ADAPTIVE_NP 1
| #define HAVE_PTHREAD_SPINLOCK 1
| #define CPL_MULTIPROC_PTHREAD 1
| #define HAVE_5ARGS_MREMAP 1
| #define HAVE_SC_PHYS_PAGES 1
| #define ICONV_CONST 
| /* end confdefs.h.  */
| 
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char internal_proj_create_from_wkt ();
| int
| main ()
| {
| return internal_proj_create_from_wkt ();
|   ;
|   return 0;
| }
configure:24369: result: no
configure:24392: checking for internal_proj_create_from_wkt in -linternalproj
configure:24426: result: no
configure:24446: error: PROJ 6 symbols not found

I can confirm there is no libinternalproj library:

sandbox:${WORKSPACE}/srcdir/gdal-3.0.4 # qfind / -name "*internalproj*"

doesn't find anything

@giordano
Copy link
Member

Ok, for some obscure reason the absence of LibCURL_jll triggered weird code paths in the configure script. The trick was to explicitly add LibCURL_jll dependencies

@giordano giordano merged commit 09f0668 into JuliaPackaging:master Oct 19, 2020
@evetion
Copy link
Contributor Author

evetion commented Oct 19, 2020

Thanks for the research, fixing and merging! 👍

For the future, could you explain how you investigated this? Did you run it locally and if yes, how did you replicate the Azure Pipelines build? I'd like to see if we can make an upstream bug/fix so the ./configure part is more clear.

@giordano
Copy link
Member

  • I ran the build script locally with Julia nightly and I had the same issue
  • I looked into config.log and found the snippet I reported above
  • I know that Julia nightly can't install LibCURL_jll dependencies properly because LibCURL_jll is now a stdlib, but it contains a slimmed down of LibCURL_jll
  • I just tried to add LibCURL_jll dependencies to the dependencies of the build recipe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants