<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Me again,<br>
today i will focus on OSGEO4W-Apps and how to get them portable. With portable i mean to have an computer independent install eg. on an USB-flash drive.<br>
So here are the apps, which are not completely portable because postinstall patches files with full pathnames.<br>
<br>
gdal-(16,17): gdal-config, a bourne shell script, which i use like this:<br>
--<br>
#!/bin/sh/<br>
CONFIG_LIBS="$osgeo4w_msys/lib/gdal_i.lib"<br>
CONFIG_DEP_LIBS="-L$osgeo4w_msys/lib -lpng -lz"<br>
CONFIG_PREFIX="$osgeo4w_msys"<br>
CONFIG_CFLAGS="-I$osgeo4w_msys/include"<br>
....<br>
--<br>
<br>
gpsbabel: has a qt.conf with windows like paths and windows like ini file format. Changed it to:<br>
--<br>
[paths]<br>
Prefix=%OSGEO4W_ROOT%\\apps\\qt4<br>
Binaries=%OSGEO4W_ROOT%\\bin<br>
Libraries=%OSGEO4W_ROOT%\\lib<br>
Headers=%OSGEO4W_ROOT%\\include\\qt4<br>
--<br>
BUT: i don't know if the win environment is interpretated?!<br>
<br>
Python2(6,7)<br>
I always mentioned python-PyQt4 with sipconfig and pyqtconfig.<br>
<br>
qgis:<br>
has a qgis.reg, which could be an empty file. Better use --configpath "%HOME%\.qgis" in qgis.bat<br>
<br>
Qt4:<br>
has a qmake.conf - seems to be Unix-like makefile so i changed it as follows:<br>
$$OSGEO4W_ROOT/apps/Qt4/mkspecs/win32-msvc2010<br>
<br>
What do you think ?<br>
<br>
<br>
further worth mentioned:<br>
batch files in osgeo4w/bin:<br>
beegis.bat: why not using env variable OSGEO4W_ROOT throughout the whole file?<br>
-> change first ine: @call %OSGEO4W_ROOT%\bin\o4w_env.bat<br>
<br>
designer-qgis-dev.bat: well done, it uses %~dp0 to point to right directory:<br>
call "%~dp0\o4w_env.bat"<br>
<br>
gpsbaelfe.bat: Don't hardcode OSGEO4W_ROOT, but call o4w_env.bat with %~dp0<br>
same with: grassXX.bat, liblas, monteverdi, nettools, pyuic, setup and udig<br>
<br>
also we have a qt.conf here and qgis.bat (and browser, dev etc.) which could easily be edited as i suggested above!<br>
<br>
Thank you very much for reading,<br>
best regards,<br>
Andreas<br>
--<br>
<font size="2" face="Helvetica">Dr. Andreas Müller -_- </font><font size="2" face="Helvetica">Universität Trier - FB VI - Kartographie,
<font size="2" face="Helvetica">muellea@uni-trier.de </font></font>
<div>
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<p class="MsoNormal"><font size="2" face="Helvetica">54286 Trier, Behringstr. 29, F 191, ++496512014576<br>
</font></p>
</div>
</div>
</div>
</div>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF329117"><font color="#000000" size="2" face="Tahoma"><b>Von:</b> Müller, Andreas, Dr. phil.<br>
<b>Gesendet:</b> Mittwoch, 18. Februar 2015 12:30<br>
<b>An:</b> Matt Wilkie<br>
<b>Betreff:</b> AW: [osgeo4w-dev] osgeo4w portability<br>
</font><br>
</div>
<div></div>
<div>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">Matt,<br>
after i understood what exactly apt does and after your last contributions to it, i am happy with your code! I made a full download of all packages and changed all "postinstall infected" files to use them as a reference for future changes and new packages.
 My plan is to break the installation, copy those files, if nothing changed (i played around with difflib: http://pymotw.com/2/difflib/) and continue install with registering in setup.ini and installed.db<br>
There are always pitfalls, <span class="b4">i can't foresee, i</span><span class="b5">n particular that i'm not able to test all changes i made</span>, due to lacks of experience and time. As my main goal is to give the portable osgeo4w to my students,
<span class="b5">at least i can misuse them to serve as</span><span class="b4"> "g</span><span class="b3">uin</span><span class="b2">ea pi</span><span class="b1">gs</span>" ;-)<br>
<br>
I talked about "cases" of non-portability, here is one more - it was hard to find: PyQt4 has config-templates with hard coded paths in pyqtconfig.py and sipconfig.py! I am
<span class="b5">a little surprised t</span><span class="b4">ha</span><span class="b3">t
</span>it works however? But there was also a solution on <a class="external" href="http://www.mantidproject.org/Building_Windows_Dependencies" target="_blank">
http://www.mantidproject.org/Building_Windows_Dependencies</a>, as i reported here:
<a href="https://hub.qgis.org/issues/11430" target="_blank">https://hub.qgis.org/issues/11430</a>.<br>
<br>
<div>Oh, and for python programmers: i always missed "idle" in OSGEO4W_ROOT\bin:<br>
rem idle.bat<br>
@echo off<br>
call %OSGEO4W_ROOT%\bin\o4w_env.bat<br>
start "IDLE" /D%OSGEO4W_ROOT%\apps\python27\lib\idlelib /B pythonw idle.pyw %*<br>
<br>
regards,<br>
Andreas<br>
<br>
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<div style="font-family:Tahoma; font-size:13px">
<p class="MsoNormal"><font size="2" face="Helvetica">Dr. Andreas Müller -_- </font>
<font size="2" face="Helvetica">Universität Trier - FB VI - Kartographie, <font size="2" face="Helvetica">
muellea@uni-trier.de </font></font></p>
<p class="MsoNormal"><font size="2" face="Helvetica">54286 Trier, Behringstr. 29, F 191, ++496512014576<br>
</font></p>
</div>
</div>
</div>
</div>
<div style="font-family:Times New Roman; color:#000000; font-size:16px">
<hr tabindex="-1">
<div id="divRpF257688" style="direction:ltr"><font color="#000000" size="2" face="Tahoma"><b>Von:</b> Matt Wilkie [maphew@gmail.com]<br>
<b>Gesendet:</b> Mittwoch, 18. Februar 2015 09:03<br>
<b>An:</b> Müller, Andreas, Dr. phil.<br>
<b>Cc:</b> osgeo4w-dev@lists.osgeo.org<br>
<b>Betreff:</b> Re: [osgeo4w-dev] osgeo4w portability<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">
<div>
<div>
<div>Andreas, <br>
<br>
</div>
Thanks for the specific examples. That's exactly what I thought of collecting in this thread. Even if there's no immediate solution or response forthcoming I encourage more of them (from anyone).
<br>
<br>
I'm only able to spend a few stolen hours here and there on apt and related packaging efforts, so progress from
<br>
me comes in fits and starts, but it is something I'll be continuing to move forward. ;-)<br>
<br>
</div>
cheers,<br>
<br>
</div>
matt<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Feb 9, 2015 at 4:34 AM, Müller, Andreas, Dr. phil.
<span dir="ltr"><<a href="mailto:muellea@uni-trier.de" target="_blank">muellea@uni-trier.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
Hi Matt and Alex and all readers,<br>
First: I hope this post fits in the right place, because i had no mail to respond to...<br>
<br>
I asked Matt at github, <a href="https://github.com/maphew/apt/issues/10#issuecomment-73048724" target="_blank">
https://github.com/maphew/apt/issues/10#issuecomment-73048724</a>, because i wanted his apt.py to work on a portable install for OSGeo4W packages. So he opened this thread. Thank you for that!<br>
<br>
To have a portable OSGeo4W, you could easily copy from an installed version. Much works, but it is not really portable. For eg. you should start QGIS with option configpath, like --configpath "%HOME%\.qgis". That prevents QGIS to write to the Windows-Registry.<br>
<br>
There are attempts to build a portable gqis, osgeo4w Version, but, like the one mentioned by Alex,
<a href="http://www.archaeogeek.com/blog/2014/01/20/portable-gis-v4/" target="_blank">
http://www.archaeogeek.com/blog/2014/01/20/portable-gis-v4/</a>, it lacks, as far as i know, a possibility to choose and update packages. That's the point, where apt.py, as a package manager, joins the game! (because i'm more comfortable with python than with
 perl, thanks for the code of "<a href="http://creatensis.pl" target="_blank">creatensis.pl</a>" by jef-n on github)<br>
