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

Autotools generated scripts are under version control #718

Closed
ryao opened this issue May 2, 2012 · 20 comments
Closed

Autotools generated scripts are under version control #718

ryao opened this issue May 2, 2012 · 20 comments
Milestone

Comments

@ryao
Copy link
Contributor

ryao commented May 2, 2012

I am told that projects only generate these scripts when tagging releases, but we seem to have them under version control. Why is that?

@behlendorf
Copy link
Contributor

They're right. Typically, these files aren't tracked under version control and are just included in the tagged tarballs.

However, since I've yet to tag a stable release and we have lots of people still pulling from the git repo directly it was convenient to include these autotools products. Otherwise you might need to find a system with the right version of autotools installed to generate the configure script, so you could then build the project. The products of autotools are portable, but things like the configure.ac files and Makefiles.am. They are often tied more closely to specific versions of autotools than people would like to admit.

That said, perhaps we getting to the point now where most people shouldn't be pulling directly from the master branch on Github. They can use one of the tagged -rc tarballs or either the versions integrated with the downstream distributions. If that's now more than norm we could seriously consider removing these files from the repo.

@chrisrd
Copy link
Contributor

chrisrd commented May 3, 2012

For what it's worth, I'd vote to keep the generated scripts in git for (my) convenience.

@behlendorf
Copy link
Contributor

Well certainly keep them for a while yet, but perhaps we can drop them shortly before tagging a stable 0.6.0 which I think it still a ways off.

@ryao
Copy link
Contributor Author

ryao commented May 4, 2012

@chrisrd Which distribution do you use?

If I provided a way for you to compile a kernel, an initramfs image, SPL and ZFS on your distribution using Gentoo's package manager (e.g. inside /opt/gentoo), would you use it?

@chrisrd
Copy link
Contributor

chrisrd commented May 5, 2012

Debian. No (but thanks!). I have my own workflow in place to manage the bits and pieces of kernel-land I'm interested in whilst they're in flux. But I'm looking forward to the day when I'm no longer on the bleeding edge and can simply use standard packages!

@behlendorf
Copy link
Contributor

My current intention is to drop the generated autotools script for the repositories once the following RPM DKMS changes have been merged in to an official tag.

This should allow us to start posting just tarballs and source RPM packages to the website for general use. I'll of course also keep prominent links to both the Ubuntu/Debian PPA and Gentoo packages. Building directly from the repositories can be demoted to a developer only thing where they should be expected to have the autotools installed.

openzfs/spl#136
#830

It still may take a while to get these merged but I wanted to give everyone a heads up. Does this seem reasonable to everyone, are there any concerns?

@ryao
Copy link
Contributor Author

ryao commented Jul 17, 2012

This will cause no problems in Gentoo. The package manager will generate the autotools scripts as part of the build process when building directly from ZFSOnLinux GIT.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 23, 2012

Having the autotools scripts in the repo (makefile.in and the like) isn't a "convenience". It's a huge mess. It makes merging, rebasing and other repo operations (which should be straightforward) into a NIGHTMARE, because every single autotools out there generates different scripts (which are just a mess of shellscripting) which makes it impossible to fish out the relevant changes for merging.

I vote for them to be removed since they have caused me indescribable pain and completely demotivated me from contributing more.

In fact, I would fully support ditching autotools altogether and using something more rational like waf, which doesn't require at all littering the repository with meta-meta-meta-meta-meta files.

@ryao
Copy link
Contributor Author

ryao commented Jul 25, 2012

@Rudd-O Do what I do. Extend your system package manager to pull from a branch on github, run autotools, build and install. Then Ignore the autotools scripts when doing git operation. Next, push to the designated branch on github when you need to test a change and finally, let your package manager handle autotools.

I find that to be the only sane way of dealing with the autotools scripts.

@behlendorf
Copy link
Contributor

More convenient for users, not for developers. By this point I hope most users are sticking to the tarballs or using whatever solution is best packaged for their distribution.

Anyway, once we get the RPM DKMS changes in place I'm happy to drop the autogen.sh products. Just be patient with me for a few more weeks.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 25, 2012

