Discussion:
fontlinge make'n nicht mehr?
Joerg Rossdeutscher
2006-01-28 20:22:52 UTC
Permalink
Hallo,

Ich wollte gerade jemandem helfen, die CVS version zu installieren,
dabei stellte ich fest, das die bei mir auch nicht mehr geht:


cvs -d:pserver:***@cvs.sourceforge.net:/cvsroot/fontlinge login


cvs -z3 -d:pserver:***@cvs.sourceforge.net:/cvsroot/fontlinge co
-P fontlinge_rc

./configure

make

cd modules && make
make[1]: Entering directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
sed ' \
s¡@prefix@¡/usr/local¡ ; \
s¡@bindir@¡/usr/local/bin¡ ; \
s¡@datadir@¡/usr/local/share¡ ; \
s¡@docdir@¡/usr/local/share/doc/fontlinge¡ ; \
s¡@mandir@¡/usr/local/share/man¡ ; \
s¡@man3dir@¡/usr/local/share/man/man3¡ ; \
s¡@shareddir@¡/usr/local/share/fontlinge¡ ; \
s¡@htmldir@¡/usr/local/share/fontlinge/webgui¡ ; \
s¡@webgui_html@¡download.php favicon.ico fontinfo.php fontinfo_tags.php
fontlinge.css functions.php img.php index.html index.php preview.php
preview_img.php set.php¡ ; \
s¡@webgui_scripts@¡preview.pl¡ ; \
s¡@webgui_more@¡custom.php htaccess¡ ; \
s¡@webgui_imgs@¡back.png back_start.png divider.png error.png
forward.png forward_end.png i.png leer.png ok.gif ok.png
set_category.png sleep.png vdivider.png view.png
window_size.png¡ ; \
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }
sed: -e Ausdruck #1, Zeichen 816: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
make[1]: Leaving directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
make: *** [make_modules] Fehler 2




Ich habe gerade grosse Probleme gehabt, das log vom Terminal in den
Mailclient zu bringen - UTF-8-Problem. Kann das sein, das sed an den
"komischen" Trennern scheitert?

make --version
GNU Make 3.81beta4

echo $LANG
de_DE.UTF-8

Ich sehe die Sonderzeichen in Evolution, aber im gnome-terminal nur
Kästchen. In "konsole" fehlen die Zeichen völlig. LANG="" ändert am
Problem nichts.


Gruß,
Ratti

P.S.: Bin umgezogen, sitze zwischen Kartons... viele Kartons... %-)
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Christian Boltz
2006-01-29 02:21:31 UTC
Permalink
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
Ich wollte gerade jemandem helfen, die CVS version zu installieren,
[...]
Post by Joerg Rossdeutscher
make
cd modules && make
make[1]: Entering directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
sed ' \
[...]
Post by Joerg Rossdeutscher
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }
sed: -e Ausdruck #1, Zeichen 816: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
Seltsam - bei mir läuft make problemlos durch.

An Deiner make-Ausgabe kann ich auch keinen Fehler finden - der
komplette sed-Befehl ist übrigens die genannten 816 Zeichen lang...

Probier trotzdem mal den sed-Befehl "einzeln" aus:
- make-Ausgabe in eine Datei umleiten
- alles bis auf den sed-Aufruf wegkürzen
- so lange Zeilen rauslöschen, bis es geht. Die zuletzt gelöschte Zeile
ist schuld ;-)

BTW: Die \ werden AFAIK von make verschluckt und gehören nicht zum
sed-Befehl.
Post by Joerg Rossdeutscher
Ich habe gerade grosse Probleme gehabt, das log vom Terminal in den
Mailclient zu bringen - UTF-8-Problem. Kann das sein, das sed an den
"komischen" Trennern scheitert?
echo -n ¡ | hex
0000 a1

Liegt also im sicheren ASCII-Bereich ;-)
Post by Joerg Rossdeutscher
make --version
GNU Make 3.81beta4
Da bist Du geringfügig aktueller als ich mit 3.80. Nichtmal die 10.1
beta1 ist aktueller ;-)
Post by Joerg Rossdeutscher
echo $LANG
de_DE.UTF-8
Ich sehe die Sonderzeichen in Evolution, aber im gnome-terminal nur
Kästchen. In "konsole" fehlen die Zeichen völlig.
Stell mal überall die Schrift ein, die Du in Evolution verwendest. (Ich
tippe auf einen unvollständigen Konsolenfont.)
Post by Joerg Rossdeutscher
LANG="" ändert am Problem nichts.
LC_ALL=de_DE.UTF-8 make geht bei mir problemlos (SUSE 10.0, bei 10.1
beta1 geht WLAN nicht [1] und die beta2 wird morgen installiert ;-)

Probier aber trotzdem mal ein paar Spracheinstellungen durch:

export LC_ALL=***@euro ; export LANG=***@euro ;
make clean && ./configure && make

und/oder

