[Fli4l_dev] Download-Batch für Tarballs

Mark Gerber mark.gerber at web.de
Fr Jul 18 19:07:29 CEST 2014


Hallo Viel-Ausprobierer!

Seitdem die Tarballs (testing, FFL-506) nicht mehr auf ftp-Servern liegen,  
funktioniert das bisherige Download-Batch nicht mehr. Irgendwo habe ich  
zwar mal zwischen den Zeilen gelesen, dass da ein Ersatz in Arbeit sei.  
Jedoch bin ich ungeduldig (manuelles Herunterladen und entpacken - ih!)  
und bastele außerdem selber gerne Batches, um mir die Arbeit zu  
erleichtern.

Deswegen ist nun eine Windows-Batchdatei entstanden, die die gewünschten  
fli4l-Pakete der definierten Geschmacksrichtung (testing/FFL-506,  
x86/x86_64) von tarball.fli4l.de herunterlädt und entpackt. Verwendet  
werden dafür wget und 7-Zip (Befehlszeilenversion). Was man so braucht und  
was definiert werden muss, steht am Anfang der Batchdatei. Und dann:  
Einfach ausführen. :)

Leider weiß ich keinen besseren Weg, als die Zeilen hier im Text zu posten  
(NGs mögen keine Anhänge). Also...


--- ANFANG (GetLatestDevTarball.cmd) ---

@echo off
setlocal enabledelayedexpansion

rem ~~~ INFO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem fli4l Development Tarball Downloader V1.0.0 (2014-07-15)
rem by Mark Gerber (mark.gerber at web.de)

rem Needed additional files in local directory:
rem - mypackages.txt
rem   Contains the names of the additional packages
rem   besides the fli4l base and doc packages:
rem     * one per line
rem     * no file name extensions (omit .tar.gz)
rem     * possible subdirectories as prefix
rem     * Example lines:
rem         chrony
rem         dhcp_client
rem         non_gpl/kernel_3_15_nonfree
rem         opt_db/cpmvrmlog
rem   For available package names, see the tarball download pages on:
rem   http://www.fli4l.de
rem - wget.exe (wget download tool)
rem   Links to binaries for Windows:
rem   http://wget.addictivecode.org/FrequentlyAskedQuestions#download
rem - 7za.exe (7-Zip command line version)
rem   or
rem   7z.exe + 7z.dll (command line files from 7-Zip installation)
rem   http://www.7-zip.org
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rem ~~~ USER SETTINGS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem Adjust the following two settings if needed.
rem Regard uppercase and lowercase letters.

rem Development branch: testing or FFL-506
set Branch=testing

rem Processor architecture: x86 or x86_64
set Archi=x86

rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rem Some initializations and checks
rem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

title fli4l Downloader
cls
cd /d %~dp0
if exist TarTemp rmdir /s /q TarTemp

if not exist wget.exe goto :NoWget
if not exist mypackages.txt goto :NoMyPack
set SevZip=7za.exe
if not exist %SevZip% (
   set SevZip=7z.exe
   for %%z in (!SevZip!,7z.dll) do if not exist %%z goto :No7z
)

set Host=tarball.fli4l.de
echo Checking connection to host %Host%...
ping -n 1 %Host% | find "TTL=" > nul
if errorlevel 1 goto :NoConnection
echo OK
echo.

if %Branch%==testing (
   set RemotePath=testing
) else (
   if %Branch%==FFL-506 set RemotePath=ffl506
)
if "%RemotePath%"=="" goto :BranchError
if not %Archi%==x86 (
   if not %Archi%==x86_64 goto :ArchiError
)
set RemotePath=%RemotePath%-%Archi%
set WgetLine=wget.exe --quiet --timestamping %Host%/%RemotePath%

%WgetLine%/filelist.txt
for /f "tokens=3 delims=-" %%r in (filelist.txt) do set Rev=%%r
for /f %%f in (mypackages.txt) do (
   set CurrPackFound=no
   for /f %%g in (filelist.txt) do (
     if "%%f.tar.gz"=="%%g" set CurrPackFound=yes
   )
   if not "!CurrPackFound!"=="yes" (
     set FaultyPackDef=%%f
     goto :MyPackError
   )
)
del filelist.txt