@ryao: my scripts already do autogen.sh (well, they used to, when I wasn't using DKMS -- I am now) because that was the only sane way to operate. The problem is that the garbage autotools-generated scripts make it nigh impossible to merge branches. My process today consists on reverting my own autotools-script changes, generating a diff between the upstream autotools scripts and mine, applying that diff as a commit, then doing the merge, then backing out that autotools-scripts-diff out using rebase --interactive. It's crazy enough that I fear it will give me trichotilomania.

Would you guys entertain patches of the build sys to a full port to waf? No more garbage scripts!

@behlendorf
Copy link
Contributor

Would you guys entertain patches of the build sys to a full port to waf? No more garbage scripts!

No. Autotools may have it flaws but it's still the most flexible and portable thing for a complicated project out there.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 25, 2012

I respectfully beg to differ with your judgment in this case.

waf is much more portable (it's fully self-contained, works everywhere, doesn't require users or developers to install anything, no autoconf, no autoheader, no automake, just to extend the build system), it's way more flexible (for example, it supports multiple configurations like DKMS or no-DKMS out of the box, unlike the autoconf hacks we have had to use at make time), its configuration is WAY easier to understand and extend than the arcane autotools files (m4, really?), and waf doesn't litter the project at all with random files.

Oh, and it's much faster too. Not only does waf build everything in parallel, its configure tests (the lengthiest part) are much, much faster than configure, and it only rebuilds what's necessary since waf understands the whole dependency chain. For me, this is the biggest, by far, the biggest win. If anything else, you should expect build and compile times to be slashed in half (or more for multicore systems).

The SAMBA project successfully replaced autocancer with waf (and they have vastly more complicated portability requirements than us). I personally used waf to replace an ant build system at Cloud.com, slashing compile times from 15minutes+ to less than 90 seconds.

The hard part is porting the M4 tests, really, and I would be doing that part.

There are real benefits to using something like waf. I respectfully suggest you reconsider your initial assessment.

@ryao
Copy link
Contributor Author

ryao commented Jul 25, 2012

@Rudd-O Why are you having problems merging branches due to the autotools scripts? If the only changes to the files that ./autogen.sh touches are being made at upstream until you try building the software, then there should be no issues.

I do not think that anyone will commit to switch from autotools before seeing it in action. If you want to change people's minds, you will need to rewrite the build system in waf, without any guarantee that your work will be adopted. If you do that, I am sure that @behlendorf would evaluate it.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 25, 2012

Yes, absolutely, the plan is for me to rewrite the build system using waf, then be evaluated by you guys, and then be committed if it passes muster. I just didn't want to do the whole endeavor (it is going to be a few days' work) if there was a GOOD reason why the build system should not be migrated to waf.

@ryao
Copy link
Contributor Author

ryao commented Jul 26, 2012

I spoke to a few Gentoo Python developers about this. They all consider waf to be inferior to autotools. According to them, software using it requires more effort to support and maintain downstream. That is not a solid reason against it, but it is not the response that I hoped to hear.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 26, 2012

I suggest to ask users of build systems rather than users of languages that do not need build systems instead. Ask the SAMBA devs.

Sent from my Android phone with K-9 Mail. Please excuse my brevity.

Richard Yao [email protected] wrote:

I spoke to a few Gentoo Python developers about this. They all consider waf to be inferior to autotools. They consider software using it to require more effort to support and maintain downstream. That is not a solid reason against it, but it is not the response that I hoped to hear.


Reply to this email directly or view it on GitHub:
#718 (comment)

@ryao
Copy link
Contributor Author

ryao commented Jul 26, 2012

One of these people maintains the samba ebuild in Gentoo.

@behlendorf
Copy link
Contributor

In theory waf looks very cool, although I strongly suspect it will break down in practice. The devil's always in the details for this sort of thing.

I'm also sure that rewriting the build system isn't a few days of work, it's a few months of work. If you really could replace the entire build system and all its functionality with waf in just a few day that would be a pretty compelling argument.

But even then. It's hard argument to make that we just discard what we have now which works well and replace it with something which may or may not meet all our needs.

@Rudd-O
Copy link
Contributor

Rudd-O commented Jul 31, 2012

We will not replace anything until whatever replacement is in line, actually does everything that the former replacement does, in a better way. So rest assured, I won't be submitting any destructive patches. :-)

behlendorf added a commit to behlendorf/spl that referenced this issue Aug 27, 2012
Remove all of the generated autotools products from the repository
and update the .gitignore files accordingly.

Signed-off-by: Brian Behlendorf <[email protected]>
Issue openzfs/zfs#718
pcd1193182 pushed a commit to pcd1193182/zfs that referenced this issue Sep 26, 2023
Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.22 to 0.4.23.
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](chronotope/chrono@v0.4.22...v0.4.23)

---
updated-dependencies:
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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

No branches or pull requests

4 participants