export LC_ALL=C ; export LANG=C ;
make clean && ./configure && make
Post by Joerg Rossdeutscher
P.S.: Bin umgezogen, sitze zwischen Kartons... viele Kartons... %-)
Das erklärt wohl, warum hier in letzter Zeit so wenig los ist ;-)

Dann mal noch viel Spaß beim wieder auspacken...


*gähn*

Christian Boltz

[1] Da meine Internetverbindung über WLAN läuft (zumindest die letzten
10m) ist sowas ein Blocker für mich. Ja, ich könnte mich auch per
Netzwerkkabel an den Router hängen - dann aber ohne Dualhead, und
das will ich auch nicht ;-)
--
Gna, schon wieder Seti [...] Dabei ist es schon schwierig genug, auf
*diesem* Planeten intelligentes Leben zu finden. [Charly Kuehnast]
Joerg Rossdeutscher
2006-01-29 11:28:34 UTC
Permalink
Post by Christian Boltz
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
Ich wollte gerade jemandem helfen, die CVS version zu installieren,
[...]
Post by Joerg Rossdeutscher
make
cd modules && make
make[1]: Entering directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
sed ' \
[...]
Post by Joerg Rossdeutscher
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }
sed: -e Ausdruck #1, Zeichen 816: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
Seltsam - bei mir läuft make problemlos durch.
An Deiner make-Ausgabe kann ich auch keinen Fehler finden - der
komplette sed-Befehl ist übrigens die genannten 816 Zeichen lang...
- make-Ausgabe in eine Datei umleiten
- alles bis auf den sed-Aufruf wegkürzen
- so lange Zeilen rauslöschen, bis es geht. Die zuletzt gelöschte Zeile
ist schuld ;-)
Ich habe die Ausgabe, mit einem cd erweitert und um die Umleitung
gekürzt, mal angehängt.


Es geht, wenn ich alle Zeilen zu einer zusammenziehe, indem ich am
Zeilenende \ und den Umbruch entferne.

Dengel, dengel, dengel. Später:
Es reicht, die Backslashes zu entfernen. Also so:

sed '
s¡@prefix@¡/usr/local¡ ;
s¡@bindir@¡/usr/local/bin¡ ;
s¡@datadir@¡/usr/local/share¡ ;
s¡@docdir@¡/usr/local/share/doc/fontlinge¡ ;
[...]

Wenn ich drüber nachdenke, erscheint mir, das bei

machwas 'bla \
bla'

der Backslash wegen des ' drumherum nicht escapend wirkt. Es entsteht
daraus anscheinend nicht

machwas 'bla bla'

sondern

machwas 'bla \<cr> bla'

Was ist falsch? Wird das Makefile aus dem .in-File falsch erzeugt, oder
war das schon immer so und die Interpretation hat sich geändert?





Und dann ist mir noch was aufgefallen:

$ echo "abc" | sed 's/b/X/'
aXc

$ echo "abc" | sed 's%b%X%'
aXc

$ echo "abc" | sed 's¡b¡X¡'
sed: -e Ausdruck #1, Zeichen 9: unknown option to `s'

...was ich nicht verstehe. Im Makefile geht dieses i ja.


$ sed --version
GNU sed Version 4.1.4

$ bash --version
GNU bash, version 3.1.5(1)-release (i486-pc-linux-gnu)
Post by Christian Boltz
BTW: Die \ werden AFAIK von make verschluckt und gehören nicht zum
sed-Befehl.
Müssten dann nicht " statt ' drumherum sein?
Dann geht es nämlich.
Post by Christian Boltz
Post by Joerg Rossdeutscher
Ich habe gerade grosse Probleme gehabt, das log vom Terminal in den
Mailclient zu bringen - UTF-8-Problem. Kann das sein, das sed an den
"komischen" Trennern scheitert?
echo -n ¡ | hex
0000 a1
Liegt also im sicheren ASCII-Bereich ;-)
$ echo -n ¡ | hexdump -C
00000000 c2 a1 |..|
00000002

