diff options
-rwxr-xr-x | scripts/bootstrap-prefix.sh | 202 |
1 files changed, 13 insertions, 189 deletions
diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh index ca29825f36..f7cb6208fa 100755 --- a/scripts/bootstrap-prefix.sh +++ b/scripts/bootstrap-prefix.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright 2006-2022 Gentoo Authors +# Copyright 2006-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 trap 'exit 1' TERM INT QUIT ABRT @@ -72,9 +72,7 @@ efetch() { FETCH_COMMAND="curl -f -L -O" elif [[ x$(type -t fetch) == "xfile" ]] ; then FETCH_COMMAND="fetch" - elif [[ x$(type -t ftp) == "xfile" ]] && - [[ ${CHOST} != *-cygwin* || \ - ! $(type -P ftp) -ef $(cygpath -S)/ftp ]] ; then + elif [[ x$(type -t ftp) == "xfile" ]] ; then FETCH_COMMAND="ftp" else eerror "no suitable download manager found!" @@ -122,9 +120,6 @@ configure_cflags() { *-solaris*) export LDFLAGS="-L${ROOT}/tmp/usr/lib -R${ROOT}/tmp/usr/lib" ;; - i586-pc-winnt* | *-pc-cygwin*) - export LDFLAGS="-L${ROOT}/tmp/usr/lib" - ;; *) export LDFLAGS="-L${ROOT}/tmp/usr/lib -Wl,-rpath=${ROOT}/tmp/usr/lib" ;; @@ -161,11 +156,6 @@ configure_toolchain() { compiler_stage1="${gcc_deps} sys-devel/gcc-config" compiler_type="gcc" case ${CHOST} in - *-cygwin*) - # not supported in gcc-4.7 yet, easy enough to install g++ - # Cygwin patches come as .zip from github - compiler_stage1+=" app-arch/unzip sys-devel/gcc" - ;; *-darwin*) # handled below ;; @@ -448,23 +438,18 @@ bootstrap_profile() { armv7l-pc-linux-gnu) profile=${profile_linux/ARCH/arm} ;; - i386-pc-solaris2.11) - profile="prefix/sunos/solaris/5.11/x86" - ;; x86_64-pc-solaris2.11) profile="prefix/sunos/solaris/5.11/x64" ;; - sparc-sun-solaris2.11) - profile="prefix/sunos/solaris/5.11/sparc" - ;; - sparcv9-sun-solaris2.11) - profile="prefix/sunos/solaris/5.11/sparc64" - ;; - i586-pc-winnt*) - profile="prefix/windows/winnt/${CHOST#i586-pc-winnt}/x86" + i386-pc-solaris2*|sparc-sun-solaris2*|sparcv9-sun-solaris2*) + eerror "REMOVED ARCH: this Solaris architecture was removed," + eerror "bootstrapping is impossible" + exit 1 ;; - x86_64-pc-cygwin*) - profile="prefix/windows/cygwin/x64" + i586-pc-winnt*|x86_64-pc-cygwin*) + eerror "REMOVED ARCH: this Windows architecture was removed," + eerror "bootstrapping is impossible" + exit 1 ;; *) eerror "UNKNOWN ARCH: You need to set up a make.profile symlink to a" @@ -523,8 +508,7 @@ bootstrap_profile() { # Strange enough, -cxx causes wrong libtool config on Cygwin, # but we require a C++ compiler there anyway - so just use it. - [[ ${CHOST} == *-cygwin* ]] || - cat >> "${ROOT}"/etc/portage/make.profile/package.use <<-EOF + cat >> "${ROOT}"/etc/portage/make.profile/package.use <<-EOF # gmp has cxx flag enabled by default. When dealing with a host # compiler without cxx support this causes configure failure. # In addition, The stage2 g++ is only for compiling stage3 compiler, @@ -849,24 +833,6 @@ bootstrap_gnu() { patch -p1 < ${DISTDIR}/${tar_patch_file} || return 1 fi - if [[ ${PN}-${PV} == "bash-4.3" && ${CHOST} == *-cygwin* ]] ; then - local p patchopts - for p in \ - "-p0" \ - "${DISTFILES_G_O}/distfiles/bash43-"{001..048} \ - "-p2" \ - "https://dev.gentoo.org/~haubi/distfiles/bash-4.3_p39-cygwin-r2.patch" \ - ; do - if [[ ${p} == -* ]] ; then - patchopts=${p} - continue - fi - efetch "${p}" || return 1 - patch --forward --no-backup-if-mismatch ${patchopts} \ - < "${DISTDIR}/${p##*/}" || return 1 - done - fi - local myconf="" if [[ ${PN} == "make" && ${PV} == "4.2.1" ]] ; then if [[ ${CHOST} == *-linux-gnu* ]] ; then @@ -998,19 +964,11 @@ python_ver() { # snapshot for stage3, else packages will break with some python # mismatch error due to Portage using a different version after it # upgraded itself with a newer Python - if [[ ${CHOST} == *-cygwin* ]] ; then - echo 3.9 # keep this number in line with PV below for stage1,2 - else - echo 3.11 # keep this number in line with PV below for stage1,2 - fi + echo 3.11 # keep this number in line with PV below for stage1,2 } bootstrap_python() { - if [[ ${CHOST} == *-cygwin* ]] ; then - PV=$(python_ver).10 - else - PV=$(python_ver).3-gentoo-prefix-patched - fi + PV=$(python_ver).3-gentoo-prefix-patched A=Python-${PV}.tar.xz einfo "Bootstrapping ${A%.tar.*}" @@ -1037,39 +995,6 @@ bootstrap_python() { rm -rf Modules/zlib || return 1 case ${CHOST} in - (*-*-cygwin*) - local cygpyver pf pn patch_folder - - # ideally the version of python used by bootstrap would be one - # that cygwin has packaged if we don't do exact matches on the - # version then some patches may not apply cleanly - - cygpyver="3.9.10-1" - efetch "https://mirrors.kernel.org/sourceware/cygwin/x86_64/release/python39/python39-${cygpyver}-src.tar.xz" \ - || return 1 - xz -dc "${DISTDIR}"/"python39-${cygpyver}-src.tar.xz" | tar -xf - - [[ ${PIPESTATUS[*]} == '0 0' ]] || return 1 - patch_folder="python39-${cygpyver}.src" - - for pf in $( - sed -ne '/PATCH_URI="/,/"/{s/.*="//;s/".*$//;p}' \ - < "${patch_folder}/python39.cygport" \ - | grep -v rpm-wheels | grep -v revert-bpo - ); do - pf="${patch_folder}/${pf}" - for pn in {1..2} fail; do - if [[ ${pn} == fail ]]; then - eerror "failed to apply ${pf}" - return 1 - fi - patch -N -p${pn} -i "${pf}" --dry-run >/dev/null 2>&1 \ - || continue - echo "applying (-p${pn}) ${pf}" - patch -N -p${pn} -i "${pf}" || return 1 - break - done - done - ;; (*-solaris*) # Solaris' host compiler (if old -- 3.4.3) doesn't grok HUGE_VAL, # and barfs on isnan() so patch it out @@ -1124,12 +1049,6 @@ bootstrap_python() { esac case ${CHOST} in - *-*-cygwin*) - # --disable-shared would link modules against "python.exe" - # so renaming to "pythonX.Y.exe" will break them. - # And ctypes dynamically loads "libpythonX.Y.dll" anyway. - myconf="${myconf} --enable-shared" - ;; *-linux*) # Bug 382263: make sure Python will know about the libdir in use for # the current arch @@ -1294,24 +1213,6 @@ bootstrap_zlib_core() { # 1.2.5 suffers from a concurrency problem [[ ${PV} == 1.2.5 ]] && makeopts=() - if [[ ${CHOST} == *-cygwin* ]] ; then - # gzopen_w is for real _WIN32 only - sed -i -e '/gzopen_w/d' win32/zlib.def - makeopts=( - -f win32/Makefile.gcc - SHARED_MODE=1 - # avoid toolchain finding ./cygz.dll (esp. in parallel build) - SHAREDLIB=win32/cygz.dll - IMPLIB=libz.dll.a - BINARY_PATH="${ROOT}"/tmp/usr/bin - INCLUDE_PATH="${ROOT}"/tmp/usr/include - LIBRARY_PATH="${ROOT}"/tmp/usr/lib - "${makeopts[@]}" - ) - # stage1 python searches for lib/libz.dll - ln -sf libz.dll.a "${ROOT}"/tmp/usr/lib/libz.dll - fi - einfo "Compiling ${A%.tar.*}" CHOST= ${CONFIG_SHELL} ./configure --prefix="${ROOT}"/tmp/usr || return 1 MAKEOPTS= @@ -1766,18 +1667,6 @@ do_emerge_pkgs() { emerge --color n -v --oneshot --root-deps ${opts} "${pkg}" ) [[ $? -eq 0 ]] || return 1 - - case ${pkg},${CHOST} in - app-shells/bash,*-cygwin*) - # Cygwin would resolve 'bin/bash' to 'bin/bash.exe', but - # merging bin/bash.exe does not replace the bin/bash symlink. - # When we can execute both bin/bash and bin/bash.exe, but - # they are different files, then we need to drop the symlink. - [[ -x ${EPREFIX}/bin/bash && -x ${EPREFIX}/bin/bash.exe && - ! ${EPREFIX}/bin/bash -ef ${EPREFIX}/bin/bash.exe ]] && - rm -f "${EPREFIX}"/bin/bash - ;; - esac done } @@ -1862,7 +1751,6 @@ bootstrap_stage2() { sys-devel/gnuconfig sys-apps/gentoo-functions app-portage/elt-patches - $([[ ${CHOST} == *-cygwin* ]] && echo dev-libs/libiconv ) # bash dependency sys-libs/ncurses sys-libs/readline app-shells/bash @@ -2237,7 +2125,6 @@ bootstrap_stage3() { sys-devel/make sys-apps/file app-admin/eselect - $( [[ ${CHOST} == *-cygwin* ]] && echo sys-libs/cygwin-crypt ) ) # For grep we need to do a little workaround as we might use llvm-3.4 @@ -2367,63 +2254,6 @@ EOF ;; esac - if [[ ${CHOST} == *-cygwin* ]]; then - if [[ -r /var/run/cygfork/. ]]; then - cat << EOF - -Whoah there, I've found the /var/run/cygfork/ directory. This makes -me believe you have a working fork() in your Cygwin instance, which -seems you really know what I can do for you when you help me out! -EOF - else - echo - [[ ${TODO} == 'noninteractive' ]] && ans="yes" || - read -p "Are you really, really sure what you want me to do for you? [no] " ans - case "${ans}" in - [Yy][Ee][Ss]) ;; - *) - cat << EOF - -Puh, I'm glad you agree with me here, thanks! -EOF - exit 1 - ;; - esac - - cat << EOF - -Well... -EOF - [[ ${TODO} == 'noninteractive' ]] || sleep 1 - cat << EOF - -Nope, seems you aren't: This is Windows after all, -which I'm traditionally incompatible with! -EOF - [[ ${TODO} == 'noninteractive' ]] || sleep 1 - cat << EOF - -But wait, there might be help! -EOF - [[ ${TODO} == 'noninteractive' ]] || sleep 1 - cat << EOF - -Once upon a time there was a guy, probably as freaky as you, my master. -And whether you believe or not, he has been able to do something useful -to Windows, in that he completed a piece of code to support myself. - -Although you already use that piece of code - yes, it's called Cygwin, -you seem to not use this freaky guy's completions yet. - -To help me out of the incompatibility hole, please read and follow -https://wiki.gentoo.org/wiki/Prefix/Cygwin first. - -But remember that you won't get support from upstream Cygwin now. -EOF - exit 1 - fi - fi - if [[ ${UID} == 0 ]] ; then cat << EOF @@ -2552,10 +2382,6 @@ EOF [[ -e /Library/Developer/CommandLineTools/usr/bin/clang ]] \ && PATH="/Library/Developer/CommandLineTools/usr/bin:${PATH}" ;; - *-cygwin*) - # Keep some Windows - PATH+=":$(cygpath -S):$(cygpath -W)" - ;; esac # TODO: should we better use cc here? or check both? @@ -2689,8 +2515,6 @@ EOF echo local ncpu= case "${CHOST}" in - *-cygwin*) - ncpu=$(cmd /D /Q /C 'echo %NUMBER_OF_PROCESSORS%' | tr -d "\\r") ;; *-darwin*) ncpu=$(/usr/sbin/sysctl -n hw.ncpu) ;; *-freebsd* | *-openbsd*) |