xref: /freebsd/contrib/blocklist/FreeBSD-upgrade (revision 715cc257137099e022c7eecea4cd6995bb7604a3)
1*715cc257SJose Luis DuranFreeBSD maintainer's guide to blocklist
2*715cc257SJose Luis Duran=======================================
3*715cc257SJose Luis Duran
4*715cc257SJose Luis DuranThese instructions describe the blocklist vendor import procedure,
5*715cc257SJose Luis Duranfollowing the Committer's Guide
6*715cc257SJose Luis Duran(https://docs.freebsd.org/en/articles/committers-guide/#vendor-import-git).
7*715cc257SJose Luis Duran
8*715cc257SJose Luis Duran> [!NOTE]
9*715cc257SJose Luis Duran> This guide follows the convention that a `freebsd` remote is pointing
10*715cc257SJose Luis Duran> to gitrepo.FreeBSD.org/src.git.
11*715cc257SJose Luis Duran
12*715cc257SJose Luis Duran1.	Grab our top level directory:
13*715cc257SJose Luis Duran
14*715cc257SJose Luis Duran		freebsd=$(git rev-parse --show-toplevel)
15*715cc257SJose Luis Duran
16*715cc257SJose Luis Duran2.	Create a Git worktree under a temporary directory:
17*715cc257SJose Luis Duran
18*715cc257SJose Luis Duran		worktree=$(mktemp -d -t blocklist)
19*715cc257SJose Luis Duran		git worktree add ${worktree} vendor/blocklist
20*715cc257SJose Luis Duran
21*715cc257SJose Luis Duran3.	Clone the blocklist repo (https://github.com/zoulasc/blocklist.git):
22*715cc257SJose Luis Duran
23*715cc257SJose Luis Duran		blocklist_repo=$(mktemp -d -t blocklist-repo)
24*715cc257SJose Luis Duran		git clone https://github.com/zoulasc/blocklist.git ${blocklist_repo}
25*715cc257SJose Luis Duran		cd ${blocklist_repo}
26*715cc257SJose Luis Duran		commit=$(git rev-parse HEAD)
27*715cc257SJose Luis Duran		commit_short=$(git rev-parse --short HEAD)
28*715cc257SJose Luis Duran		date=$(git show -s --format=%cd --date=format:%Y-%m-%d)
29*715cc257SJose Luis Duran		tag=$(git show -s --format=%cd --date=format:%Y%m%d)
30*715cc257SJose Luis Duran
31*715cc257SJose Luis Duran4.	Copy to the vendor branch using rsync (net/rsync):
32*715cc257SJose Luis Duran
33*715cc257SJose Luis Duran		rsync -va --del --exclude=".git" ${blocklist_repo}/ ${worktree}
34*715cc257SJose Luis Duran
35*715cc257SJose Luis Duran5.	Take care of added/deleted files:
36*715cc257SJose Luis Duran
37*715cc257SJose Luis Duran		cd ${worktree}
38*715cc257SJose Luis Duran		git add -A ${worktree}
39*715cc257SJose Luis Duran		git status
40*715cc257SJose Luis Duran		git diff --staged
41*715cc257SJose Luis Duran
42*715cc257SJose Luis Duran6.	Commit:
43*715cc257SJose Luis Duran
44*715cc257SJose Luis Duran		message=$(cat <<-EOM
45*715cc257SJose Luis Duran		blocklist ${date} (${commit_short})
46*715cc257SJose Luis Duran
47*715cc257SJose Luis Duran		Upstream hash ${commit}.
48*715cc257SJose Luis Duran
49*715cc257SJose Luis Duran		Obtained from:	https://github.com/zoulasc/blocklist
50*715cc257SJose Luis Duran		EOM
51*715cc257SJose Luis Duran		)
52*715cc257SJose Luis Duran		git commit -e -m "Vendor import of ${message}"
53*715cc257SJose Luis Duran
54*715cc257SJose Luis Duran7.	Tag:
55*715cc257SJose Luis Duran
56*715cc257SJose Luis Duran		git tag -a -e -m "Tag ${message}" vendor/blocklist/${tag}
57*715cc257SJose Luis Duran
58*715cc257SJose Luis Duran	At this point, the vendor branch can be pushed to the FreeBSD
59*715cc257SJose Luis Duran	repo via:
60*715cc257SJose Luis Duran
61*715cc257SJose Luis Duran		git push --follow-tags freebsd vendor/blocklist
62*715cc257SJose Luis Duran
63*715cc257SJose Luis Duran8.	Merge from the vendor branch:
64*715cc257SJose Luis Duran
65*715cc257SJose Luis Duran		cd ${freebsd}
66*715cc257SJose Luis Duran		git subtree merge -P contrib/blocklist vendor/blocklist
67*715cc257SJose Luis Duran
68*715cc257SJose Luis Duran	Some files may have been deleted from FreeBSD's copy of
69*715cc257SJose Luis Duran	blocklist.  When git prompts for these deleted files during the
70*715cc257SJose Luis Duran	merge, choose 'd' (leaving them deleted).
71*715cc257SJose Luis Duran
72*715cc257SJose Luis Duran9.	Resolve conflicts.
73*715cc257SJose Luis Duran
74*715cc257SJose Luis Duran10.	Diff against the vendor branch:
75*715cc257SJose Luis Duran
76*715cc257SJose Luis Duran		git diff --diff-filter=M vendor/blocklist/${tag} HEAD:contrib/blocklist
77*715cc257SJose Luis Duran
78*715cc257SJose Luis Duran	Review the diff for any unexpected changes.
79*715cc257SJose Luis Duran
80*715cc257SJose Luis Duran11.	Run the FreeBSD changes script:
81*715cc257SJose Luis Duran
82*715cc257SJose Luis Duran		cd contrib/blocklist
83*715cc257SJose Luis Duran		sh ./freebsd-changes.sh
84*715cc257SJose Luis Duran
85*715cc257SJose Luis Duran12.	If source files have been added or removed, update the
86*715cc257SJose Luis Duran	appropriate makefiles to reflect changes in the vendor's
87*715cc257SJose Luis Duran	Makefile.in.
88*715cc257SJose Luis Duran
89*715cc257SJose Luis Duran13.	Build and install world, reboot, test.  Pay particular attention
90*715cc257SJose Luis Duran	to the fingerd(8) and sshd(8) integration.
91*715cc257SJose Luis Duran
92*715cc257SJose Luis Duran14.	Commit.
93*715cc257SJose Luis Duran
94*715cc257SJose Luis Duran15.	Cleanup:
95*715cc257SJose Luis Duran
96*715cc257SJose Luis Duran		rm -fr ${blocklist_repo} ${worktree}
97*715cc257SJose Luis Duran		git worktree prune
98