Nö. Wobei ich bei ASCII auch nur sieben Bit als sicher sehe. Aber das
scheint das Problem hier ja nicht zu sein.
Post by Christian Boltz
Post by Joerg Rossdeutscher
make --version
GNU Make 3.81beta4
Da bist Du geringfügig aktueller als ich mit 3.80. Nichtmal die 10.1
beta1 ist aktueller ;-)
War nicht schon beta2 raus? :-)
Post by Christian Boltz
Post by Joerg Rossdeutscher
echo $LANG
de_DE.UTF-8
$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
Post by Christian Boltz
Post by Joerg Rossdeutscher
Ich sehe die Sonderzeichen in Evolution, aber im gnome-terminal nur
Kästchen. In "konsole" fehlen die Zeichen völlig.
Stell mal überall die Schrift ein, die Du in Evolution verwendest. (Ich
tippe auf einen unvollständigen Konsolenfont.)
Ne, weil nur mittlere-Maustaste nicht geht. Rechtsclick-Copy und -Paste
geht. Sollte mit dem Problem aber wohl nix zu tun haben.
Post by Christian Boltz
make clean && ./configure && make
Ich lasse das erst mal, da ja anscheinend der Backslash bzw. dessen
Umfeld das Problem ist, nicht das Sonderzeichen. Das geht hier nämlich.
Post by Christian Boltz
Post by Joerg Rossdeutscher
P.S.: Bin umgezogen, sitze zwischen Kartons... viele Kartons... %-)
Das erklärt wohl, warum hier in letzter Zeit so wenig los ist ;-)
Sach nix. Ich habe 8kg verloren, obwohl erst ein drittel der Kartons
ausgepackt ist und die alte Wohnung nicht renoviert. Ächtz. Beim Umzug
ist dann das DSL-Modem kaputtgegangen, und mit einem neuen Modem habe
ich dann sofort ein Update installiert, das mir X11 zerschossen hat. So
habe ich dann alles erstmal stehen lassen. =%-)

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
David Haller
2006-01-30 05:48:43 UTC
Permalink
Post by Joerg Rossdeutscher
Post by Christian Boltz
Post by Joerg Rossdeutscher
Ich wollte gerade jemandem helfen, die CVS version zu installieren,
[...]
Post by Joerg Rossdeutscher
make
cd modules && make
make[1]: Entering directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
sed ' \
[...]
Post by Joerg Rossdeutscher
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }
sed: -e Ausdruck #1, Zeichen 816: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
Seltsam - bei mir läuft make problemlos durch.
Bei mir auch. Inkl. 'make test'.
Post by Joerg Rossdeutscher
Post by Christian Boltz
An Deiner make-Ausgabe kann ich auch keinen Fehler finden - der
komplette sed-Befehl ist übrigens die genannten 816 Zeichen lang...
- make-Ausgabe in eine Datei umleiten
- alles bis auf den sed-Aufruf wegkürzen
- so lange Zeilen rauslöschen, bis es geht. Die zuletzt gelöschte Zeile
ist schuld ;-)
Ich habe die Ausgabe, mit einem cd erweitert und um die Umleitung
gekürzt, mal angehängt.
Es geht, wenn ich alle Zeilen zu einer zusammenziehe, indem ich am
Zeilenende \ und den Umbruch entferne.
sed '
[...]
Wenn ich drüber nachdenke, erscheint mir, das bei
machwas 'bla \
bla'
der Backslash wegen des ' drumherum nicht escapend wirkt. Es entsteht
daraus anscheinend nicht
machwas 'bla bla'
sondern
machwas 'bla \<cr> bla'
Was ist falsch? Wird das Makefile aus dem .in-File falsch erzeugt, oder
war das schon immer so und die Interpretation hat sich geändert?
Dein sed ist defekt. Andererseits sind die '\' im sed-script ueberfluessig.
Duerfen aber auch nicht stoeren. Aber in dem konkreten Fall koennen
wohl die '¡' durch ein anderes Zeichen (die auto*-tools nehmen da
gerne '%' ersetzt werden. Also:

==== modules/Makefile ====
fontlinge/Config.pm:fontlinge/Config.pm.in ../Makefile.head
sed ' \
s%@prefix@%$(prefix)% ; \
s%@bindir@%$(bindir)% ; \
s%@datadir@%$(datadir)% ; \
s%@docdir@%$(docdir)% ; \
s%@mandir@%$(mandir)% ; \
s%@man3dir@%$(man3dir)% ; \
s%@shareddir@%$(shareddir)% ; \
s%@htmldir@%$(htmldir)% ; \
s%@webgui_html@%$(WEBGUIHTML)% ; \
s%@webgui_scripts@%$(WEBGUISCRIPTS)% ; \
s%@webgui_more@%$(WEBGUIMORE)% ; \
s%@webgui_imgs@%$(WEBGUIIMGS)% ; \
' < $< > $@ || { $(RM) $@ ; exit 1 ; }
====

Ist dann halt IMHO schwerer zu lesen.
Post by Joerg Rossdeutscher
$ echo "abc" | sed 's/b/X/'
aXc
$ echo "abc" | sed 's%b%X%'
aXc
$ echo "abc" | sed 's¡b¡X¡'
sed: -e Ausdruck #1, Zeichen 9: unknown option to `s'
Wie gesagt: das ist ein Bug in deinem sed / deiner Eingabe oder so...
sed bekommt vermutlich die Zeichenfolge

73 c2 a1 62 c2 a1 58 c2 a1
s  ¡ b  ¡ X  ¡

zu sehen, interpretiert folglich nicht '¡' (0xA1) als Trennzeichen,
sondern eben 0xC2 ('Â') somit liest sich das mit dem normalen Trenner
so: s/¡b/¡X/¡ und ¡ ist kein legaler "modifier" des 's'-Befehls. Der
Rest ist "legal" fuer sed, aber eben nicht das gewollte.

Nuja. UTF-8 halt. *hrhr*

Achso, dass anscheinend das (latin[19]) '¡' 0xA1 zu (UTF-8) '¡' 0xC2
0xA1 kodiert ist wohl Zufall.
Post by Joerg Rossdeutscher
Post by Christian Boltz
BTW: Die \ werden AFAIK von make verschluckt und gehören nicht zum
sed-Befehl.
Müssten dann nicht " statt ' drumherum sein?
Dann geht es nämlich.
Nein. Das ist schon ok so.

[..]
Post by Joerg Rossdeutscher
Ich lasse das erst mal, da ja anscheinend der Backslash bzw. dessen
Umfeld das Problem ist, nicht das Sonderzeichen. Das geht hier nämlich.
Sicher? Mach mal:

echo 'U' | sed 's¡U¡X¡'
Post by Joerg Rossdeutscher
Post by Christian Boltz
Post by Joerg Rossdeutscher
P.S.: Bin umgezogen, sitze zwischen Kartons... viele Kartons... %-)
*hehe* ich auch noch, obwohl mein Umzug schon fast ein Jahr her ist ;(

-dnh
--
14: Client-Server
Wir wollen mehr als einen Rechner verkaufen. (Kristian
Köhntopp)
Joerg Rossdeutscher
2006-01-31 21:59:44 UTC
Permalink
Moin,
Post by David Haller
Post by Joerg Rossdeutscher
Post by Christian Boltz
Post by Joerg Rossdeutscher
Ich wollte gerade jemandem helfen, die CVS version zu installieren,
[...]
Post by Joerg Rossdeutscher
make
cd modules && make
make[1]: Entering directory
`/disk3/download/fontlinge_test/fontlinge_rc/modules'
sed ' \
[...]
Post by Joerg Rossdeutscher
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }
sed: -e Ausdruck #1, Zeichen 816: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
Seltsam - bei mir läuft make problemlos durch.
Bei mir auch. Inkl. 'make test'.
Ich kann insoweit entwarnung geben, als dass die "alte" 2.0.1 das
gleiche Problem hat, und die lief schliesslich 2 Jahre lang.
Post by David Haller
Post by Joerg Rossdeutscher
Was ist falsch? Wird das Makefile aus dem .in-File falsch erzeugt, oder
war das schon immer so und die Interpretation hat sich geändert?
Dein sed ist defekt. Andererseits sind die '\' im sed-script ueberfluessig.
Duerfen aber auch nicht stoeren. Aber in dem konkreten Fall koennen
wohl die '¡' durch ein anderes Zeichen (die auto*-tools nehmen da
Ich habe es heute noch mal durchprobiert.
Gestern schrieb ich ja, es reiche, die \ zu entfernen. Stimmt (heute?)
nicht. Ich muss die \ entfernen UND alles zu einer Zeile zusammenziehen.

Hm.

Ich entdecke keinen Bugreport, der dem entspräche und noch offen wäre.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=343080 sah gut aus,
passt dann aber doch nicht (sed-Fehler durch bash-bug, aber dessen
testcases sind hier nicht nachzuvollziehen...)


Das komische i macht aber keinen Kummer. Das war eine Sackgasse.
Post by David Haller
Ist dann halt IMHO schwerer zu lesen.
Post by Joerg Rossdeutscher
$ echo "abc" | sed 's/b/X/'
aXc
$ echo "abc" | sed 's%b%X%'
aXc
$ echo "abc" | sed 's¡b¡X¡'
sed: -e Ausdruck #1, Zeichen 9: unknown option to `s'
Wie gesagt: das ist ein Bug in deinem sed / deiner Eingabe oder so...
sed bekommt vermutlich die Zeichenfolge
73 c2 a1 62 c2 a1 58 c2 a1
s  ¡ b  ¡ X  ¡
zu sehen, interpretiert folglich nicht '¡' (0xA1) als Trennzeichen,
sondern eben 0xC2 ('Â') somit liest sich das mit dem normalen Trenner
so: s/¡b/¡X/¡ und ¡ ist kein legaler "modifier" des 's'-Befehls. Der
Rest ist "legal" fuer sed, aber eben nicht das gewollte.
Nuja. UTF-8 halt. *hrhr*
Die Erklärung ist plausibel.
Post by David Haller
echo 'U' | sed 's¡U¡X¡'
***@ratti:~/debian_mirror$ echo 'U' | sed 's¡U¡X¡'
sed: -e Ausdruck #1, Zeichen 9: unknown option to `s'
***@ratti:~/debian_mirror$ echo 'U' | sed 's/U/X/'
X

...tatsächlich. Im Script selber ging es aber - da wird wohl das
Terminal "hinne sein, während das Script sauber als utf8 eingelesen
wird.


Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Joerg Rossdeutscher
2006-02-02 21:45:34 UTC
Permalink
Moin,

mir lässt das ja keine Ruhe... zwei Dinge habe ich gefunden:


aus
/usr/share/doc/make/NEWS.Debian.gz :

* WARNING: Backward-incompatibility!
In order to comply with POSIX, the way in which GNU make processes
backslash-newline sequences in command strings has changed. See the
GNU make manual section "Command Execution" for details.



Das ist wohl neu. Ich finde aber nicht heraus, WAS denn nun neu ist. Es
könnte sein, dass jetzt neuerdings auf Backslah-Newline folgende Tabs
entfernt werden. Aber das erscheint mir nicht falsch, in unserem Fall.

Leider finde ich auch keine Online-Quelle, die das gleiche zeigt wie
"info make" auf meinem System, das online-Handbuch von make enthält
jedenfalls nicht diesen Absatz:


As a more complex example, this makefile:

all : ; @echo 'hello \
world' ; echo "hello \
world"

will run one shell with a command script of:

echo 'hello \
world' ; echo "hello \
world"

which, according to shell quoting rules, will yield the following
output:

hello \
world
hello world


Passt das zu meinem Problem?





So. Alternativ, zweite Baustelle. Der da kommt mir auch passend vor:

http://savannah.gnu.org/bugs/?func=detailitem&item_id=13665

Meinungen?


Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Christian Boltz
2006-02-02 22:23:07 UTC
Permalink
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
* WARNING: Backward-incompatibility!
Oh, sowas hat man immer gern :-/
Post by Joerg Rossdeutscher
In order to comply with POSIX, the way in which GNU make
processes backslash-newline sequences in command strings has changed.
See the GNU make manual section "Command Execution" for details.
Das ist wohl neu. Ich finde aber nicht heraus, WAS denn nun neu ist.
Steht das nicht unter "Command Execution" in info make ? ;-)
Ansonsten kann ich noch auf das ChangeLog verweisen, das ist
üblicherweise etwas ausführlicher als NEWS.
Post by Joerg Rossdeutscher
Es könnte sein, dass jetzt neuerdings auf Backslah-Newline folgende
Tabs entfernt werden.
Dem Bugreport zufolge vermutlich schon.

