blob: b6556878450b047094cb0e7b429065b9dfd8c9c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#!/bin/sh
[ -z "$4" ] && echo "not enough parameters" && exit 1
REPO_ID=$1
ROOT=$2
OLD_BRANCH=$3
NEW_BRANCH=$4
echo -e "
>> requirements for this branch:
app-admin/eselect-python
sys-devel/base-gcc:<latest>
>> Entropy post-upgrade migration script
>> Repository: "${REPO_ID}"
>> Root: "${ROOT}"
>> Old branch: "${OLD_BRANCH}"
>> New branch: "${NEW_BRANCH}"
>> ATTENTION ATTENTION ATTENTION
>> - If you are upgrading from a previous branch (say, 4)
>> and you are a NetworkManager user, make sure to have
>> your users inside the "netdev" group.
>> - If you compile stuff manually, it is strongly
>> suggested to install "lafilefixer" and execute:
>> # lafilefixer --justfixit
>> ATTENTION ATTENTION ATTENTION
"
### CUT HERE ###
fix_lib64_symlinks() {
if [ -L ${ROOT}/lib64 ] ; then
echo "removing /lib64 symlink and moving lib to lib64..."
echo "dont hit ctrl-c until this is done"
rm ${ROOT}/lib64
# now that lib64 is gone, nothing will run without calling ld.so
# directly. luckily the window of brokenness is almost non-existant
/lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64
# all better :)
ldconfig
ln -s lib64 ${ROOT}/lib
echo "done! :-)"
echo "fixed broken lib64/lib symlink in ${ROOT}"
fi
if [ -L ${ROOT}/usr/lib64 ] ; then
rm ${ROOT}/usr/lib64
mv ${ROOT}/usr/lib ${ROOT}/usr/lib64
ln -s lib64 ${ROOT}/usr/lib
echo "fixed broken lib64/lib symlink in ${ROOT}/usr"
fi
if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then
rm ${ROOT}/usr/X11R6/lib64
mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64
ln -s lib64 ${ROOT}/usr/X11R6/lib
echo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6"
fi
}
three_four_to_five() {
local rc=0
# switch Python to latest available, 2.7
eselect python update --ignore 3.0 --ignore 3.1 --ignore 3.2 --ignore 3.3 --ignore 3.4
[ "${?}" != "0" ] && echo "eselect-python not available" && rc=1
# configure correct binutils
# new profile needs to be configured
binutils_dir="${ROOT}/etc/env.d/binutils"
if [ -d "${binutils_dir}" ]; then
binutils_profile=$(find "${binutils_dir}" -name "$(uname -m)*" | \
sort | tail -n 1 | xargs basename)
echo "trying to set binutils profile ${binutils_profile}"
binutils-config ${binutils_profile}
else
echo "binutils directory ${binutils_dir} not found"
echo "cannot properly set binutils profile"
rc=1
fi
# set proper eselect esd engine
if [ -f "${ROOT}/usr/bin/esdcompat" ]; then
eselect esd list | grep PulseAudio | cut -d"[" -f 2 | \
cut -d"]" -f 1 | xargs eselect esd set &> /dev/null
fi
# make sure working eselect boost is selected
e_boost_mod="${ROOT}/usr/share/eselect/modules/boost.eselect"
if [ -f "${e_boost_mod}" ]; then
eselect boost update &> /dev/null
fi
# move alsa conf to new location
[ -f "${ROOT}/etc/modprobe.d/alsa" ] && \
mv "${ROOT}/etc/modprobe.d/alsa" "${ROOT}/etc/modprobe.d/alsa.conf"
# try to mount /boot, ignore all the possible bullshit
# [ "${ROOT}" = "/" ] && mount /boot &> /dev/null
# setup grub.conf, if found
[ -f "${ROOT}boot/grub/grub.conf" ] && \
sed -i 's/CONSOLE=\/dev\/tty1/console=tty1/g' "${ROOT}/boot/grub/grub.conf"
# setup grub.conf, if found, change nox into gentoo=nox
[ -f "${ROOT}boot/grub/grub.conf" ] && \
sed -i 's/ nox / gentoo=nox /g' "${ROOT}/boot/grub/grub.conf"
# setup /etc/localtime correctly
if [ -f "${ROOT}etc/timezone" ]; then
tzdata=$(cat "${ROOT}etc/timezone")
rm -f "${ROOT}etc/localtime" && ln -sf "/usr/share/zoneinfo/${tzdata}" "${ROOT}etc/localtime"
fi
# always add udev to sysinit
rc-update add udev sysinit &> /dev/null
exit ${rc}
}
# run this in any case, it will fix symlinks setup
if [ "$(uname -m)" = "x86_64" ]; then
fix_lib64_symlinks
fi
# migration script from branch 4 to 5
[ "${OLD_BRANCH}" = "4" ] && [ "${NEW_BRANCH}" = "5" ] && three_four_to_five
# migration script from branch 3.5 to 5
[ "${OLD_BRANCH}" = "3.5" ] && [ "${NEW_BRANCH}" = "5" ] && three_four_to_five
echo "migration switch not found"
exit 1
|