Skip to content

Commit

Permalink
overlay stage1-hooks: Add hooks for libxcrypt migration
Browse files Browse the repository at this point in the history
  • Loading branch information
krnowak committed Mar 6, 2024
1 parent 362850c commit dfdd846
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
set -x
set -euo pipefail

stage1_repo="${1}"
new_repo="${2}"

cat=sys-libs
pkg=libxcrypt

if [[ -d "${stage1_repo}/${cat}/${pkg}" ]]; then
# libxcrypt is already a part of portage-stable, nothing to do
exit 0
fi

mkdir -p "${stage1_repo}/${cat}"
cp -a "${new_repo}/${cat}/${pkg}" "${stage1_repo}/${cat}/${pkg}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/bash
set -x
set -euo pipefail

stage1_repo="${1}"
new_repo="${2}"

base_profile_dir='profiles/coreos/base'

declare -A fixups_old=(
['package.mask']='>=virtual/libcrypt-2'
['package.unmask']='=virtual/libcrypt-1-r1'
['package.use.force']='sys-libs/glibc crypt'
['package.use.mask']='sys-libs/glibc -crypt'
)

declare -A fixups_new=(
['package.mask']='>=virtual/libcrypt-2'
['package.unmask']='<virtual/libcrypt-2'
['package.use.force']='sys-libs/glibc crypt'
['package.use.mask']='sys-libs/glibc -crypt'
)

for var_name in fixups_old fixups_new; do
declare -n fixups="${var_name}"

skip=''
for f in "${!fixups[@]}"; do
l=${fixups["${f}"]}
ff="${stage1_repo}/${base_profile_dir}/${f}"
if ! grep --quiet --fixed-strings --line-regexp --regexp="${l}" -- "${ff}"; then
# fixup not applicable, nothing to do
skip=x
break
fi
done

if [[ -n ${skip} ]]; then
unset -n fixups
continue
fi

for f in "${!fixups[@]}"; do
l=${fixups["${f}"]}
ff="${stage1_repo}/${base_profile_dir}/${f}"
ffb="${ff}.bak"
mv "${ff}" "${ffb}"
grep --invert-match --fixed-strings --line-regexp --regexp="${l}" -- "${ffb}" >"${ff}"
done
exit 0
done

0 comments on commit dfdd846

Please sign in to comment.