[...]
Post by Joerg Rossdeutscher
http://savannah.gnu.org/bugs/?func=detailitem&item_id=13665
Meinungen?
Siehe oben.


Kannst Du mal etwas testen?

Zuerst legst Du angehängten Dateien in ein Verzeichnis und rufst
chmod 755 showparms auf.

Anschließend make aufrufen.

Ergebnis bei mir:

***@cboltz:/tmp/test> make
make test1
make[1]: Entering directory `/home/tmp/test'
./showparms 'foo ; \
bar ; \
baz ' # Aufruf Ende
foo ; bar ; baz
make[1]: Leaving directory `/home/tmp/test'
make test2
make[1]: Entering directory `/home/tmp/test'
./showparms 'foo ;
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make[1]: *** [test2] Fehler 2
make[1]: Leaving directory `/home/tmp/test'
make: *** [all] Fehler 2

Was meldet dieser Test bei Dir?


Gruß

Christian Boltz
--
Ja, ja alles schreckliche Leute hier, die geben einfach Antworten,
die man gar nicht wissen will. Einfach unverschämt, diese Leute.
[Bernd Brodesser in suse-linux]
Joerg Rossdeutscher
2006-02-03 19:20:51 UTC
Permalink
Moin,
Post by Christian Boltz
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
* WARNING: Backward-incompatibility!
Oh, sowas hat man immer gern :-/
Post by Joerg Rossdeutscher
In order to comply with POSIX, the way in which GNU make
processes backslash-newline sequences in command strings has changed.
See the GNU make manual section "Command Execution" for details.
Das ist wohl neu. Ich finde aber nicht heraus, WAS denn nun neu ist.
Steht das nicht unter "Command Execution" in info make ? ;-)
Dort steht über das gepostete hinaus nichts, was interessant klingt -
und definitiv mehr, als in der Online-Version. Sonst tät ich's linken...
ich find ja "info" grässlich...
Post by Christian Boltz
Ansonsten kann ich noch auf das ChangeLog verweisen, das ist
üblicherweise etwas ausführlicher als NEWS
Nix neues dort.
Post by Christian Boltz
Kannst Du mal etwas testen?
Zuerst legst Du angehängten Dateien in ein Verzeichnis und rufst
chmod 755 showparms auf.
Anschließend make aufrufen.
make test1
make[1]: Entering directory `/home/tmp/test'
./showparms 'foo ; \
bar ; \
baz ' # Aufruf Ende
foo ; bar ; baz
make[1]: Leaving directory `/home/tmp/test'
make test2
make[1]: Entering directory `/home/tmp/test'
./showparms 'foo ;
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make[1]: *** [test2] Fehler 2
make[1]: Leaving directory `/home/tmp/test'
make: *** [all] Fehler 2
Was meldet dieser Test bei Dir?
***@ratti:/tmp/test$ make
make test1
make[1]: Entering directory `/tmp/test'
./showparms 'foo ; \
bar ; \
baz ' # Aufruf Ende
foo ; \
bar ; \
baz
make[1]: Leaving directory `/tmp/test'
make test2
make[1]: Entering directory `/tmp/test'
./showparms 'foo ;
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make[1]: *** [test2] Fehler 2
make[1]: Leaving directory `/tmp/test'
make: *** [all] Fehler 2


