• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

[DEV] Erweiterung der compile.bat

mcbernie

Geocacher
Hallo liebe Cachewolf-Entwicklergemeinde.
Ich habe mich heute mal mit Cachewolf befasst.
Da ich SD bin und einfach mal den aktuellen Trunk gezogen habe (liegt in meiner Natur), ist mir aufgefallen das dort noch nicht der bounycastle-namespace (die der user pfeffer portiert und integriert hat) in der compile.bat mit compiliert wird.
Ich hab die fehlenden Elemente jetzt hinzugefügt.

Hier die neue compile.bat
Code:
if not exist bin\CacheWolf mkdir bin\CacheWolf
javac -source 1.3 -target 1.1 -cp ./lib/CompileEwe.zip;./lib/  -d ./bin/ -deprecation ./src/org/bouncycastle/asn1/*.java ./src/org/bouncycastle/asn1/nist/*.java ./src/org/bouncycastle/asn1/oiw/*.java ./src/org/bouncycastle/asn1/pkcs/*.java ./src/org/bouncycastle/asn1/sec/*.java ./src/org/bouncycastle/asn1/teletrust/*.java ./src/org/bouncycastle/asn1/x9/*.java ./src/org/bouncycastle/asn1/x500/*.java ./src/org/bouncycastle/asn1/x500/style/*.java ./src/org/bouncycastle/asn1/x509/*.java ./src/org/bouncycastle/crypto/*.java ./src/org/bouncycastle/crypto/agreement/*.java ./src/org/bouncycastle/crypto/digests/*.java ./src/org/bouncycastle/crypto/encodings/*.java ./src/org/bouncycastle/crypto/engines/*.java ./src/org/bouncycastle/crypto/generators/*.java ./src/org/bouncycastle/crypto/io/*.java ./src/org/bouncycastle/crypto/macs/*.java ./src/org/bouncycastle/crypto/modes/*.java ./src/org/bouncycastle/crypto/params/*.java ./src/org/bouncycastle/crypto/modes/*.java ./src/org/bouncycastle/crypto/prng/*.java ./src/org/bouncycastle/crypto/signers/*.java ./src/org/bouncycastle/crypto/tls/*.java ./src/org/bouncycastle/crypto/util/*.java ./src/org/bouncycastle/math/ec/*.java ./src/org/bouncycastle/util/*.java ./src/org/bouncycastle/util/encoders/*.java ./src/org/bouncycastle/util/io/*.java ./src/CacheWolf/*.java ./src/CacheWolf/imp/*.java ./src/CacheWolf/navi/*.java ./src/CacheWolf/navi/touchControls/*.java ./src/CacheWolf/exp/*.java ./src/CacheWolf/utils/*.java ./src/CacheWolf/model/*.java ./src/CacheWolf/view/*.java  ./src/CacheWolf/view/ewe/*.java  ./src/CacheWolf/view/pda/*.java
javac -source 1.3 -target 1.1 -cp ./lib/CompileEwe.zip;./lib/  -d ./lib/ -deprecation ./lib/net/ax86/*.java ./lib/org/json/*.java
pause

Ich habe auch das Shell-Skript angepasst (compile.sh) hab aber keine Möglichkeit dies auf richtigkeit zu prüfen...

Ich hoffe ich konnte ein wenig dazu beitragen die Welt zu verbessern :D
und das ich keine Foren Regeln missachtet habe. :roll:
 

Anhänge

  • cachewolf_compile.zip
    816 Bytes · Aufrufe: 14

SammysHP

Moderator
Teammitglied
Was für Forenregeln sollten das denn sein?

Btw: Habt ihr schonmal über Ant nachgedacht? Würde die Sache extremst vereinfachen. ;)
 

MiK

Geoguru
Ant gibt es ja schon. Damit werden ja auch die Pakete gebaut. Aber wenn man nur mal schnell was anpassen und compilieren will, sind die Batches einfacher und schneller.
 

MiK

Geoguru
Beim Aufruf macht es natürlich keinen Unterschied.
Es geht darum, dass man dann erst mal ant installieren muss, was ich nicht überall habe, wo ich mal schnell eine CW-Korrektur mache.
Und was viel wichtiger ist: Das batch läuft viel schneller durch, da es wirklich nur kompiliert. Ant macht (in der aktuell in CW verwendeten Form) noch viel mehr und baut die ganze Zips für die NBs.
 
OP
M

mcbernie

Geocacher
Tatsächlich habe ich hier auf dem Rechner nur das JDK, UltraEdit und eine Konsole offen...
und es geht einfach einfach!
Und schnell ;)

Ich ziehe das für schnelles Experimentieren sogar Eclipse vor!

Gruß,
 

MiK

Geoguru
mcbernie schrieb:
Tatsächlich habe ich hier auf dem Rechner nur das JDK, UltraEdit und eine Konsole offen...
und es geht einfach einfach!
Und schnell ;)

Ich ziehe das für schnelles Experimentieren sogar Eclipse vor!
Genau das meinte ich.
 

SammysHP

Moderator
Teammitglied
Na ja, kann mir auch egal sein. Für meine größeren Projekte (bzw. an denen ich arbeite) nutze ich Ant, weil es mit den Targets sehr flexibel ist. Aber wenn ihr mit den Batch-Dateien zufrieden seid, ist's ja ok.
 

MiK

Geoguru
Wie gesagt: Es gibt ja Ant. Und wer will, kann es auch benutzen. Nur für manche Umstände ist die Batch halt einfacher.
 

schwaller

Geocacher
ich hatte es an anderer stelle schon erwähnt - hier auch die angepasste fwrtsnapshot.sh

wäre echt nett, wenn die jemand einchecken würde.

Code:
#!/bin/sh
# $Id$

PATH=$PATH:/usr/local/bin:/usr/bin:$HOME/bin:./programs
LC_ALL=C
unset LANG LANGUAGE
export PATH LC_ALL

# natureshadow insists on using “which”… so be it
# allow the caller to override the paths to the tools
test -n "$EWE" || EWE=$(which ewecl)
test -n "$CPIO" || CPIO=$(which cpio)

set -x
v=$(svn info | sed -n '/Last Changed Rev: /s///p')
printf '/VER_SVN =/s/\$.*\$/$LastChanged''Revision: %s $/\nw\nq\n' $v | \
    ed -s src/CacheWolf/Version.java
rm -rf bin
mkdir -p bin/CacheWolf
javac -source 1.3 -target 1.1 -encoding windows-1252 \
     -cp lib/CompileEwe.zip:lib -d bin -deprecation -nowarn \
     src/CacheWolf/*.java src/CacheWolf/*/*.java src/CacheWolf/navi/touchControls/*.java src/CacheWolf/view/*/*.java \
	 src/org/bouncycastle/*/*.java src/org/bouncycastle/*/*/*.java src/org/bouncycastle/*/*/*/*.java
javac -source 1.3 -target 1.1 -encoding windows-1252 \
    -cp ./lib/CompileEwe.zip:lib -d lib -deprecation -nowarn \
	lib/net/ax86/*.java ./lib/org/json/*.java
$EWE programs/Jewel.ewe -c cw-pda.jnf
$EWE programs/Jewel.ewe -c cw-ppc2003.jnf
$EWE programs/Jewel.ewe -c cw-pc.jnf
$EWE programs/Jewel.ewe -c cw-jar.jnf
# Don’t change the order of the above Jewel commands because
# the PC version has to overwrite the PDA version of the EWE file
rm -rf published
if test '!' -e programs/CacheWolf/Jar/CacheWolf.bat; then
	rm -rf bin
	exit 1
fi
mkdir -p published/dat/attributes
mv programs/CacheWolf/* published/
cp lib/java_ewe.dll published/Jar/

chmod -R u+w published

printf '1,$g/ 12M/s///\nw\nq\n' | ed -s published/Jar/CacheWolf.bat
#preparing the files for datfiles zip/tgz in ../published/dat
## CacheWolf.ewe from work and all files from res_noewe
cp work/CacheWolf.ewe published/
(cd res_noewe && cp -R * ../published/dat/)
## vga-sized attributes
cp res_noewe/attributes-big/*.gif published/dat/attributes/
## ewe libs
cp platform-dep/PocketPC2003/ewe.dll published/dat/
mkdir -p published/dat/PNA-WinCE42
cp -R platform-dep/PNA-WinCE42/ewe.dll published/dat/PNA-WinCE42/
# make datfiles zip and tgz
chmod -R 0755 published
find published -type f -print0 | xargs -0 chmod 0644
(
	cd published/dat
	find * -type f | fgrep -v /.svn/ | sort >../flst
	$CPIO -oC512 -Hustar -Mdist <../flst | gzip -n9 >../datfiles.tgz
	zip -X ../datfiles.zip -@ <../flst
)
rm -rf published/dat published/flst
chmod 644 published/datfiles.tgz published/datfiles.zip
mkdir -p $HOME/public_html/CacheWolf-BE/r$v
mv published/* $HOME/public_html/CacheWolf-BE/r$v/
rm -rf bin published
 

Anhänge

  • fwrtsnapshot.zip
    1,2 KB · Aufrufe: 4

wirsindvier

Geocacher
Hat hier eigentlich schon irgendjemand erfolgreich mit der neuen compile.sh einen CacheWolf gebaut? Bei mir tut's nämlich seit r3057 nicht mehr:

Code:
./src/CacheWolf/navi/touchControls/MovingMapControlItem.java:28: cannot find symbol
symbol  : class Global
location: package CacheWolf
import CacheWolf.Global;
                ^
./src/CacheWolf/navi/touchControls/MovingMapControlItem.java:29: cannot find symbol
symbol  : class Preferences
location: package CacheWolf
import CacheWolf.Preferences;
                ^
./src/CacheWolf/navi/touchControls/MovingMapControls.java:28: cannot find symbol
symbol  : class Global

[...]

import CacheWolf.MainTab;
                ^
./src/CacheWolf/navi/GotoPanel.java:37: cannot find symbol
symbol  : class MyLocale
location: package CacheWolf
import CacheWolf.MyLocale;
                ^
100 errors
./compile.sh: 25: ./src/CacheWolf/Attribute.java: Permission denied
 

wirsindvier

Geocacher
araber95 schrieb:
hab mal die compile scripts angepackt. Bitte um Rückmeldung!

Leider haben sich nur die Fehlermeldungen geändert:
Code:
error: unsupported encoding: 8
error: unsupported encoding: 8
error: unsupported encoding: 8
[...]
error: unsupported encoding: 8
error: unsupported encoding: 8
100 errors
./compile.sh: 37: ./src/CacheWolf/Attribute.java: Permission denied
error: unsupported encoding: 
error: unsupported encoding: 
error: unsupported encoding: 
[...]
error: unsupported encoding: 
error: unsupported encoding: 
10 errors

Das ganze unter Ubuntu 10.10 mit
Code:
$ javac -version
javac 1.6.0_26
bzw.
Code:
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
 

arbor95

Geoguru
Vielleicht kannst du es ja mal zum Laufen bringen.
Ich hab da halt einfach etwas herumgeraten.
Aber vermutlich geht das nicht so mit mit den Variablen.

Also für CW musst mit UTF-8 encoding compiliert werden. Der zweite Teil für das json ist mit cp1252.
 

wirsindvier

Geocacher
araber95 schrieb:
Vielleicht kannst du es ja mal zum Laufen bringen.
Ich hab da halt einfach etwas herumgeraten.
Aber vermutlich geht das nicht so mit mit den Variablen.

Also für CW musst mit UTF-8 encoding compiliert werden. Der zweite Teil für das json ist mit cp1252.

Inzwischen ist ja mit r3102 alles wieder Richtung CP1252 zurückgebaut. Da lag mein Problem aber gar nicht, es war ein guter alter Backslash... :kopfwand:

Code:
$ svn diff compile.sh
Index: compile.sh
===================================================================
--- compile.sh	(Revision 3102)
+++ compile.sh	(Arbeitskopie)
@@ -30,10 +30,8 @@
    ./src/org/bouncycastle/*/*/*.java \
    ./src/org/bouncycastle/*/*/*/*.java \
    ./src/CacheWolf/*/*/*.java \
-   ./src/CacheWolf/*/*.java
-   ./src/CacheWolf/*.java \
-   ./src/CacheWolf/*/*/*.java \
-   ./src/CacheWolf/*/*.java
+   ./src/CacheWolf/*/*.java \
+   ./src/CacheWolf/*.java
 compile_json \
    lib/net/*/*.java \
    lib/org/*/*.java

Damit habe ich nun wieder einen lauffähigen CacheWolf gebaut bekommen. :2thumbs:
 

SammysHP

Moderator
Teammitglied
Mich würde interessieren, was es für Probleme mit UTF-8 gibt. Ich habe schon unzählige Programme in Java geschrieben, alle mit UTF-8. Auch meine Webseiten-Parser laufen mit UTF-8.
 

MiK

Geoguru
Mich würde interessieren, wozu der Quelltext von CW in UTF-8 sein sollte. Gibt es dafür einen zwingenden Grund?
 

arbor95

Geoguru
1. EasyEclipse + SVN merkt sich UTF-8 nicht als Textcodierung in der Projekteinstellung. bzw beim Erzeugen des java-Projektes aus dem svn-Archiv ist die Codierung immer auf CP1252 gestellt.

Das wäre noch zu handhaben, aber
2. in mindestens einer Basis-Methode wird explizit mit char als CP1252 - Codierung gearbeitet. d.h. vermutlich etwas aufwändigere Codeanpassung und Tests für die ich grad keine Zeit habe.

Bei der Rückcodierung habe ich festgestellt, dass für einige .java - Dateien die Codierung eh schon wieder auf cp1252 stand nur durch Ein/Auschecken im svn-Archiv. (Ist ja auch ohne BOM in vielen Fällen kein Unterschied)
 
Oben