On Fri, Apr 24, 2015 at 09:59:23AM +0200, Paul Gevers wrote: > Hi > > On 24-04-15 06:02, Amul Shah wrote: > > While this fix works, it strikes me as not completely correct because > > 21 # Set up locale support in the pbuilder environment > > 22 override_dh_auto_build: > > 23 mkdir -p debian/tmp/locale/ > > 24 localedef -f UTF-8 -i en_US ./debian/tmp/locale/en_US.UTF-8/ > > 25 export LOCPATH=$(CURDIR)/debian/tmp/locale/ && \ > > 26 export LC_ALL=en_US.UTF-8 && \ > > 27 dh_auto_build > > > > I played around with attempting to use the LOCPATH and LC_ALL settings > > from override_dh_auto_build in override_dh_auto_install, but > > $(CURDIR)/debian/tmp/locale does not exist at override_dh_auto_install. > > > > I can either repeat the steps from override_dh_auto_build to generate > > the locale in override_dh_auto_build or I can use my fix as is because > > all fis-gtm needs is a valid Unicode locale to proceed with compilation. > > > > Thoughts? Do I need to go read the manual(s) again? > > I may be completely wrong, but I think the exports need to happen before > any of the targets in the general section of the makefile (debian/rules > is a plain makefile).
Well, since these "export" statements are indented with a tab, that
makes them shell commands for the target, not directives for make(1)
itself. Thus, the quoted lines are basically equivalent to:
override_dh_auto_build:
...
sh -c "export LOCPATH=...; export LC_ALL=...; dh_auto_build"
I hope that this makes it a bit more clear that these export statements
are handled by the shell, not by make(1) itself, and their purpose is to
modify the values of the LOCPATH and LC_ALL variables *only* during the
execution of the dh_auto_build command itself. Thus, the syntax seems
correct, although (personal preference) I would use env(1) instead -
something like:
override_dh_auto_build:
...
env LOCPATH="..." \
LC_ALL="..." \
dh_auto_build
To Amul Shah: unfortunately, "locale -a" doesn't work in this way - it
does not pay any attention to the LOCPATH setting, even though LOCPATH
is indeed honored by other utilities like date(1) and even make(1) :(
So, hm, my advice would be to modify the tool that checks for the
en_US.UTF-8 locale and make it do something like:
utflocale=`(printenv LANG LC_ALL || true; locale -a) | grep -i en_us...`
Of course, if the script does not set -e or something similar, you don't
need the || true bit, so:
utflocale=`(printenv LANG LC_ALL; locale -a) | grep -i en_us...`
Yes, it's a bit ugly, but, well, it might work.
Hope that helps!
G'luck,
Peter
--
Peter Pentchev [email protected] [email protected] [email protected]
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13
signature.asc
Description: Digital signature