Ich sehe:
1. Andere Einrückungen (das ist wohl das neue matchen auf Tabs nach \n)

2.
foo ; \
bar ; \
baz

statt

foo ; bar ; baz

Sie, das kommt mir aber bekannt vor. :-) Und nun?




GNU Make 3.81beta4

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Christian Boltz
2006-02-03 23:23:26 UTC
Permalink
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
Post by Christian Boltz
Post by Joerg Rossdeutscher
* WARNING: Backward-incompatibility!
Oh, sowas hat man immer gern :-/
[Testcase]
Post by Joerg Rossdeutscher
1. Andere Einrückungen (das ist wohl das neue matchen auf Tabs nach \n)
OK, das ist unproblematisch und auch logisch, da ja die Tabs in der
make-Syntax IIRC erforderlich sind.
Post by Joerg Rossdeutscher
2.
foo ; \
bar ; \
baz
statt
foo ; bar ; baz
Sie, das kommt mir aber bekannt vor. :-) Und nun?
Du könntest/solltest einen Bugreport gegen make einreichen ;-)

Das Ganze ist übrigens nicht mal abwegig - die Backslashes sollten IMHO
wirklich rausgeworfen werden.

Begründung:

- Ohne Backslashes meint make, dass der Befehl am Zeilenende aufhört
-> der Backslash ist also erforderlich
- Da der Backslash von make gebraucht wird, sollte er auch von make
entfernt (und *nicht* an den aufgerufenen Befehl weitergegeben)
werden.
Anders ausgedrückt: Im derzeitigen Zustand ist es unmöglich, manche
Befehle auszuführen - siehe unseren sed-Aufruf.

