When using dash as a "sh", instead of bash, emerging ieee80211-1.1.6 doesn't
work due to a syntax miss interpretation of this code block in ieee80211-1.1.6
Makefile:
check_old:
@. remove-old $(KSRC) || \
(echo -e \
"\n Old ieee80211 references found. In order to build the ieee80211\n"\
"subsystem, prior versions must first be removed. You can perform\n"\
"this task by running this makefile as root via:\n\n"\
"\t% sudo make check_old\n\n"\
"and answering Y to remove the file references.\n\n Aborting make.\n" && \
exit 1)
*** Output of make outside the emerge ***
lap ieee80211-1.1.6 # rm /bin/sh
lap ieee80211-1.1.6 # ln -sf /bin/dash /bin/sh
lap ieee80211-1.1.6 # make
.: 1: remove-old: not found
make: *** [check_old] Error 2
lap ieee80211-1.1.6 #
lap ieee80211-1.1.6 # ls -l remove-old
-rw-r--r-- 1 xxxx users 1509 Oct 21 18:29 remove-old
lap ieee80211-1.1.6 #
*** Output of emerge: ***
# emerge -av ieee80211
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild N ] net-wireless/ieee80211-1.1.6 -debug 0 kB
Total size of downloads: 0 kB
Do you want me to merge these packages? [Yes/No] Yes
>>> emerge (1 of 1) net-wireless/ieee80211-1.1.6 to /
>>> md5 files ;-) ieee80211-1.0.3.ebuild
>>> md5 files ;-) ieee80211-1.0.3-r1.ebuild
>>> md5 files ;-) ieee80211-1.1.6.ebuild
>>> md5 files ;-) ieee80211-1.0.2.ebuild
>>> md5 files ;-) ieee80211-1.1.5.ebuild
>>> md5 files ;-) ieee80211-1.0.3-r2.ebuild
>>> md5 files ;-) ieee80211-1.1.5-r1.ebuild
>>> md5 files ;-) ieee80211-1.0.1.ebuild
>>> md5 files ;-) files/ieee80211-1.0.3-broadcast.patch
>>> md5 files ;-) files/ieee80211-1.1.5-broadcast.patch
>>> md5 files ;-) files/digest-ieee80211-1.0.1
>>> md5 files ;-) files/digest-ieee80211-1.0.2
>>> md5 files ;-) files/digest-ieee80211-1.0.3
>>> md5 files ;-) files/digest-ieee80211-1.1.5
>>> md5 files ;-) files/digest-ieee80211-1.1.6
>>> md5 files ;-) files/ieee80211-1.1.5-we18.patch
>>> md5 files ;-) files/remove-old
>>> md5 files ;-) files/digest-ieee80211-1.0.3-r1
>>> md5 files ;-) files/digest-ieee80211-1.0.3-r2
>>> md5 files ;-) files/digest-ieee80211-1.1.5-r1
>>> md5 files ;-) files/ieee80211-1.0.3-keep_restricted_bit.patch
>>> md5 files ;-) files/ieee80211-1.0.3-open_frag.patch
>>> md5 src_uri ;-) ieee80211-1.1.6.tgz
* Determining the location of the kernel source code
* Found kernel source directory:
* /usr/src/linux
* Found sources for kernel version:
* 2.6.14-gentoo-r4
* Checking for suitable kernel configuration options:
>>> Unpacking source...
>>> Unpacking ieee80211-1.1.6.tgz to /var/tmp/portage/ieee80211-1.1.6/work
>>> Source unpacked.
* Preparing ieee80211 module
.: 1: remove-old: not found
make: *** [check_old] Error 2
!!! ERROR: net-wireless/ieee80211-1.1.6 failed.
!!! Function linux-mod_src_compile, Line 505, Exitcode 2
!!! Unable to make KSRC=/usr/src/linux
KSRC_OUTPUT=/usr/src/linux all.
!!! If you need support, post the topmost build error, NOT this status message.
#
Workaround:
Reverting to bash fixes the problem. Looking at remove-old code we can see it
forcing the use of: #!/bin/bash -x.
So maybe the ebuild could force the use of /bin/bash, during make, instead of
relying in /bin/sh.
Didn't check if this issue occurs with other shells cause I only use bash & dash.