echo Used branch:       %Branch%
echo Used architecture: %Archi%
echo Found revision:    %Rev%


rem ~~~~~~~~
rem Download
rem ~~~~~~~~

echo.
echo Downloading packages...
ping -n 2 127.0.0.1 > nul

set ReposDir=Packages_%Rev%-%Branch%-%Archi%
if exist %ReposDir% (
   echo NOTE: The local packages repository for %Rev%-%Branch%-%Archi%  
already exists.
   echo Going through mypackages list and downloading only new packages...
   ping -n 6 127.0.0.1 > nul
) else (
   md %ReposDir%
)
cd %ReposDir%

echo - fli4l-3.9.0-%Rev%-%Branch%
..\%WgetLine%/fli4l-3.9.0-%Rev%-%Branch%.tar.gz
if errorlevel 1 goto :DownloadError
echo - fli4l-3.9.0-%Rev%-%Branch%-doc
..\%WgetLine%/fli4l-3.9.0-%Rev%-%Branch%-doc.tar.gz
if errorlevel 1 goto :DownloadError
for /f %%p in (..\mypackages.txt) do (
   echo - %%p
   ..\%WgetLine%/%%p.tar.gz
   if errorlevel 1 goto :DownloadError
)
cd ..


rem ~~~~~~
rem Unpack
rem ~~~~~~

echo.
echo Unpacking...

if exist fli4l-3.9.0-%Rev%-%Branch% (
   echo NOTE: The working files of fli4l-3.9.0-%Rev%-%Branch% already exist.
   choice /c os /n /m "[S]kip unpacking or [O]verwrite files (while backing  
up config directory)?"
   if errorlevel 2 goto :TheEnd
   echo Renaming current config directory to config.bak...
   ren fli4l-3.9.0-%Rev%-%Branch%\config config.bak
)

echo * 1st stage (all gzip packages at once)...
%SevZip% x -oTarTemp %ReposDir%\*.tar.gz > nul
echo * 2nd stage (each tar package)...
echo - fli4l-3.9.0-%Rev%-%Branch%
%SevZip% x -aoa TarTemp\fli4l-3.9.0-%Rev%-%Branch%.tar > nul
for /r TarTemp\ %%p in (*.tar) do (
   if not "%%~np%%~xp"=="fli4l-3.9.0-%Rev%-%Branch%.tar" (
     echo - %%~np
     %SevZip% x -aoa -ofli4l-3.9.0-%Rev%-%Branch%\ %%p > nul
   )
)
rmdir /s /q TarTemp

echo.
echo Finished^^!
goto :TheEnd


rem ~~~~~~~~~~~~~~
rem Error messages
rem ~~~~~~~~~~~~~~

:NoWget
echo The wget tool for downloading (wget.exe) is missing.
echo Procedure aborted.
goto :TheEnd

:NoMyPack
echo The list of packages to be downloaded (mypackages.txt) is missing.
echo Procedure aborted.
goto :TheEnd

:No7z
echo The 7-zip tool for unpacking (7za.exe or 7z.exe + 7z.dll) is missing.
echo Procedure aborted.
goto :TheEnd

:NoConnection
echo Connection could not be established.
echo Procedure aborted.
goto :TheEnd

:BranchError
echo An unknown fli4l branch (%Branch%) is set in the batch file.
echo Procedure aborted.
goto :TheEnd

:ArchiError
echo An unknown processor architecture (%Archi%) is set in the batch file.
echo Procedure aborted.
goto :TheEnd

:MyPackError
echo An unknown package is indicated in the mypackages.txt file:
echo %FaultyPackDef%
echo Procedure aborted.
goto :TheEnd

:DownloadError
echo The last indicated package could not be downloaded.
echo Procedure aborted.
goto :TheEnd


rem ~~~~~~~
rem The End
rem ~~~~~~~

:TheEnd
echo.
echo Press a key to close the window...
pause > nul
exit

--- ENDE (GetLatestDevTarball.cmd) ---


Viel Erfolg und Spaß - mit der Batchdatei und mit den Tarballs.

Mark


Mehr Informationen über die Mailingliste Fli4l_dev