Über den Sinn der Erhaltung der Zeilenumbrüche kann man diskutieren, in
unserem Fall ist es jedenfalls egal ;-)

Falls der Bugreport nichts bringt, sehe ich folgende Optionen:
- den sed-Befehl auf eine Zeile zusammenziehen (Schreck lass nach!)
- Config.pm direkt von configure schreiben lassen, was nebenbei auch
das (hoffentlich theoretische [1]) Problem von "Trennzeichen im
Pfadname" lösen würde.
Post by Joerg Rossdeutscher
GNU Make 3.81beta4
Bin ich froh, dass in SUSE 10.1 beta3 "nur" make 3.80 drin ist (und es
dank Feature Freeze wohl auch keine neuere Version mehr abbekommt) ;-)


Gruß

Christian Boltz

[1] wobei jemand, der ¡ im Pfadnamen verwendet, definitiv bestraft
werden sollte ;-)
--
Post by Joerg Rossdeutscher
if anybody who broke a nightly build should pay on beer, the
whole development department would be drunk I guess ;-)
[...] over the last 2 weeks we would have been *very* drunk.
[> Ulrich Windl and Marcus Meissner]
Joerg Rossdeutscher
2006-02-04 10:59:02 UTC
Permalink
Moin,
Post by Christian Boltz
- Ohne Backslashes meint make, dass der Befehl am Zeilenende aufhört
-> der Backslash ist also erforderlich
- Da der Backslash von make gebraucht wird, sollte er auch von make
entfernt (und *nicht* an den aufgerufenen Befehl weitergegeben)
werden.
Anders ausgedrückt: Im derzeitigen Zustand ist es unmöglich, manche
Befehle auszuführen - siehe unseren sed-Aufruf.
Verstehe ich das richtig?

Wenn da steht

ein
Befehl

versucht make, "ein" auszuführen und danach "Befehl". Was nicht geht.




Wenn da aber steht

ein \
Befehl

dann versucht make "ein \[Zeilenumbruch]Befehl" auszuführen, was auch
nicht geht.





Derzeit gibt es keine Möglichkeit, "ein Befehl" auszuführen, ausser es
genau so in eine Zeile zu schreiben.


Müsste dann nicht das komplette Debian auseinanderfliegen, weil ja
praktisch gar nix größeres mehr make'd?

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
David Haller
2006-02-03 23:23:58 UTC
Permalink
Hallo,
Post by Christian Boltz
make test1
make[1]: Entering directory `/tmp/test'
./showparms 'foo ; \
bar ; \
baz ' # Aufruf Ende
foo ; \
bar ; \
baz
make[1]: Leaving directory `/tmp/test'
make test2
make[1]: Entering directory `/tmp/test'
./showparms 'foo ;
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make[1]: *** [test2] Fehler 2
make[1]: Leaving directory `/tmp/test'
make: *** [all] Fehler 2
1. Andere Einrückungen (das ist wohl das neue matchen auf Tabs nach \n)
2.
foo ; \
bar ; \
baz
statt
foo ; bar ; baz
Sie, das kommt mir aber bekannt vor. :-) Und nun?
GNU Make 3.81beta4
Hm. Bei mir sieht's so aus wie bei Christian, GNU make 3.79.1. Wozu brauchst
du die beta-Version?

Kannst du mal die Ausgabe des folgenden Makefiles testen:

====
all:
-echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
-echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
-export LC_ALL="C"; export LANG="C"; echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
-export LC_ALL="C"; export LANG="C"; echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
====

