389ds / 389-ds-base

The enterprise-class Open Source LDAP server for Linux
https://www.port389.org/
Other
211 stars 93 forks source link

Investigate and change build systems #3916

Open 389-ds-bot opened 4 years ago

389-ds-bot commented 4 years ago

Cloned from Pagure issue: https://pagure.io/389-ds-base/issue/50863


Issue Description

Due to the recent change to move dscontainer from sbin -> libexec, this has created a packaging problem at suse - we don't have libexec.

Now, to make this more difficult, it looks like our configure.ac has libexec, but it goes to /usr/lib/dirsrv for the ds_selinux helper scripts, and setup.py is hardcoding /usr/libexec/dirsrv/ into it's process.

Really, I feel like we are starting to see some cracks in our tooling here. Autotools may be fine for C programs and some of the templating we do for files, but it's really frustrating to extend. The whole process to work out "how to make rust work inside of autotools" has been a multi-year effort, and now looking at setup.py it's pretty clear that we have a lot of inflexibility there too.

While I am able to work around this in the suse spec for now, I believe we really need to "do some house keeping" and fix this. We are very likely beyond the capabilities of what autotools can do and provide.

I think we should look at the following options, which both are already available on suse/rhel:

Some musts:

To achieve this I think we should start work on a "parallel build" system in the same directory that we can use as developers to find and iron out issues, while continuing with downstream releases using autotools. Then we select a major version and change them out at some point.

389-ds-bot commented 4 years ago

Comment from mreynolds (@mreynolds389) at 2020-01-30 17:43:22

Metadata Update from @mreynolds389:

389-ds-bot commented 4 years ago

Comment from mreynolds (@mreynolds389) at 2020-05-06 16:54:28

Metadata Update from @mreynolds389:

droideck commented 2 years ago

@Firstyear after 2 years and your experience with SUSE building, what do you think about the issue now? Should we still pursue it and prioritize? (1.4.5 is surely a wrong milestone)

Firstyear commented 2 years ago

I still think we should do this. Our current autotools build is a hot mess. I started an experimental build with meson at one point, but never put it into a PR. I think there are other options now too we could use like using rust/cargo to drive all the C build parts too. But that would need agreement we are going to use rust-by-default all the time.

eli-schwartz commented 2 years ago

Meson has -Db_sanitize= to enable sanitizer flags as a builtin option. For offline builds... nothing should be downloading content over the network during a build anyway, other than potentially (opt-in) subproject wraps. However you can use --wrap-mode=nodownload for that.