Re: discussion on future removal of empty $FreeBSD$ tags
- In reply to: Warner Losh : "Re: discussion on future removal of empty $FreeBSD$ tags"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 02 May 2022 20:31:35 UTC
W dniu 2.05.2022 o 22:09, Warner Losh pisze:
> The current plans are to keep $FreeBSD$ in main until stable/12 is out
> of support. no new files will have it added, unless they are to be
> merged to stable/12 and are installed / managed by mergemaster.
>
> We'll do a coordinated sweep of the tree removing them after stable/12
> drops out of support and we'll do similar commits to stable/13 to
> reduce as much as possible any merge conflicts after that point.
>
> stable/13 and newer they are, of course, just noise. mergemaster
> doesn't require them to be non-empty, but will skip modified files if
> they match. Though it's been a while since I've used mergemaster... It
> has no maintainer and only receives emergency fixes when something
> breaks (and it usually takes a while for the right people to notice).
>
> Warner
Thank you for the reply and for revealing your official plans regarding
$FreeBSD$ tags.
Marek Zarychta
>
> On Mon, May 2, 2022 at 12:25 PM Marek Zarychta
> <zarychtam@plan-b.pwste.edu.pl> wrote:
>
> Dear subscribers,
>
> after one of the recent commits[1] surprisingly we got rid of
> $FreeBSD$ from among others, two configuration files:
> /etc/ssh/ssh_config and /etc/ssh/sshd_config. I was told these IDs
> are going to be deprecated in the whole source tree when 12.x
> branch reaches EoL, what is surprising news, at least for me.
> While indeed empty $FreeBSD$ tags after the transition to git
> became useless, leaving them in config files, still might be
> handy. Please let me explain why.
>
> After the transition to git, a lot of people complained about
> breakage in mergemaster(8). Finally, they were told that this tool
> is outdated, cannot do 3-way merge, has no maintainer, etc. so
> it's going to be deprecated soon. Then appropriate notice was
> added, the handbook got updated, so seemingly everyone was fine
> with this depreciation. I am not going to bring any serious
> arguments against etcupdate(8), but when providing support on IRC,
> a few cases of foot shooting with this tool had been reported to
> me and the last one happened this year IIRC. Moreover some people,
> including me, just like and are used to old sdiff(1)-way work of
> mergemaster(8). So soon after the transition to git to overcome
> this deficiency I wrote for myself a git primer helping with quick
> creation of local repository including $FreeBSD$ recreation for
> mergemaster(8) relying on empty $FreeBSD$ tags. I will attach this
> primer[2] for users here, maybe someone (noncommitter) will
> benefit from this (if it will not get burned with fire here earlier).
>
> Please don't get me wrong, I am not fighting with etcupdate(8)
> which works almost flawlessly in unison with freebsd-update(8),
> but people who follow STABLE/CURRENT really do appreciate the
> existence of mergemaster(8) and still use it behind the scenes,
> including probably members of core@ team. I am only asking for
> leaving these empty $FreeBSD$ IDs in config files. This will of
> course add some burden to committers' work but might be beneficial
> in the future. I am neither committer, nor contributor, but the
> voice from the userbase.
>
> Best regards,
>
> Marek Zarychta
>
> [1] https://cgit.freebsd.org/src/commit/?id=835ee05f
>
> [2]
>
> ########################################################
> #
> # FreeBSD Git src with worktrees and clean/smudge filters
> # for mergemaster(8)
> #
> ########################################################
> # Preparation of the tree
>
> zfs create zroot/usr/src_head
> zfs create zroot/usr/src_13
>
> ########################################################
> # Making src of stable/13 mountable in /usr/src
>
> echo "/usr/src_13 /usr/src nullfs rw,late 0 0" >> /etc/fstab
> mount -al
>
> ########################################################
> # Cloning the repository
>
> cd /usr/src_head
> git clonehttps://git.freebsd.org/src.git/ ./
>
> ########################################################
> # Adding filters
> # Filters require lang/ruby and lang/perl installed
>
> git config filter.freebsdid.smudge expand_freebsd
> git config filter.freebsdid.clean 'perl -pe "s/\\\$FreeBSD[^\\\$]*\\\$/\\\$FreeBSD\\\$/"'
>
> ########################################################
> # Limiting filters scope
> # In /usr/src_head create file .git/info/attributes with
> # following contents (at least):
>
> ------------cut------------
> cat > .git/info/attributes << EOF
> etc/* filter=freebsdid
> etc/*/* filter=freebsdid
> libexec/rc/* filter=freebsdid
> libexec/rc/rc.d/* filter=freebsdid
> *.conf filter=freebsdid
> dot.??* filter=freebsdid
> lib/libc/gen/shells filter=freebsdid
> lib/libc/net/hosts filter=freebsdid
> lib/libpam/pam.d/* filter=freebsdid
> lib/libwrap/hosts.allow filter=freebsdid
> usr.sbin/services_mkdb/services filter=freebsdid
> usr.sbin/bsnmpd/bsnmpd/snmpd.config filter=freebsdid
> usr.sbin/periodic/etc/* filter=freebsdid
> usr.sbin/cron/cron/crontab filter=freebsdid
> crypto/openssh/ssh*_config filter=freebsdid
> EOF
> ------------cut------------
>
> ########################################################
> # Smudge filter setup
> # Create file /usr/local/bin/expand_freebsd with following
> # contents and make it executable.
>
> ------------cut------------
> #!/usr/bin/env ruby
> data = STDIN.read
> last_info = `git log --pretty=format:"%h %ae %ad" -1`
> puts data.gsub('$FreeBSD$', '$FreeBSD: ' + last_info.to_s + '$')
> ------------cut------------
>
> chmod a+x /usr/local/bin/expand_freebsd
>
> ########################################################
> # Adding worktrees
> # Add worktree for stable/13, filters will be applied
>
> git worktree add /usr/src_13 stable/13
>
> # To have IDs in main (HEAD)
> # do checkout of filtered files again
>
> cd /usr/src_head
> rm etc/master.passwd etc/group
> rm libexec/rc/rc.d/*
> git checkout -f -- .
>
> ########################################################
> # To find more files with $FreeBSD tags which might
> # be added to .git/info/attributes file issue command:
>
> find . -type f -a -not -name '*~' | xargs grep -l '$FreeBSD'
>
> --
> Marek Zarychta
>