und komplett hier mailen? Bei mir klappt das in allen Versionen
(Ausgabe ist jew. das ersetzte docdir).

Fall eine der Varianten klappt koennen wir die dann nehmen.

-dnh
--
Wenn Goethe anschaulich über nicht primär zur Fortpflanzung gedachte
Geschlechtsakte schreibt, kollidiert beim Publidumm der "Huch, Kultur"-Reflex
mit dem "Geil, Ficken"-Reflex, die sich gegenseitig negieren und das Publidumm
damit komplett lahmlegen. [Andreas Galinski in de.alt.fan.haraldschmidt]
Joerg Rossdeutscher
2006-02-04 10:49:37 UTC
Permalink
Moin!
Post by David Haller
Post by Joerg Rossdeutscher
GNU Make 3.81beta4
Hm. Bei mir sieht's so aus wie bei Christian, GNU make 3.79.1. Wozu brauchst
du die beta-Version?
Das ist die normale in Debian sid.
Post by David Haller
====
====
und komplett hier mailen? Bei mir klappt das in allen Versionen
(Ausgabe ist jew. das ersetzte docdir).
Fall eine der Varianten klappt koennen wir die dann nehmen.
***@ratti:/tmp$ make all
Makefile:2: *** missing separator (Meinten Sie TAB anstelle von 8
Leerzeichen?). Schluss.


Ich ersetze die 8 Leerzeichen mit Tabs.


***@ratti:/tmp$ make all
echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
sed: -e Ausdruck #1, Zeichen 70: unterminated address regex
make: [all] Fehler 1 (ignoriert)
echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
sed: -e Ausdruck #1, Zeichen 70: unterminated address regex
make: [all] Fehler 1 (ignoriert)
export LC_ALL="C"; export LANG="C"; echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
sed: -e expression #1, char 70: unterminated address regex
make: [all] Fehler 1 (ignoriert)
export LC_ALL="C"; export LANG="C"; echo '@docdir@' | sed '\
s%@prefix@%/usr/local%;\
s%@docdir@%/usr/local/share/doc/fontlinge%;'
sed: -e expression #1, char 70: unterminated address regex
make: [all] Fehler 1 (ignoriert)


Sieht nicht gut aus.

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Joerg Rossdeutscher
2006-02-04 11:37:39 UTC
Permalink
Moin,
Post by David Haller
Hm. Bei mir sieht's so aus wie bei Christian, GNU make 3.79.1. Wozu brauchst
du die beta-Version?
Nachtrach:

Die heutige CVS von http://savannah.gnu.org/projects/make/ verhält sich
identisch zur Debian-Version. Trägt auch die gleiche Versionsnummer. Wer
gucken will:

To build make from CVS:
% cvs -z3 -d:pserver:***@cvs.savannah.gnu.org:/sources/make co make
% cd make
% AUTOMAKE=automake-1.9 ACLOCAL=aclocal-1.9 autoreconf -s -i
% ./configure
% make update
% make

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Christian Boltz
2006-02-04 16:40:47 UTC
Permalink
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
Post by David Haller
Hm. Bei mir sieht's so aus wie bei Christian, GNU make 3.79.1. Wozu
brauchst du die beta-Version?
Die heutige CVS von http://savannah.gnu.org/projects/make/ verhält
sich identisch zur Debian-Version. Trägt auch die gleiche
Versionsnummer. Wer gucken will: [...]
Habe ich gemacht und konnte den Fehler reproduzieren - und wie Du am
eben rausgegangenen CVS-Commit sehen kannst, auch beheben :-)

Erklärung: make unterscheidet jetzt beim Quoting zwischen »"« und »'«.
Da wir beim sed-Befehl hoffentlich kein Quoting von Variablen brauchen
([1], [2]), habe ich den sed-Aufruf einfach auf »"« geändert.

Zu finden ist die Erklärung in info make (CVS-Version).
Ich hänge den relevanten Ausschnitt an - der interessante Abschnitt
fängt mit "As a more complex example" an.


Gruß

Christian Boltz

[1] die $(irgendwas) werden sowieso von make ersetzt

[2] wer $ in Pfadnamen verwendet, muss ebenso hart bestraft werden wie
Leute, die ¡ verwenden ;-)
--
Um es mal so zu sagen: Ich Kohlenstoff. Computer Silizium.
Silizium gefälligst so hüpfen, wie Kohlenstoff sagt, nicht umgekehrt.
[Ratti in suse-linux]
Joerg Rossdeutscher
2006-02-04 18:57:55 UTC
Permalink
Moin,
Post by Christian Boltz
Habe ich gemacht und konnte den Fehler reproduzieren - und wie Du am
eben rausgegangenen CVS-Commit sehen kannst, auch beheben :-)
Erklärung: make unterscheidet jetzt beim Quoting zwischen »"« und »'«.
Da wir beim sed-Befehl hoffentlich kein Quoting von Variablen brauchen
([1], [2]), habe ich den sed-Aufruf einfach auf »"« geändert.
Zu finden ist die Erklärung in info make (CVS-Version).
Ich hänge den relevanten Ausschnitt an - der interessante Abschnitt
fängt mit "As a more complex example" an.
Mein Goldjunge. :-)

