On Sat, Aug 17, 2024 at 6:22 PM Daniel Sahlberg
<daniel.l.sahlb...@gmail.com> wrote:
>
> Den mån 12 aug. 2024 kl 23:12 skrev Timofei Zhakov <t...@chemodax.net>:
>>
>> On Mon, Aug 12, 2024 at 11:39 PM Daniel Sahlberg
>> <daniel.l.sahlb...@gmail.com> wrote:
>> >
>> > Hi,
>> >
>> > One question on the SQLiteAmalgamation code.
>> >
>> > There is currently a configuration option to request to use an 
>> > amalgamation for SQLite (SVN_SQLITE_USE_AMALGAMATION), defaulting to ON. 
>> > If you don't have an amalgamation downloaded (in the sqlite-amalgamation 
>> > directory), configuration will fail unless you set the option to OFF.
>> >
>> > The old ./configure script had the logic to use the amalgamation if 
>> > available or else check for a library.
>> >
>> > Is there a reason for defaulting to the amalgamation and requiring an 
>> > explicit option to NOT use it?
>> >
>> > With something like below, it seems the build would check for the 
>> > amalgamation and use it if found and otherwise check for a library.
>> >
>> > [[[
>> > Index: CMakeLists.txt
>> > ===================================================================
>> > --- CMakeLists.txt      (revision 1919836)
>> > +++ CMakeLists.txt      (working copy)
>> > @@ -228,8 +228,8 @@
>> >
>> >  ### SQLite3
>> >
>> > -if(SVN_SQLITE_USE_AMALGAMATION)
>> > -  find_package(SQLiteAmalgamation REQUIRED)
>> > +find_package(SQLiteAmalgamation)
>> > +if(SQLiteAmalgamation_FOUND)
>> >    add_library(external-sqlite ALIAS SQLite::SQLite3Amalgamation)
>> >  else()
>> >    find_package(SQLite3 REQUIRED)
>> > ]]]
>> >
>> > WDYT?
>>
>> Hi,
>>
>> I also met this problem, especially on Linux, because I use the
>> amalgamation on Windows and it works without any modifications or
>> additional options. The current logic has existed since the initial
>> version of the CMake and I didn't change anything there, because it
>> was simpler to implement at the beginning.
>>
>> I would agree with the logic suggested, but my idea was to make less
>> implicit options for build to be more repeatable, clear, and
>> understandable. For example, to enable ra-serf, the user would have to
>> explicitly pass the -DSVN_ENABLE_RA_SERF=ON option, even if it is
>> installed on the system. However the case with SQLite differs a bit
>> from the Serf one.
>
>
> I understand the logic of not enabling things automatically just because the 
> corresponding library is installed on the system. (Even though I'm personally 
> annoyed by not having RA_SERF available since I almost always use http/https 
> access methods, but I can live with setting it to ON).
>
>>
>> There is also a similar situation with lz4 and
>> utf8proc libraries, which could be used from internal and as external
>> libraries.
>
>
> Those are a bit different, since those are distributed in the tarball so we 
> can't check it the same way as with SQLite Amalgamation. Probably good to 
> have them as an option. I see they are on by default. I know at least the 
> utf8proc lib has some updates but I don't know if there are advantages in not 
> using the built in version.
>
>>
>>
>> The other approach would be to change the default of the
>> SVN_SQLITE_USE_AMALGAMATION to OFF to require the installed SQLite
>> version. This should be okay, because usually only the advanced users
>> or packagers use the amalgamation. However the amalgamation is simpler
>> to use on WIndows than the installed one, because it doesn't require
>> any compilation, so the other users could use it and it might be
>> better to check both versions in this case for sure.
>
>
> I can't say I have a strong feeling about the default value. Either it is ON 
> by default (and you have to download and install the amalgamation) or it is 
> OFF by default (and you have to install the libsqlite3-dev package, vcpkg for 
> the Windows world, or set it to ON and download/install the amalgamation). 
> Either way there is at least one manual step whenever you build from scratch.

Hi,

I committed a resolution of the problem as revision 1920296 with a bit
alternative approach of combining the options and the checks to get an
availability of reproducible builds and great user experience for the
users at the same time. I think this fixes the issue.

Additionally, I have an idea to do something similar with ra-serf.
However, it is going to be a bit more complicated to implement than
the case with SQLite. What do you think?

Thanks!


--
Timofei Zhakov

Reply via email to