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