armdevvel / mxe-STATIC

MXE (M cross environment) (For ARM32 Windows development)
https://mxe.cc
Other
4 stars 2 forks source link

Question: SHA* symbols being linked into libmysqlclient.a #10

Open treeswift opened 2 years ago

treeswift commented 2 years ago

Qt build logs (the issue isn't specific to Qt, it's just the first dependent component to encounter it):

lld-link: error: duplicate symbol: SHA224
>>> defined at libmysqlclient.a(my_sha2.cc.obj)
>>> defined at libcrypto.a(sha256.o)

lld-link: error: duplicate symbol: SHA256
>>> defined at libmysqlclient.a(my_sha2.cc.obj)
>>> defined at libcrypto.a(sha256.o)

lld-link: error: duplicate symbol: SHA384
>>> defined at libmysqlclient.a(my_sha2.cc.obj)
>>> defined at libcrypto.a(sha512.o)

lld-link: error: duplicate symbol: SHA512
>>> defined at libmysqlclient.a(my_sha2.cc.obj)
>>> defined at libcrypto.a(sha512.o)

libcrypto.a is a provided by openssl, which is also a dependency of libmysqlclient.

IOW, the first option is my preference. Objections?

treeswift commented 2 years ago

P.S. Right now only qtbase and gdal use libmysqlclient directly.

treeswift commented 2 years ago

Further looked into it. libmysqlclent builds its own hash implementations. I could move them out of the way by namespacing them or linking libmysqlclient as a DLL rather than statically. (Namespacing is a more local solution; shared linkage, OTOH, would allow us update the mysql revision without rebuilding all the way up.)

treeswift commented 2 years ago

'k, mysqlclient checks for defined(HAVE_OPENSSL), will simply set it.

treeswift commented 2 years ago

Rebuilding w/ -DWITH_SSL=system in libmysqlclient.mk, stay tuned.

pahaze commented 2 years ago

I don't see why mysqlclient is needed TBH... I don't use it in my builds. Does it add more features?

treeswift commented 2 years ago

Check qtbase.mk. Qt links to a number of database connectors, including MySQL. It's a big umbrella framework. Its advantage, but also its weakness, at times. Many apps can, and do, depend on Qt and nothing else at all, rendering it an important goalpost for me personally. If we are aiming for a complete distro, I'd rather not strip features unless they come at too large a cost (disk space, effort, or regulatory -- IOW, licensing).

treeswift commented 2 years ago

I am personally aiming for a complete distro. (Suggest a name!)

pahaze commented 2 years ago

Linux?

pahaze commented 2 years ago

Or just in general?

treeswift commented 2 years ago

Linux?

The WinRT kernel is still WinRT kernel, so technically, it's Windows RT (in the same sense both GNU/Linux and Android are Linux). But application-wise, I want to be able to run everything there is on an average e.g. Ubuntu distro (except kernel modules) on a stock ARM/Tegra Surface RT (32 Gb or 64 Gb) or Surface 2. Basically, make it a usable tablet/mini-laptop. I already booked a few beta testers (friends' kids). Going to be the cheapest ARM PC worldwide, until supplies last.)

treeswift commented 2 years ago

("Project 9600" might be a cool name, I just need to check whether MSFT trademarks their build numbers.)

pahaze commented 2 years ago

Ah, I see. I was asking about Linux cause I've wanted to make my own distro for the RT devices. Makes sense, though.

pahaze commented 2 years ago

Oh yeah, if MSFT doesn't trademark then Project 9600 sounds like a good name but what about Win10? Would it be a kinda mix? 😂 Project 9600/15035

treeswift commented 2 years ago

9600 stays the minimum supported version either way. Unless e.g. we find a feature in DX12 that can't be backported to DX11 and that's critical enough to warrant two separate flavors (rather than a runtime-detected flag in a graphic app). But anyway. Flat Whale? Eclectic Ray? Any other pun on the "surface" theme without using the word "surface"?

pahaze commented 2 years ago

Trying to think of some, not very easy. At school, could ask friends 😂😂😂

treeswift commented 2 years ago

"Rita" (the Russian for "Margaret")? (almost kidding)

Or "ReTouche" (French/international).

pahaze commented 2 years ago

Rita doesn't actually sound bad, neither does ReTouche. I would go for Rita if it was a choosing thing though.

treeswift commented 2 years ago

Accepted!

pahaze commented 2 years ago

Glad to hear. Quick question though, do you wanna put stuff for it on my website when everything is going? Space isn't a real concern, just gotta stay under 300GB IIRC. My domain is pahaze.net, I could make a subdomain for it called rita.pahaze.net or something similar.

treeswift commented 2 years ago

I was thinking of ordering a standalone hosting/domain (was comparing hosting providers) but we can start with rita.pahaze.net to iron everything out (the directory structure, the package manager, the scripts...). There can't be too many mirrors anyway. Can only be too few.

I'd define a milestone -- when I'd want a 2nd level domain -- as "there is a DVD worth of packages that an average user won't be disappointed to install offline".

pahaze commented 2 years ago

Alright, I'll get it set up later. Any files uploaded to it need sent to me ATM just cause hosting is done by my friend and I don't know whether he would like other people connecting to his server. Also, if needbe, my domain can be a permanent secondary mirror/backup (since a lot of mirrors are just taken down after time) whenever a second domain is made for it

treeswift commented 2 years ago

I think I'd debug the scripts on localhost then and get some cheap $3/mo hosting just so as not to bother anyone. (Honestly, automated repo upload would be the first feature I'd want from such a server.)

pahaze commented 2 years ago

Makes sense. I'll still make it a subdomain for mirroring and such, though. Like said... never too many of em.