<br>
Unfortunately nearly all packages go through the postinstall stage of installation. Here, bat files in etc/postinstall are called, mainly to replace patterns like @osgeo4w@ to hard codes paths, which we don't want in a portable install. One tool to do that
 is textreplace, which turns @osgeo4w@ into the string stored in the environment variable %OSGEO4W_ROOT%.<br>
<br>
For example apache:<br>
in etc/postinstall we find apache.bat and inside<br>
textreplace -sf apache/conf/httpd.conf -df apache/conf/httpd.conf -map @osgeo4w@ %OSGEO4W_ROOT%<br>
which changes the pattern in http.conf.<br>
A portable version would be<br>
textreplace -sf apache/conf/httpd.conf -df apache/conf/httpd.conf -map @osgeo4w@ ${OSGEO4W_ROOT}<br>
now it's up to apache to find the path through the environment variable.<br>
<br>
A lot of packages make use of textreplace, i didn't check them all. And there are cases, where something different is wanted to happen, where software must be installed to the System, like Visual-C Re-distributables.<br>
<br>
What i'm asking for, is there a way to deal with postinstall-issues, even if i can't predict which package is to be installed.<br>
<br>
One solution would be to delegate that through the Packaking-instructions (<a href="https://trac.osgeo.org/osgeo4w/wiki/PackagingInstructions" target="_blank">https://trac.osgeo.org/osgeo4w/wiki/PackagingInstructions</a>). But is this realistic?<br>
<br>
<br>
if someone interested or willing to help, i can show the cases i found, during my version of a "portable installer".<br>
<br>
Best Regards,<br>
Andreas<br>
<br>
Dr. Andreas Müller -_- Universität Trier - FB VI - Kartographie, <a href="mailto:muellea@uni-trier.de" target="_blank">
muellea@uni-trier.de</a><br>
54286 Trier, Behringstr. 29, F 191, <a href="tel:%2B%2B496512014576" value="+496512014576" target="_blank">
++496512014576</a><br>
_______________________________________________<br>
osgeo4w-dev mailing list<br>
<a href="mailto:osgeo4w-dev@lists.osgeo.org" target="_blank">osgeo4w-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/osgeo4w-dev" target="_blank">http://lists.osgeo.org/mailman/listinfo/osgeo4w-dev</a><br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>