Ich habe ein update für 2.0.1 released, welches die Änderung im Makefile
auf die alte Version zurück"portiert" (Was für ein großes Wort für zwei
Anführungsstriche).

Superdanke.
Post by Christian Boltz
Wenn ich drüber nachdenke, erscheint mir, das bei
machwas 'bla \
bla'
der Backslash wegen des ' drumherum nicht escapend wirkt.
Mal sehen, ob auch in Zukunft die Programme an meine Irrtümer angepasst
werden. :-)

Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Christian Boltz
2006-02-04 21:03:21 UTC
Permalink
Hallo Ratti, hallo Leute,
Post by Joerg Rossdeutscher
Post by Christian Boltz
Habe ich gemacht und konnte den Fehler reproduzieren - und wie Du
am eben rausgegangenen CVS-Commit sehen kannst, auch beheben :-)
Erklärung: make unterscheidet jetzt beim Quoting zwischen »"« und
»'«. Da wir beim sed-Befehl hoffentlich kein Quoting von Variablen
brauchen ([1], [2]), habe ich den sed-Aufruf einfach auf »"«
geändert.
Zu finden ist die Erklärung in info make (CVS-Version).
Ich hänge den relevanten Ausschnitt an - der interessante Abschnitt
fängt mit "As a more complex example" an.
Mein Goldjunge. :-)
Ich habe ein update für 2.0.1 released,
Das erklärt, warum ich in meinem Posteingang eine Mail hatte, die ein
neues Fontlinge-Release meldet ;-)

Hast Du auch ans Update des ChangeLog gedacht? ;-) *SCNR*
(Commit für die CVS-Version ist soeben rausgegangen.)
Post by Joerg Rossdeutscher
welches die Änderung im
Makefile auf die alte Version zurück"portiert" (Was für ein großes
Wort für zwei Anführungsstriche).
*g*

Mach Dir nix draus - für SUSE 10.0 gab es (nach Bugreport von mir) ein
YOU-Update für StoreBackup, ohne dass überhaupt irgendeine Datei
geändert worden wäre.
Einzige Änderung war das Setzen des x-bits für die im Paket enthaltenen
Verzeichnisse und Scripte - ohne wollte es halt nicht laufen ;-)
Post by Joerg Rossdeutscher
Superdanke.
Bitte schön ;-)
Post by Joerg Rossdeutscher
Post by Christian Boltz
Wenn ich drüber nachdenke, erscheint mir, das bei
machwas 'bla \
bla'
der Backslash wegen des ' drumherum nicht escapend wirkt.
Jepp.
Post by Joerg Rossdeutscher
Mal sehen, ob auch in Zukunft die Programme an meine Irrtümer
angepasst werden. :-)
*LoL*


Gruß

Christian Boltz
--
Post by Joerg Rossdeutscher
Du tust ja fast so, als gäbe es etwas, das bei Redhat _nicht_
nach hinten losgeht!?
.forward ? [Matthias Kabel zu Felix von Leitner in dasr]
Joerg Rossdeutscher
2006-02-02 22:07:34 UTC
Permalink
Post by David Haller
Wie gesagt: das ist ein Bug in deinem sed / deiner Eingabe oder so...
sed bekommt vermutlich die Zeichenfolge
73 c2 a1 62 c2 a1 58 c2 a1
s  ¡ b  ¡ X  ¡
Das könnte die Probleme an der Shell erklären.

However... ich habe im Makefile mal die "komischen i's" durch % ersetzt.
Das Problem ist immer noch da. Damit ist die "Problem wegen
UTF8"-Theorie gestorben, oder?:

make clean
./configure
make

ergibt:



make -C modules
make[1]: Entering directory
`/disk3/download/fontlinge_altes_release/modules'
sed ' \
s%@prefix@%/usr/local% ; \
s%@bindir@%/usr/local/bin% ; \
s%@datadir@%/usr/local/share% ; \
s%@docdir@%/usr/local/share/doc/fontlinge% ; \
s%@mandir@%/usr/local/share/man% ; \
s%@man3dir@%/usr/local/share/man/man3% ; \
s%@shareddir@%/usr/local/share/fontlinge% ; \
s%@htmldir@%/usr/local/share/fontlinge/webgui% ; \
' < fontlinge/Config.pm.in > fontlinge/Config.pm || { rm -f
fontlinge/Config.pm ; exit 1 ; }

sed: -e Ausdruck #1, Zeichen 355: unterminated address regex
make[1]: *** [fontlinge/Config.pm] Fehler 1
make[1]: Leaving directory
`/disk3/download/fontlinge_altes_release/modules'
make: *** [make_modules] Fehler 2


Gruß,
Ratti
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
--
-o) fontlinge | Fontmanagement for Linux | Schriftenverwaltung in Linux
/\\ http://freshmeat.net/projects/fontlinge/
_\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/
Loading...