% !TEX root = BuildWithGBP.nw% ===> this file was generated automatically by noweave --- better not edit it
\part{Veröffentlichen}
\chapter{Vorbereitungen zum Hochladen}
\label{chap:Uploading}

Bisher haben wir uns damit beschäftigt, auf unserem Rechner ein
\texttt{Debian}-Paket zu bauen, wie es auch vom Projekt \texttt{Debian}
bereitgestellt wird.

Nun geht es darum, dass dieses Paket auch hochgeladen \index{Hochladen} 
und damit dem \texttt{Debian}-Projekt zur Verfügung gestellt werden kann.

Die Vorbereitung erfolgt durch die Funktion \textit{PrepareUploading}.

\section{Existiert \textit{debian/changelog}?}

Es wird sicherheitshalber überprüft, ob eine Datei 
\textit{debian/changelog} bereits existiert.

\nwfilename{Part4.nw}\nwbegincode{1}\sublabel{NW4N9Oy2-2h4AeG-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2h4AeG-1}}}\moddef{PrepareUploading~{\nwtagstyle{}\subpageref{NW4N9Oy2-2h4AeG-1}}}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
function PrepareUploading \{
    # Called by TaskSelect

    cd $\{GitPath\}
    
    # Check debian/changelog
    if [ -f debian/changelog ]
    then
        less --LINE-NUMBERS debian/changelog
    else
\LA{}PrepareUploading1~{\nwtagstyle{}\subpageref{NW4N9Oy2-4J30By-1}}\RA{}
\nwnotused{PrepareUploading}\nwendcode{}\nwbegindocs{2}\nwdocspar

Ist diese Datei nicht vorhanden, bricht das Programmskript an dieser 
Stelle mit einem entsprechenden Hinweis ab.

\nwenddocs{}\nwbegincode{3}\sublabel{NW4N9Oy2-4J30By-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-4J30By-1}}}\moddef{PrepareUploading1~{\nwtagstyle{}\subpageref{NW4N9Oy2-4J30By-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2h4AeG-1}}\nwenddeflinemarkup
        whiptail --title "This is the end" \\
        --msgbox "No changelog - no upload!" 15 60
        exit
    fi

\LA{}PrepareUploading2~{\nwtagstyle{}\subpageref{NW4N9Oy2-1qKoDG-1}}\RA{}
\nwused{\\{NW4N9Oy2-2h4AeG-1}}\nwendcode{}\nwbegindocs{4}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/NoChangelog.png}
\caption{Kein Changelog - kein Hochladen}
\end{figure}

Andernfalls wird der Changelog für eine Veröffentlichung vorbereitet oder
verwandt. Hierzu wird abgefragt, ob der Changelog schon 
veröffentlichungsreif ist.

Dazu muss auf jeden Fall das \enquote{UNRELEASED} durch die jeweilige
Distributionsbezeichnung -- meist \enquote{unstable} -- ersetzt werden.

\nwenddocs{}\nwbegincode{5}\sublabel{NW4N9Oy2-1qKoDG-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1qKoDG-1}}}\moddef{PrepareUploading2~{\nwtagstyle{}\subpageref{NW4N9Oy2-1qKoDG-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-4J30By-1}}\nwenddeflinemarkup
    if ! whiptail --title "Changelog fit for publishing?" --defaultno \\
    --yesno "Is the changelog fit for publishing?" --yes-button "Yes" \\
    --no-button "No" 15 60
\LA{}PrepareUploading3~{\nwtagstyle{}\subpageref{NW4N9Oy2-2fQbcs-1}}\RA{}
\nwused{\\{NW4N9Oy2-4J30By-1}}\nwendcode{}\nwbegindocs{6}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/ChangelogFitForPublishing.png}
\caption{Changelog veröffentlichungsreif?}
\end{figure}

Wird die Frage bejaht, wird die Option eröffnet, das Paket nochmal zu 
bauen (Kapitel~\ref{sec:BuildAgain}, Seite~\pageref{sec:BuildAgain}).

\section{\textit{debian/changelog} fertigstellen}

Ist die Datei \textit{debian/changelog} nicht veröffentlichungsreif, wird
sie verbessert. 

Hierzu wird zunächst dazu aufgefordert zu prüfen, ob man im richtigen 
\texttt{Git}-Zweig ist. Mit der Funktion \textit{AskDist} 
(Kapitel~\ref{subsec:IdentifyDist}, Seite~\pageref{subsec:IdentifyDist})
wird ermittelt, welches der aktuelle \texttt{Git}-Zweig und welche
Distribution ihm zugeordnet ist.

Danach wird das Ergebnis angezeigt. Gegebenenfalls kann in einem weiteren 
Terminal der Zweig gewechselt werden.

\nwenddocs{}\nwbegincode{7}\sublabel{NW4N9Oy2-2fQbcs-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2fQbcs-1}}}\moddef{PrepareUploading3~{\nwtagstyle{}\subpageref{NW4N9Oy2-2fQbcs-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1qKoDG-1}}\nwenddeflinemarkup
    then
        AskDist
        echo -e "Notice from PrepareUploading: The branch is "$\{RecentBranch\}"\\n \\
        The distribution is "$\{RecentBranchD\} >> $\{log\}
        whiptail --title "Please check! (U)" \\
        --msgbox "The branch is $\{RecentBranch\}" 15 60
\LA{}PrepareUploading4~{\nwtagstyle{}\subpageref{NW4N9Oy2-eFVGQ-1}}\RA{}
\nwused{\\{NW4N9Oy2-1qKoDG-1}}\nwendcode{}\nwbegindocs{8}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/CheckBranch.png}
\caption{Branch überpüfen}
\end{figure}

Sodann ist gegebenenfalls der Name der Distribution anzugeben, wohin das 
gebaute \texttt{Debian}-Paket hochgeladen werden soll. In der Regel ist 
dies die Distribution \textit{unstable}. 

\nwenddocs{}\nwbegincode{9}\sublabel{NW4N9Oy2-eFVGQ-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-eFVGQ-1}}}\moddef{PrepareUploading4~{\nwtagstyle{}\subpageref{NW4N9Oy2-eFVGQ-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2fQbcs-1}}\nwenddeflinemarkup
        
        if [ "$\{RecentBranchD\}" = "sid" ]
        then
            distName="unstable"
        elif [ "$\{RecentBranchD\}" = "experimental" ]
        then
            distName="experimental"
        else
            distName=$(whiptail --title "Name of the distribution" \\
            --inputbox "Please insert the name of the distribution\\n \\
            specified in the changelog" \\
            --cancel-button "Cancel" 15 60 3>&2 2>&1 1>&3)
        fi
\LA{}PrepareUploading5~{\nwtagstyle{}\subpageref{NW4N9Oy2-3vUIOc-1}}\RA{}
\nwused{\\{NW4N9Oy2-2fQbcs-1}}\nwendcode{}\nwbegindocs{10}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/NameOfDistribution.png}
\caption{Name der Distribution eingeben}
\end{figure}

Wird kein Name eingegeben, wird \textit{unstable} als Distribution 
angenommen.

Dann wird nochmal der Name der Distribution mit der Aufforderung zur 
Prüfung angezeigt.

\nwenddocs{}\nwbegincode{11}\sublabel{NW4N9Oy2-3vUIOc-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3vUIOc-1}}}\moddef{PrepareUploading5~{\nwtagstyle{}\subpageref{NW4N9Oy2-3vUIOc-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-eFVGQ-1}}\nwenddeflinemarkup
        if [ -z "$\{distName\}" ]
        then
            distName="unstable"
        fi
        
        echo -e "Another notice from PrepareUploading:\\n \\
        The distribution is now "$\{distName\} >> $\{log\}
        whiptail --title "Please check! (U)" \\
        --msgbox "The distribution is $\{distName\}" 15 60
\LA{}PrepareUploading6~{\nwtagstyle{}\subpageref{NW4N9Oy2-1e83cU-1}}\RA{}
\nwused{\\{NW4N9Oy2-eFVGQ-1}}\nwendcode{}\nwbegindocs{12}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/CheckDistName.png}
\caption{Name der Distribution überprüfen}
\end{figure}

Gerade bei neuen Paketen verwenden die Autoren gerne einen Upload nach 
\textit{experimental}. Für neue Pakete ist nämlich ein 
\textit{Binary}-Upload 
notwendig.

\nwenddocs{}\nwbegincode{13}\sublabel{NW4N9Oy2-1e83cU-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1e83cU-1}}}\moddef{PrepareUploading6~{\nwtagstyle{}\subpageref{NW4N9Oy2-1e83cU-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3vUIOc-1}}\nwenddeflinemarkup

        # making debian/changelog fit for publishing
        gbp dch --release --verbose --debian-branch=$\{RecentBranch\} \\
        --distribution=$\{distName\} #--commit
\LA{}PrepareUploading8~{\nwtagstyle{}\subpageref{NW4N9Oy2-eScQ-1}}\RA{}
\nwused{\\{NW4N9Oy2-3vUIOc-1}}\nwendcode{}\nwbegindocs{14}\nwdocspar

Nach der Erstellung des Changelogs für das Release wird zur Kontrolle 
automatisch der Standardeditor geöffnet. Dies kann nicht vom Skript 
beeinflusst werden. 

Diese Anzeige ist auch sinnvoll. Oft sind nämlich doppelte Commit-Einträge 
zu löschen.

\nwenddocs{}\nwbegincode{15}\sublabel{NW4N9Oy2-eScQ-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-eScQ-1}}}\moddef{PrepareUploading8~{\nwtagstyle{}\subpageref{NW4N9Oy2-eScQ-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1e83cU-1}}\nwenddeflinemarkup
        git add .
        git commit -a

        whiptail --title "Build again" \\
        --msgbox "Now the release will be built another time." 15 60

\LA{}PrepareUploading10~{\nwtagstyle{}\subpageref{NW4N9Oy2-1eblsS-1}}\RA{}
\nwused{\\{NW4N9Oy2-1e83cU-1}}\nwendcode{}\nwbegindocs{16}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/BuildAgain.png}
\caption{Fürs Release bauen}
\end{figure}

Nun wird das Paket fürs Hochladen ins \texttt{Debian}-Repositorium gebaut.

Das nochmalige Bauen ist notwendig, da die Datei \textit{debian/changelog}
geändert wurde und daher erneut integriert werden muss.

\nwenddocs{}\nwbegincode{17}\sublabel{NW4N9Oy2-1eblsS-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1eblsS-1}}}\moddef{PrepareUploading10~{\nwtagstyle{}\subpageref{NW4N9Oy2-1eblsS-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-eScQ-1}}\nwenddeflinemarkup
        # Building revision
        GpgKeyAvailable
        SBuildOrPBuilder 1
        if [ $gbpq -eq 0 ]
        then
            echo "Package $\{SourceName\} was built using gbp buildpackage." >> $\{log\}
        fi
\LA{}PrepareUploading11~{\nwtagstyle{}\subpageref{NW4N9Oy2-3D7O6O-1}}\RA{}
\nwused{\\{NW4N9Oy2-eScQ-1}}\nwendcode{}\nwbegindocs{18}\nwdocspar

\section{Nochmaliges Bauen?}
\label{sec:BuildAgain}

Hier geht es weiter, wenn die Frage bejaht wird, ob die Datei
\textit{debian/changelog} veröffentlichungsreif ist. Dann wird die
Option eröffnet, das Paket nochmals zu bauen.

Das Bauen erfolgt dann in der soeben beschriebenen Weise.

\nwenddocs{}\nwbegincode{19}\sublabel{NW4N9Oy2-3D7O6O-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3D7O6O-1}}}\moddef{PrepareUploading11~{\nwtagstyle{}\subpageref{NW4N9Oy2-3D7O6O-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1eblsS-1}}\nwenddeflinemarkup
    else
        if whiptail --title "Building another time?" \\
        --yesno "Should the release be built another time?\\n(Without tagging)" \\
        --yes-button "Yes" --no-button "No" 15 60
\LA{}PrepareUploading12~{\nwtagstyle{}\subpageref{NW4N9Oy2-bK1xc-1}}\RA{}
\nwused{\\{NW4N9Oy2-1eblsS-1}}\nwendcode{}\nwbegindocs{20}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/BuildAgain.png}
\caption{Fürs Release bauen}
\end{figure}

\nwenddocs{}\nwbegincode{21}\sublabel{NW4N9Oy2-bK1xc-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-bK1xc-1}}}\moddef{PrepareUploading12~{\nwtagstyle{}\subpageref{NW4N9Oy2-bK1xc-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3D7O6O-1}}\nwenddeflinemarkup
        then
            # Building revision
            SBuildOrPBuilder 2
            if [ $gbpq -eq 0 ]
            then
                echo "Package $\{SourceName\} was built using gbp buildpackage." >> $\{log\}
            fi
        fi
    fi
\}

\LA{}SelectUploadTarget~{\nwtagstyle{}\subpageref{NW4N9Oy2-44n7uC-1}}\RA{}
\nwused{\\{NW4N9Oy2-3D7O6O-1}}\nwendcode{}\nwbegindocs{22}\nwdocspar

\section{Soll ein \texttt{Debdiff} erstellt werden?}

Bevor nach \textit{salsa.debian.org} hochgeladen wird, wird gegebenenfalls
abgefragt, ob ein \textit{debdiff} (Kapitel~\ref{subsec:debdiff},
Seite~\pageref{subsec:debdiff}). erstellt werden soll.

\nwenddocs{}\nwbegincode{23}\sublabel{NW4N9Oy2-47oStO-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-47oStO-1}}}\moddef{TaskSelect9~{\nwtagstyle{}\subpageref{NW4N9Oy2-47oStO-1}}}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
    if [ $\{rcts\} -eq 0 ]
    then
        Ask4DebDiff
\LA{}TaskSelect9-1~{\nwtagstyle{}\subpageref{NW4N9Oy2-38fvEk-1}}\RA{}
\nwnotused{TaskSelect9}\nwendcode{}\nwbegindocs{24}\nwdocspar

Die Abfage erfolgt nur, wenn jenseits vom Zweig \textit{Unstable} paketiert
werden soll (Kapitel~\ref{chap:JenseitsUnstable},
Seite~\pageref{chap:JenseitsUnstable}).

\nwenddocs{}\nwbegincode{25}\sublabel{NW4N9Oy2-2ngUXg-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2ngUXg-1}}}\moddef{Ask4DebDiff~{\nwtagstyle{}\subpageref{NW4N9Oy2-2ngUXg-1}}}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
function Ask4DebDiff \{
    # Called by TaskSelect

    # Check whether branch is sid
    if [ $\{RecentBranch\} == "debian/sid" ] || [ $\{RecentBranch\} == "master" ] || \\
       [ $\{RecentBranch\} == "main" ]
    then
        return
    fi

    # Creating a Debdiff?
    if whiptail --title "DebDiff needed?" \\
        --yesno "Do you want to create a debdiff?" \\
        --yes-button "Yes" --no-button "No" 15 60
    then
        DebDiff 1
    fi
\}

\LA{}TaskSelect~{\nwtagstyle{}\subpageref{nw@notdef}}\RA{}
\nwnotused{Ask4DebDiff}\nwendcode{}\nwbegindocs{26}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/DebDiffNeeded.png}
\caption{DebDiff benötigt?}
\end{figure}

\chapter{Hochladen auf Git-Repositorien}

Im folgenden Abschnitt aus der Aufgabenauswahl werden zunächst die
Funktionen aufgerufen, um in die Git-Repositorien hochzuladen.

\nwenddocs{}\nwbegincode{27}\sublabel{NW4N9Oy2-38fvEk-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-38fvEk-1}}}\moddef{TaskSelect9-1~{\nwtagstyle{}\subpageref{NW4N9Oy2-38fvEk-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-47oStO-1}}\nwenddeflinemarkup
        ##############

        # Pushing git repo
    
        ##############

        Upload2OwnServer
        Upload2Salsa

\LA{}TaskSelect10~{\nwtagstyle{}\subpageref{NW4N9Oy2-1qX7nC-1}}\RA{}
\nwused{\\{NW4N9Oy2-47oStO-1}}\nwendcode{}\nwbegindocs{28}\nwdocspar


\section{Hochladen nach salsa.debian.org}
\label{sec:SalsaHochladen}

Vor dem Hochladen nach \textit{salsa.debian.org} überprüft das 
Programmskript, ob dort überhaupt schon ein entsprechendes Repositorium
vorhanden ist.

\nwenddocs{}\nwbegincode{29}\sublabel{NW4N9Oy2-3M9mGy-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3M9mGy-1}}}\moddef{Upload2Salsa~{\nwtagstyle{}\subpageref{NW4N9Oy2-3M9mGy-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1xqyce-1}}\nwenddeflinemarkup
function Upload2Salsa \{
    # Called by TaskSelect and itself

    # Uploading to Salsa

    if whiptail --title "Upload to salsa.debian.org?" \\
    --yesno "Should $\{SourceName\} be uploaded to Salsa?" \\
    --yes-button "Yes" --no-button "No" 15 60
    then
\LA{}Upload2Salsa1~{\nwtagstyle{}\subpageref{NW4N9Oy2-3mhKhQ-1}}\RA{}
\nwused{\\{NW4N9Oy2-1xqyce-1}}\nwendcode{}\nwbegindocs{30}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/Upload2Salsa.png}
\caption{Fürs Release bauen}
\end{figure}

\nwenddocs{}\nwbegincode{31}\sublabel{NW4N9Oy2-3mhKhQ-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3mhKhQ-1}}}\moddef{Upload2Salsa1~{\nwtagstyle{}\subpageref{NW4N9Oy2-3mhKhQ-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3M9mGy-1}}\nwenddeflinemarkup
        BrowserName=$(echo $\{SalsaName\} | sed --expression='s/.git$//g')
        BrowserName="https://salsa.debian.org/"$\{BrowserName\}
        wget --spider --verbose --max-redirect=0 \\
        --append-output=$\{log\} $\{BrowserName\}
        if [ $? -ne 0 ]
        then
             whiptail --title "No project found at salsa.debian.org" \\
            --msgbox "Please create $\{BrowserName\} first" 15 60
            echo "No project "$\{BrowserName\}" found at salsa.debian.org" \\
            >> $\{log\}

            if whiptail --title "Done?" \\
            --yesno "Created $\{BrowserName\} on salsa.debian.org?" \\
            --yes-button "Yes" --no-button "No" 15 60
            then
                Upload2Salsa
            else
                exit
            fi
        else
\LA{}Upload2Salsa5~{\nwtagstyle{}\subpageref{NW4N9Oy2-4SzZ52-1}}\RA{}
\nwused{\\{NW4N9Oy2-3M9mGy-1}}\nwendcode{}\nwbegindocs{32}\nwdocspar

Wenn Patch-Queue-Zweige existieren, können diese vor dem Hochladen nach 
\textit{salsa.debian.org} gelöscht werden.

\nwenddocs{}\nwbegincode{33}\sublabel{NW4N9Oy2-4SzZ52-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-4SzZ52-1}}}\moddef{Upload2Salsa5~{\nwtagstyle{}\subpageref{NW4N9Oy2-4SzZ52-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3mhKhQ-1}}\nwenddeflinemarkup
            set +e
            if echo $(git branch) | grep --quiet 'patch-queue/'
            then
                if whiptail --title "Patch queue branches found:" \\
                --yesno "$(git branch | grep 'patch-queue')\\n \\
                Delete all patch-queue branches?" \\
                --yes-button "Yes" --no-button "No" 15 60
\LA{}Upload2Salsa6~{\nwtagstyle{}\subpageref{NW4N9Oy2-2HJIuC-1}}\RA{}
\nwused{\\{NW4N9Oy2-3mhKhQ-1}}\nwendcode{}\nwbegindocs{34}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/FoundPatchQueueBranches.png} 
\caption{Patch-Queue Zweige gefunden}
\end{figure}

\nwenddocs{}\nwbegincode{35}\sublabel{NW4N9Oy2-2HJIuC-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2HJIuC-1}}}\moddef{Upload2Salsa6~{\nwtagstyle{}\subpageref{NW4N9Oy2-2HJIuC-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-4SzZ52-1}}\nwenddeflinemarkup
                then
                    git branch --delete --force \\
                    $(git branch | grep 'patch-queue')
                fi
            fi
            set -e

            if ! whiptail --title "Last stop before upload!" \\
            --yesno "Anything all right?" \\
            --yes-button "Yes" --no-button "No" 15 60
\LA{}Upload2Salsa7~{\nwtagstyle{}\subpageref{NW4N9Oy2-2W4RfY-1}}\RA{}
\nwused{\\{NW4N9Oy2-4SzZ52-1}}\nwendcode{}\nwbegindocs{36}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/LastStopp.png} 
\caption{Letzter Halt - Alles OK?}
\end{figure}

\nwenddocs{}\nwbegincode{37}\sublabel{NW4N9Oy2-2W4RfY-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2W4RfY-1}}}\moddef{Upload2Salsa7~{\nwtagstyle{}\subpageref{NW4N9Oy2-2W4RfY-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2HJIuC-1}}\nwenddeflinemarkup
            then
                exit
            fi
            set +e
            if git remote | grep 'salsa' > /dev/null
            then
                RepoName="salsa"
            else
                RepoA=($(git remote))

                i=0; slct=''
                for element in $\{RepoA[*]\}
                do
                    slct=$slct' '$i' '$\{element\}' off '
                    i=$(expr $i + 1)
                done

                RepoNr=$(whiptail --title "Select repository" \\
                --radiolist "Select one of these repositories" \\
                --cancel-button "Exit" 15 60 8 \\
                $slct 3>&2 2>&1 1>&3)

                if [ -z "$\{RepoNr\}" ]
                then
                    exit
                else
                    RepoName=$\{RepoA[$\{RepoNr\}]\}
                fi
            fi

            git push --set-upstream $\{RepoName\} --all >> $\{log\}
            git push --set-upstream $\{RepoName\} --tags >> $\{log\}
            set -e

            echo $\{SourceName\}" was uploaded to salsa.debian.org." >> $\{log\}
        fi
    fi
\}

\LA{}GettingFingerprint~{\nwtagstyle{}\subpageref{nw@notdef}}\RA{}
\nwused{\\{NW4N9Oy2-2HJIuC-1}}\nwendcode{}\nwbegindocs{38}\nwdocspar

\section{Hochladen auf eigenen Git-Server}
\label{sec:HochladenEigenerGitServer}

Das Hochladen auf einen eigenen Git-Server setzt voraus, dass ein solcher 
eingerichtet wurde (Kapitel~\ref{subsec:EigenerGitServer}, 
Seite~\pageref{subsec:EigenerGitServer}).
Ferner ist zuvor sein Name oder seine IP-Adresse einzugeben 
(Kapitel~\ref{sec:NameEigenerGitServer}, 
Seite~\pageref{sec:NameEigenerGitServer}).

\nwenddocs{}\nwbegincode{39}\sublabel{NW4N9Oy2-1xqyce-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1xqyce-1}}}\moddef{Upload2OwnServer~{\nwtagstyle{}\subpageref{NW4N9Oy2-1xqyce-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1GUGRT-1}}\nwenddeflinemarkup
function Upload2OwnServer \{
    # Called by TaskSelect

    # Uploading to own git server
    if [ -n "$ServerName" ]
    then
        if whiptail --title "Upload to own git server?" \\
        --yesno "Should $\{SourceName\} be uploaded to your own git server?" \\
        --yes-button "Yes" --no-button "No" 15 60
        then
            git push --set-upstream home --all >> $\{log\}
            git push --set-upstream home --tags >> $\{log\}

            echo $\{SourceName\}" was uploaded to your git server." >> $\{log\}
        fi
    fi
\}

\LA{}Upload2Salsa~{\nwtagstyle{}\subpageref{NW4N9Oy2-3M9mGy-1}}\RA{}
\nwused{\\{NW4N9Oy2-1GUGRT-1}}\nwendcode{}\nwbegindocs{40}\nwdocspar

\chapter{Paket(e) hochladen}
\label{chap:UploadPackage}

In der Funktion \textit{TaskSelect} (Aufgabenauswahl) werden auch die 
Funktionen zum Hochladen der Pakete aufgerufen.

\nwenddocs{}\nwbegincode{41}\sublabel{NW4N9Oy2-1qX7nC-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1qX7nC-1}}}\moddef{TaskSelect10~{\nwtagstyle{}\subpageref{NW4N9Oy2-1qX7nC-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-38fvEk-1}}\nwenddeflinemarkup
        ##############

        # Uploading packages

        ##############

        SelectUploadTarget
        CreateSignature
        UploadUsingDput
        Upload2PeopleDO
        UploadLocal
\LA{}TaskSelect11~{\nwtagstyle{}\subpageref{NW4N9Oy2-2fcvCo-1}}\RA{}
\nwused{\\{NW4N9Oy2-38fvEk-1}}\nwendcode{}\nwbegindocs{42}\nwdocspar

Wenn die Funktionen \textit{CreateNewBranch} 
(Kapitel~\ref{sec:NeuenBranchErstellen}, Seite~\pageref{sec:NeuenBranchErstellen}), 
\textit{SelectBranch} (Kapitel~\ref{sec:AuswahlGitBranch}, 
Seite~\pageref{sec:AuswahlGitBranch}) oder \textit{OwnServer}
(Kapitel~\ref{sec:NameEigenerGitServer}, 
Seite~\pageref{sec:NameEigenerGitServer}) aufgerufen wurden, wird die 
Konfigurationsdatei erneut zur Bearbeitung 
angezeigt (Kapitel~\ref{sec:ConfigFileLaden}, 
Seite~\pageref{sec:ConfigFileLaden} und anschließend die Aufgabenauswahl 
erneut aufgerufen.

\nwenddocs{}\nwbegincode{43}\sublabel{NW4N9Oy2-2fcvCo-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2fcvCo-1}}}\moddef{TaskSelect11~{\nwtagstyle{}\subpageref{NW4N9Oy2-2fcvCo-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1qX7nC-1}}\nwenddeflinemarkup
    else
        ConfigFileLEC
        CommonTasks
    fi
\}

\LA{}StartTasks~{\nwtagstyle{}\subpageref{nw@notdef}}\RA{}
\nwused{\\{NW4N9Oy2-1qX7nC-1}}\nwendcode{}\nwbegindocs{44}\nwdocspar

\section{Auswahl des Zielrepositoriums}

Vor dem Hochladen ist das Zielrepositorium auszuwählen. Dabei wird ein
\textit{Non-Maintainer-Upload} wie ein Repositorium behandelt.

\nwenddocs{}\nwbegincode{45}\sublabel{NW4N9Oy2-44n7uC-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-44n7uC-1}}}\moddef{SelectUploadTarget~{\nwtagstyle{}\subpageref{NW4N9Oy2-44n7uC-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-bK1xc-1}}\nwenddeflinemarkup
function SelectUploadTarget \{
    # Called by TaskSelect Upload2FtpMaster

    # Select upload target
    Upl=$(whiptail --title "Uploading?" \\
    --radiolist "Should the package be uploaded to ftp-master,\\n \\
    people.d.o or mentors.debian.net?" 15 60 6\\
      "0" "No" off \\
      "1" "ftp-master" on \\
      "2" "people.d.o" off \\
      "3" "Mentors" off \\
      "4" "Non-Maintainer-Upload" off \\
      "5" "Local repository" off --cancel-button "Exit" 3>&2 2>&1 1>&3)

\LA{}SelectUploadTarget1~{\nwtagstyle{}\subpageref{NW4N9Oy2-4XRSRb-1}}\RA{}
\nwused{\\{NW4N9Oy2-bK1xc-1}}\nwendcode{}\nwbegindocs{46}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/UploadTarget.png}
\caption{Ziel des Uploads.}
\end{figure}

Wird \enquote{No} oder \enquote{Cancel} ausgewählt, wird das Programm beendet.

\nwenddocs{}\nwbegincode{47}\sublabel{NW4N9Oy2-4XRSRb-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-4XRSRb-1}}}\moddef{SelectUploadTarget1~{\nwtagstyle{}\subpageref{NW4N9Oy2-4XRSRb-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-44n7uC-1}}\nwenddeflinemarkup
    # The order of the conditions is important!
    # 'Cancel' results an empty variable
    if [ -z $\{Upl\} ] || [ $\{Upl\} -eq 0 ]
    then
        exit
    fi

\LA{}SelectUploadTarget2~{\nwtagstyle{}\subpageref{NW4N9Oy2-2Cg26h-1}}\RA{}
\nwused{\\{NW4N9Oy2-44n7uC-1}}\nwendcode{}\nwbegindocs{48}\nwdocspar

Über den Wert, der der Variablen \textit{Upl} zugewiesen wird, wird der
weitere Ablauf gesteuert.

\nwenddocs{}\nwbegincode{49}\sublabel{NW4N9Oy2-2Cg26h-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2Cg26h-1}}}\moddef{SelectUploadTarget2~{\nwtagstyle{}\subpageref{NW4N9Oy2-2Cg26h-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-4XRSRb-1}}\nwenddeflinemarkup
    case "$\{Upl\}" in
     1) Upltext="ftp-master";;
     2) Upltext="people.d.o";;
     3) Upltext="Mentors";;
     4) Upltext="delayed";;
     5) Upltext="local repository";;
    esac

\LA{}SelectUploadTarget3~{\nwtagstyle{}\subpageref{NW4N9Oy2-2aWL27-1}}\RA{} 
\nwused{\\{NW4N9Oy2-4XRSRb-1}}\nwendcode{}\nwbegindocs{50}\nwdocspar

Im Folgenden wird nun mit der Funktion \textit{SelectChangesFile}
(Kapitel~\ref{sec:SelectChangesFile},
Seite~\pageref{sec:SelectChangesFile}) die \textit{*.changes}-Datei des
hochzuladenen Paketes ausgewählt.

\nwenddocs{}\nwbegincode{51}\sublabel{NW4N9Oy2-2aWL27-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2aWL27-1}}}\moddef{SelectUploadTarget3~{\nwtagstyle{}\subpageref{NW4N9Oy2-2aWL27-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2Cg26h-1}}\nwenddeflinemarkup

    cd $\{PrjPath\}

    # Select package
    SelectChangesFile "Upload" # String will be found in $\{1\}
    UplPaket=$\{changesa[$paket]\}

    # Version2=$(echo $\{UplPaket\} | sed --expression="s/^[a-z\\-]*_//" | \\
    # sed --expression="s/-.*$//")
    # SourceName1=$(echo $\{UplPaket\} | sed --expression="s/_.*//1")
    # OrigPaket=$\{SourceName1\}"_"$\{Version2\}".orig"

\LA{}SelectUploadTarget4~{\nwtagstyle{}\subpageref{NW4N9Oy2-1AF5a3-1}}\RA{}
\nwused{\\{NW4N9Oy2-2Cg26h-1}}\nwendcode{}\nwbegindocs{52}\nwdocspar

Vor dem Hochladen erfolgt noch eine Kontrollfrage, ob das ausgewählte Paket zum ausgewählten Ziel hochgeladen werden soll. Dabei wird zum ersten Mal
der Wert \textit{Upltext} benötigt.

\nwenddocs{}\nwbegincode{53}\sublabel{NW4N9Oy2-1AF5a3-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1AF5a3-1}}}\moddef{SelectUploadTarget4~{\nwtagstyle{}\subpageref{NW4N9Oy2-1AF5a3-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2aWL27-1}}\nwenddeflinemarkup
    # Final question before uploading starts
    if [ $\{Upl\} -ne 4 ]
    then
        if ! whiptail --title "Upload to $\{Upltext\}?" \\
        --yesno "Do you want to upload $\{UplPaket\} to $\{Upltext\}." \\
        --yes-button "Yes" --no-button "Exit" 15 60
\LA{}SelectUploadTarget5~{\nwtagstyle{}\subpageref{NW4N9Oy2-3i43tv-1}}\RA{}
\nwused{\\{NW4N9Oy2-2aWL27-1}}\nwendcode{}\nwbegindocs{54}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/UploadToTarget.png}
\caption{Ist das angegebene Ziel des Uploads korrekt?}
\end{figure}

\nwenddocs{}\nwbegincode{55}\sublabel{NW4N9Oy2-3i43tv-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3i43tv-1}}}\moddef{SelectUploadTarget5~{\nwtagstyle{}\subpageref{NW4N9Oy2-3i43tv-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1AF5a3-1}}\nwenddeflinemarkup
        then
            whiptail --title "Bye" --msgbox "Bye" 15 60
\LA{}SelectUploadTarget6~{\nwtagstyle{}\subpageref{NW4N9Oy2-1GUGRT-1}}\RA{}
\nwused{\\{NW4N9Oy2-1AF5a3-1}}\nwendcode{}\nwbegindocs{56}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/Bye.png}
\caption{Bye}
\end{figure}

\nwenddocs{}\nwbegincode{57}\sublabel{NW4N9Oy2-1GUGRT-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1GUGRT-1}}}\moddef{SelectUploadTarget6~{\nwtagstyle{}\subpageref{NW4N9Oy2-1GUGRT-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3i43tv-1}}\nwenddeflinemarkup
            exit
        fi
    fi

    echo "$\{UplPaket\} should be uploaded to $\{Upltext\}." >> $\{log\}
\}

\LA{}Upload2OwnServer~{\nwtagstyle{}\subpageref{NW4N9Oy2-1xqyce-1}}\RA{}
\nwused{\\{NW4N9Oy2-3i43tv-1}}\nwendcode{}\nwbegindocs{58}\nwdocspar

\section{Signatur erzeugen}

Vor dem Hochladen muss das Paket signiert werden.

Die Funtion \textit{CreateSignature} erzeugt die erforderlichen Signaturen 
mittels \textit{debsign}. \textit{debsign} signiert ein Debian-.changes- 
und -.dsc-Dateipaar mittels GnuPG. Dazu muss der \texttt{GnuPG}-Schlüssel
zur Verfügung stehen (Kapitel~\ref{sec:KeyAvailable},
Seite~\pageref{sec:KeyAvailable}).

Wurde die Datei \textit{*.changes} bereits signiert, Erscheint auf der
Konsole folgende Meldung:

\begin{verbatim}
    The .changes file is already signed.
    Would you like to use the current signature? [Yn]
\end{verbatim}

Im Falle des Fehlschlagens wird eine Wiederholung angeboten.

\nwenddocs{}\nwbegincode{59}\sublabel{NW4N9Oy2-fT69x-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-fT69x-1}}}\moddef{CreateSignature~{\nwtagstyle{}\subpageref{NW4N9Oy2-fT69x-1}}}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
function CreateSignature \{
    # Called by TaskSelect Upload2FtpMaster and itself

    # Key available?
    GpgKeyAvailable

    # Signature using debsign
    set +e
    debsign -k$\{fipr\} $\{UplPaket\}
    if [ $? -ne 0 ]
    then
        if whiptail --title "Signing failed!" \\
        --yesno "Signature failed - Retry?" \\
        --yes-button "Yes" --no-button "Exit" 15 60
\LA{}CreateSignatur3~{\nwtagstyle{}\subpageref{NW4N9Oy2-22tG7F-1}}\RA{}
\nwnotused{CreateSignature}\nwendcode{}\nwbegindocs{60}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/SignatureExists.png}
\caption{Signieren erfolgreich?}
\end{figure}

\nwenddocs{}\nwbegincode{61}\sublabel{NW4N9Oy2-22tG7F-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-22tG7F-1}}}\moddef{CreateSignatur3~{\nwtagstyle{}\subpageref{NW4N9Oy2-22tG7F-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-fT69x-1}}\nwenddeflinemarkup
        then
            CreateSignature
        else
            exit
        fi
    fi
        set -e
    echo "$\{UplPaket\} was signed" >> $\{log\}
\}

\LA{}Upload2Mentors~{\nwtagstyle{}\subpageref{NW4N9Oy2-3qFEIZ-1}}\RA{}
\nwused{\\{NW4N9Oy2-fT69x-1}}\nwendcode{}\nwbegindocs{62}\nwdocspar

\section{Hochladen mit dput}
\label{sec:DputHochladen}

In der Funktion \textit{UploadUsingDput} erfolgt nur die Weichenstellung,
ob das Paket mittels \textit{dput} zu den Ftp-Mastern
(Kapitel~\ref{sec:UploadFtpMaster}, Seite~\pageref{sec:UploadFtpMaster})
oder nach \url{mentors.debian.net} (Kapitel~\ref{sec:UploadMentors},
Seite~\pageref{sec:UploadMentors}) hochgeladen werden soll.

\nwenddocs{}\nwbegincode{63}\sublabel{NW4N9Oy2-38Lz4Y-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-38Lz4Y-1}}}\moddef{UploadUsingDput~{\nwtagstyle{}\subpageref{NW4N9Oy2-38Lz4Y-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3PRZc4-1}}\nwenddeflinemarkup
function UploadUsingDput \{
    # Called by TaskSelect Upload2FtpMaster

    # Uploading using dput

    cd $\{PrjPath\}/
    if [ $\{Upl\} -eq 3 ]
    then
        Upload2Mentors
    elif [ $\{Upl\} -eq 1 ] || [ $\{Upl\} -eq 4 ]
    then
        Upload2FtpMaster
    fi
\}

\LA{}UploadFilesSelect~{\nwtagstyle{}\subpageref{NW4N9Oy2-1Zg9xf-1}}\RA{}
\nwused{\\{NW4N9Oy2-3PRZc4-1}}\nwendcode{}\nwbegindocs{64}\nwdocspar

\section{Nach FTP-Master hochladen}
\label{sec:UploadFtpMaster}

Die Pakete werden regelmäßig nach \textit{ftp-master} hochgeladen, um sie
durch das \texttt{Debian}-Projekt zu veröffentlichen. Andere
Veröffentlichungswege sind eher die Ausnahme.

\nwenddocs{}\nwbegincode{65}\sublabel{NW4N9Oy2-2XJq8-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2XJq8-1}}}\moddef{Upload2FtpMaster~{\nwtagstyle{}\subpageref{NW4N9Oy2-2XJq8-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-fppAi-1}}\nwenddeflinemarkup
function Upload2FtpMaster \{
    # Called by UploadUsingDput

    # repeat question
    if whiptail --title "Last exit" \\
    --yesno "Should the package be uploaded to ftp-master?" \\
    --yes-button "Yes" --no-button "Exit" 15 60
\LA{}Upload2FtpMaster1~{\nwtagstyle{}\subpageref{NW4N9Oy2-3Wp8zk-1}}\RA{}
\nwused{\\{NW4N9Oy2-fppAi-1}}\nwendcode{}\nwbegindocs{66}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/UploadFtpMaster.png}
\caption{Upload to FTP-Master - OK?}
\end{figure}

\nwenddocs{}\nwbegincode{67}\sublabel{NW4N9Oy2-3Wp8zk-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3Wp8zk-1}}}\moddef{Upload2FtpMaster1~{\nwtagstyle{}\subpageref{NW4N9Oy2-3Wp8zk-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2XJq8-1}}\nwenddeflinemarkup
    then
        set +e
        # Checking whether the .changes file is the right one for the upload target
        sourceFlag=$(echo $\{UplPaket\} | grep --count '_source.')
        expFlag=$(grep --line-number ') experimental; urgency=' $\{GitPath\}/debian/changelog \\
        | grep '^1:')
        set -e
        echo -e "$\{UplPaket\}:\\n$\{expFlag\}\\nsourceFlag: $\{sourceFlag\}" >> $\{log\}
        # Strip line to isolate release
        expFlag=$(echo $\{expFlag\} | sed --expression='s/^.*) //' | \\
        sed --expression='s/; .*$//')

        if [ -z "$\{expFlag\}" ]
        then
            if [ $\{sourceFlag\} -eq 0 ]
            then
                if whiptail --title "Uploading?" \\
                --yesno "Do you really want to upload a binary package\\n \\
                to ftp-master?" --yes-button "Yes" --no-button "No" 15 60
                
\LA{}Upload2FtpMaster2~{\nwtagstyle{}\subpageref{NW4N9Oy2-1RxFwS-1}}\RA{}
\nwused{\\{NW4N9Oy2-2XJq8-1}}\nwendcode{}\nwbegindocs{68}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/UploadBinaryFtpMaster.png}
\caption{Soll ein Binär-Paket auf FTP-Master hochgeladen werden?}
\end{figure}

\nwenddocs{}\nwbegincode{69}\sublabel{NW4N9Oy2-1RxFwS-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1RxFwS-1}}}\moddef{Upload2FtpMaster2~{\nwtagstyle{}\subpageref{NW4N9Oy2-1RxFwS-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3Wp8zk-1}}\nwenddeflinemarkup
                then
                    Dput2FtpMaster
                else
                    echo "Next try to upload"  >> $\{log\}
                    SelectUploadTarget
                fi
            else
                Dput2FtpMaster
            fi
        else
            if [ $sourceFlag -ge 1 ]
            then
                if whiptail --title "Uploading?" \\
                --yesno "Do you really want to upload a source package\\n \\
                to experimental?" --yes-button "Yes" --no-button "No" 15 60

\LA{}Upload2FtpMaster3~{\nwtagstyle{}\subpageref{NW4N9Oy2-3PRZc4-1}}\RA{}
\nwused{\\{NW4N9Oy2-3Wp8zk-1}}\nwendcode{}\nwbegindocs{70}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/UploadSourceExpFtpMaster.png}
\caption{Wirklich nach Experimental hochladen?}
\end{figure}

\nwenddocs{}\nwbegincode{71}\sublabel{NW4N9Oy2-3PRZc4-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3PRZc4-1}}}\moddef{Upload2FtpMaster3~{\nwtagstyle{}\subpageref{NW4N9Oy2-3PRZc4-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1RxFwS-1}}\nwenddeflinemarkup

                then
                    Dput2FtpMaster
                else
                    echo "Next try to upload"  >> $\{log\}
                    SelectUploadTarget
                    CreateSignature
                    UploadUsingDput
                fi
            else
                Dput2FtpMaster
            fi
        fi
    fi
\}

\LA{}UploadUsingDput~{\nwtagstyle{}\subpageref{NW4N9Oy2-38Lz4Y-1}}\RA{}
\nwused{\\{NW4N9Oy2-1RxFwS-1}}\nwendcode{}\nwbegindocs{72}\nwdocspar

In der folgenden Funktion erfolgt das Hochladen nach FTP-Master.

\nwenddocs{}\nwbegincode{73}\sublabel{NW4N9Oy2-2eHzlG-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-2eHzlG-1}}}\moddef{Dput2FtpMaster~{\nwtagstyle{}\subpageref{NW4N9Oy2-2eHzlG-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1UaevE-1}}\nwenddeflinemarkup
function Dput2FtpMaster \{
    # Called by Upload2FtpMaster

    if whiptail --title "Simulate uploading?" \\
    --yesno "Should the upload to ftp-master be simulated?" \\
    --yes-button "Yes" --no-button "No" 15 60

\LA{}Dput2FtpMaster1~{\nwtagstyle{}\subpageref{NW4N9Oy2-38Y19Q-1}}\RA{}
\nwused{\\{NW4N9Oy2-1UaevE-1}}\nwendcode{}\nwbegindocs{74}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/UploadFtpMasterSimulated.png}
\caption{Soll das Hochladen auf FTP-Master simuliert werden?}
\end{figure}

\nwenddocs{}\nwbegincode{75}\sublabel{NW4N9Oy2-38Y19Q-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-38Y19Q-1}}}\moddef{Dput2FtpMaster1~{\nwtagstyle{}\subpageref{NW4N9Oy2-38Y19Q-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-2eHzlG-1}}\nwenddeflinemarkup
    then
        dput --simulate ftp-master $\{UplPaket\}
        echo
        echo "After reading press return!"
        read x
    fi

    if whiptail --title "Uploading to FTP-Master?" \\
    --yesno "Everything fine?\\n\\n \\
    Should the package be uploaded to ftp-master now?" \\
    --yes-button "Yes" --no-button "No" 15 60

\LA{}Dput2FtpMaster2~{\nwtagstyle{}\subpageref{NW4N9Oy2-fppAi-1}}\RA{}
\nwused{\\{NW4N9Oy2-2eHzlG-1}}\nwendcode{}\nwbegindocs{76}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=25em,height=30ex]{Pictures/EverythingFine.png}
\caption{Ist alles ok mit dem Hochladen?}
\end{figure}

\nwenddocs{}\nwbegincode{77}\sublabel{NW4N9Oy2-fppAi-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-fppAi-1}}}\moddef{Dput2FtpMaster2~{\nwtagstyle{}\subpageref{NW4N9Oy2-fppAi-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-38Y19Q-1}}\nwenddeflinemarkup
    then
        if [ $\{Upl\} -eq 1 ]
        then
            dput ftp-master $\{UplPaket\}
            echo "$\{UplPaket\} was uploaded to $\{Upltext\}." >> $\{log\}
        else
            Dput2NMU
        fi
    fi
\}

\LA{}Upload2FtpMaster~{\nwtagstyle{}\subpageref{NW4N9Oy2-2XJq8-1}}\RA{}
\nwused{\\{NW4N9Oy2-38Y19Q-1}}\nwendcode{}\nwbegindocs{78}\nwdocspar

Dieses Paket landet zunächst auf
\url{https://incoming.debian.org/debian-buildd/pool/main/} 
bis es vom Build-Daemon (buildd) gebaut und zum Herunterladen zur 
Verfügung gestellt wird.

\subsection{Zurückweisung eines Paketes}

Wenn ein Paket von den FTP-Mastern zurückgewiesen wird, sollte beim
anschießenden Hochladen des korrigierten Paketes die Revisionsnummer
nicht erhöht werden.

Dazu muss die Datei \textit{<PaketName>\_<Version>\_source.ftp-master.upload}
vorher im Projektverzeichnisentfernt werden.

\section{Nach mentors.debian.net hochladen}
\label{sec:UploadMentors}

\nwenddocs{}\nwbegincode{79}\sublabel{NW4N9Oy2-3qFEIZ-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3qFEIZ-1}}}\moddef{Upload2Mentors~{\nwtagstyle{}\subpageref{NW4N9Oy2-3qFEIZ-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-22tG7F-1}}\nwenddeflinemarkup
function Upload2Mentors \{
    # Called by UploadUsingDput

    if whiptail --title "Simulate uploading?" \\
    --yesno "Should the upload to Mentors be simulated?" \\
    --yes-button "Yes" --no-button "No" 15 60
    then
        dput --simulate mentors $\{UplPaket\}
        echo
        echo "After reading press return!"
        read x
    fi

    # repeat question 
    if whiptail --title "Uploading?" \\
    --yesno "Should the package be uploaded to Mentors?" \\
    --yes-button "Yes" --no-button "No" 15 60
    then
        dput mentors $\{UplPaket\}
        echo "$\{UplPaket\} was uploade to $\{Upltext\}." >> $\{log\}
    fi
\}

\LA{}Dput2NMU~{\nwtagstyle{}\subpageref{NW4N9Oy2-NEf5r-1}}\RA{}
\nwused{\\{NW4N9Oy2-22tG7F-1}}\nwendcode{}\nwbegindocs{80}\nwdocspar

\section{Als \textit{Non-Maintainer-Upload} hochladen}

Im Rahmen der Ausbesserung veröffentlichungskritischer Fehler durch
Andere als dem Paket-Maintainer ist es üblich, dem Paket-Maintainer 
noch eine gewisse Zeit zu lassen, selber das Problem zu lösen.

\nwenddocs{}\nwbegincode{81}\sublabel{NW4N9Oy2-NEf5r-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-NEf5r-1}}}\moddef{Dput2NMU~{\nwtagstyle{}\subpageref{NW4N9Oy2-NEf5r-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-3qFEIZ-1}}\nwenddeflinemarkup
function Dput2NMU \{
    # Called by Dput2FtpMaster

    DelayDays=$(whiptail --title "Non-Maintainer-Upload" \\
    --radiolist "Days for delay?" 15 60 5 \\
    "0" " 5 days of delay" off \\
    "1" "10 days of delay" on \\
    "2" "15 days of delay" off --cancel-button "Exit" 3>&2 2>&1 1>&3)

\LA{}Dput2NMU1~{\nwtagstyle{}\subpageref{NW4N9Oy2-1UaevE-1}}\RA{}
\nwused{\\{NW4N9Oy2-3qFEIZ-1}}\nwendcode{}\nwbegindocs{82}\nwdocspar

\begin{figure}[h]
\centering
\includegraphics[width=30em,height=30ex]{Pictures/DaysOfDelay.png}
\caption{Tage der Verzögerung}
\end{figure}

Es kann ausgewählt werden, wie viele Tage dem Paket-Maintainers zur
eigenen Lösung des Problems verbleiben sollen. 

\nwenddocs{}\nwbegincode{83}\sublabel{NW4N9Oy2-1UaevE-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1UaevE-1}}}\moddef{Dput2NMU1~{\nwtagstyle{}\subpageref{NW4N9Oy2-1UaevE-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-NEf5r-1}}\nwenddeflinemarkup
    if [ -z $\{DelayDays\} ]
    then
        exit
    fi
    
    case "$\{DelayDays\}" in
        0) DelDays=5;;
        1) DelDays=10;;
        2) DelDays=15;;
    esac
    
    dput --delayed $\{DelDays\} ftp-master $\{UplPaket\}
\}

\LA{}Dput2FtpMaster~{\nwtagstyle{}\subpageref{NW4N9Oy2-2eHzlG-1}}\RA{}
\nwused{\\{NW4N9Oy2-NEf5r-1}}\nwendcode{}\nwbegindocs{84}\nwdocspar

\section{Hochladen nach \textit{people.debian.org}}

\nwenddocs{}\nwbegincode{85}\sublabel{NW4N9Oy2-1onIoV-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1onIoV-1}}}\moddef{Upload2PeopleDO~{\nwtagstyle{}\subpageref{NW4N9Oy2-1onIoV-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1Zg9xf-1}}\nwenddeflinemarkup
function Upload2PeopleDO \{
    # Called by TaskSelect

    if [ $\{Upl\} -eq 2 ]
    then
        # For people.d.o you can not use dput
        if whiptail --title "Archive on people.d.o" \\
        --yesno "Does the directory public_html/$\{OrigName\} \\
        already exsist at people.d.o?\\n \\
        If not you have to enter the following commands\\n \\
        in a separate terminal:\\n\\n \\
        ssh <user>@people.debian.org\\n \\
        mkdir --parents public_html/$\{OrigName\}" \\
        --yes-button "Yes" --no-button "No" 15 60
        then
            UploadFilesSelect
\LA{}Upload2PeopleDO3~{\nwtagstyle{}\subpageref{NW4N9Oy2-Wujn0-1}}\RA{}
\nwused{\\{NW4N9Oy2-1Zg9xf-1}}\nwendcode{}\nwbegindocs{86}\nwdocspar

\nwenddocs{}\nwbegincode{87}\sublabel{NW4N9Oy2-1Zg9xf-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-1Zg9xf-1}}}\moddef{UploadFilesSelect~{\nwtagstyle{}\subpageref{NW4N9Oy2-1Zg9xf-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-38Lz4Y-1}}\nwenddeflinemarkup
function UploadFilesSelect \{
    # Called by Upload2PeopleDO UploadLocal

    set +e
    UplFL=$(cat $\{UplPaket\} | grep --after-context=10 'Files: *')
    UplFL1=$(echo $\{UplFL\} | sed --expression='s/Files: //')
    i=1
    while [ $i -lt 6 ]
    do
        c=$(expr $\{i\} \\* 5)
        UplFL2=$\{UplFL2\}" "$(echo $UplFL1 | cut --delimiter=" " -f$\{c\})
        i=$(expr $\{i\} + 1)
    done
    set -e
\}

\LA{}Upload2PeopleDO~{\nwtagstyle{}\subpageref{NW4N9Oy2-1onIoV-1}}\RA{}
\nwused{\\{NW4N9Oy2-38Lz4Y-1}}\nwendcode{}\nwbegindocs{88}\nwdocspar

\nwenddocs{}\nwbegincode{89}\sublabel{NW4N9Oy2-Wujn0-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-Wujn0-1}}}\moddef{Upload2PeopleDO3~{\nwtagstyle{}\subpageref{NW4N9Oy2-Wujn0-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-1onIoV-1}}\nwenddeflinemarkup
            if whiptail --title "Upload file?" \\
            --yesno "Should the following files\\n$\{UplFL2\}\\n \\
            have to be uploaded?" --yes-button "Yes" \\
            --no-button "No" 15 60
            then
                if [ -z "$\{pdoaccount\}" ]
                then
                    pdoaccount=$(whiptail --title "Account at people.debian.org" \\
                    --inputbox "Please insert the name of your account on\\n \\
                     people.debian.org" \\
                     --cancel-button "Cancel" 15 60 3>&2 2>&1 1>&3)
                    if [ -z "$\{pdoaccount\}" ]
                    then
                        echo "Please insert the name of your account on\\n \\
                        people.debian.org"
                        read pdoaccount
                    fi
                    changeflag=1
                fi

                if ! whiptail --title "Account name" \\
                --yesno "The name of your account on people.debian.org:\\n \\
                $\{pdoaccount\}" --yes-button "Yes" --no-button "No" 15 60
                then
                    pdoaccount=$(whiptail --title " Account name" \\
                    --inputbox "Name of your account on people.debian.org:" \\
                    --cancel-button "Cancel" 15 60 3>&2 2>&1 1>&3)
                    if [ -z "$\{pdoaccount\}" ]
                    then
                        echo "Please insert the name of your account on\\n \\
                        people.debian.org"
                        read pdoaccount
                    fi
                    changeflag=1
                fi

                if [ $changeflag -eq 1 ]
                then
                    echo 'pdoaccount='$\{pdoaccount\} >> $\{ConfigPath\}$\{OrigName\}
                    changeflag=0
                fi

                cd $\{ProjectPath\}/$\{OrigName\}
                if scp -p $\{UplFL2\} \\
                $\{pdoaccount\}@people.debian.org:/home/$\{pdoaccount\}/public_html/$\{OrigName\}
                then
                    echo "$\{UplFL2\} were uploaded to p.d.o." >> $\{log\}
                else
                    echo "Something went wrong while uploading to p.d.o." >> $\{log\}
                    echo "Tried to execute this command:" >> $\{log\}
                    echo  "scp -p "$\{UplFL2\}" "$\{pdoaccount\}"@people.debian.org:/home/"\\
                    $\{pdoaccount\}"/public_html/"$\{OrigName\} >> $\{log\}
                fi
                pdoarchivetext="If the archive on people.d.o should be\\n \\
                used too, you have to enter the following commands:\\n \\
                ssh <user>@people.debian.org\\n \\
                cd public_html/$\{OrigName\}\\n \\
                apt-ftparchive packages . > Packages\\n \\
                apt-ftparchive sources . > Sources\\n \\
                cat Packages | gzip -c > Packages.gz\\n \\
                cat Sources | gzip -c > Sources.gz\\n \\
                apt-ftparchive release . > Release"

                if whiptail --title "Archive on people.d.o" \\
                --yesno "$\{pdoarchivetext\}\\n\\n \\
                Do you like to copy and paste these commands?" \\
                --yes-button "Yes" --no-button "No" 15 60
                then
                    echo -e $pdoarchivetext
                    echo -e "\\nPlease press any key to continue!"
                    read x
                fi
            fi
        fi
    fi
\}

\LA{}UpdateLocalRepo~{\nwtagstyle{}\subpageref{NW4N9Oy2-BfToG-1}}\RA{}
\nwused{\\{NW4N9Oy2-1onIoV-1}}\nwendcode{}\nwbegindocs{90}\nwdocspar

\section{Lokales Repositorium}

Es kommt immer wieder vor, dass Pakete gebaut werden müssen, die für das
eigentliche Projekt als Abhängigkeiten benötigt werden. Um die Zeit für
den Gang durch die New-Queue zu überbrücken, können diese auch lokal
für das Bauen in der \textit{chroot} bereitgestellt werden.

\nwenddocs{}\nwbegincode{91}\sublabel{NW4N9Oy2-3e9Pf3-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-3e9Pf3-1}}}\moddef{UploadLocal~{\nwtagstyle{}\subpageref{NW4N9Oy2-3e9Pf3-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-BfToG-1}}\nwenddeflinemarkup
function UploadLocal \{
    # Called by TaskSelect
    if [ $\{Upl\} -eq 5 ]
    then
        # Provide for local chroot
        UploadFilesSelect
        if whiptail --title " Files Uploaded?" \\
        --yesno "Should the following files\\n \\
        $\{UplFL2\}\\nhave to be uploaded?" 15 60
        then
            cd $\{ProjectPath\}/$\{OrigName\}
            sudo cp $\{UplFL2\} /var/local/repository
            UpdateLocalRepo
        fi
    fi
\}

\LA{}ChangeEntry~{\nwtagstyle{}\subpageref{nw@notdef}}\RA{}
\nwused{\\{NW4N9Oy2-BfToG-1}}\nwendcode{}\nwbegindocs{92}\nwdocspar

Die folgende Funktion gibt es bereits als Shell-Skript unter
\textit{/usr/local/bin/LocalNewRepo}.

\nwenddocs{}\nwbegincode{93}\sublabel{NW4N9Oy2-BfToG-1}\nwmargintag{{\nwtagstyle{}\subpageref{NW4N9Oy2-BfToG-1}}}\moddef{UpdateLocalRepo~{\nwtagstyle{}\subpageref{NW4N9Oy2-BfToG-1}}}\endmoddef\nwstartdeflinemarkup\nwusesondefline{\\{NW4N9Oy2-Wujn0-1}}\nwenddeflinemarkup
function UpdateLocalRepo \{
    # Called by UploadLocal
    cd /var/local/repository

    # Make package archives writable
    # (not only for root)
    sudo chmod o+w Packages
    sudo chmod o+w Sources
    sudo chmod o+w Packages.gz
    sudo chmod o+w Sources.gz
    sudo chmod o+w Release

    # Use apt-ftparchive to update package archives
    sudo apt-ftparchive packages . > Packages &&
    sudo apt-ftparchive sources . > Sources &&
    sudo cat Packages | gzip -c > Packages.gz &&
    sudo cat Sources | gzip -c > Sources.gz &&
    sudo apt-ftparchive release . > Release

    # Reset rights
    sudo chmod o-w Packages
    sudo chmod o-w Sources
    sudo chmod o-w Packages.gz
    sudo chmod o-w Sources.gz
    sudo chmod o-w Release
\}

\LA{}UploadLocal~{\nwtagstyle{}\subpageref{NW4N9Oy2-3e9Pf3-1}}\RA{}
\nwused{\\{NW4N9Oy2-Wujn0-1}}\nwendcode{}

\nwixlogsorted{c}{{Ask4DebDiff}{NW4N9Oy2-2ngUXg-1}{\nwixd{NW4N9Oy2-2ngUXg-1}}}%
\nwixlogsorted{c}{{ChangeEntry}{nw@notdef}{\nwixu{NW4N9Oy2-3e9Pf3-1}}}%
\nwixlogsorted{c}{{CreateSignatur3}{NW4N9Oy2-22tG7F-1}{\nwixu{NW4N9Oy2-fT69x-1}\nwixd{NW4N9Oy2-22tG7F-1}}}%
\nwixlogsorted{c}{{CreateSignature}{NW4N9Oy2-fT69x-1}{\nwixd{NW4N9Oy2-fT69x-1}}}%
\nwixlogsorted{c}{{Dput2FtpMaster}{NW4N9Oy2-2eHzlG-1}{\nwixd{NW4N9Oy2-2eHzlG-1}\nwixu{NW4N9Oy2-1UaevE-1}}}%
\nwixlogsorted{c}{{Dput2FtpMaster1}{NW4N9Oy2-38Y19Q-1}{\nwixu{NW4N9Oy2-2eHzlG-1}\nwixd{NW4N9Oy2-38Y19Q-1}}}%
\nwixlogsorted{c}{{Dput2FtpMaster2}{NW4N9Oy2-fppAi-1}{\nwixu{NW4N9Oy2-38Y19Q-1}\nwixd{NW4N9Oy2-fppAi-1}}}%
\nwixlogsorted{c}{{Dput2NMU}{NW4N9Oy2-NEf5r-1}{\nwixu{NW4N9Oy2-3qFEIZ-1}\nwixd{NW4N9Oy2-NEf5r-1}}}%
\nwixlogsorted{c}{{Dput2NMU1}{NW4N9Oy2-1UaevE-1}{\nwixu{NW4N9Oy2-NEf5r-1}\nwixd{NW4N9Oy2-1UaevE-1}}}%
\nwixlogsorted{c}{{GettingFingerprint}{nw@notdef}{\nwixu{NW4N9Oy2-2W4RfY-1}}}%
\nwixlogsorted{c}{{PrepareUploading}{NW4N9Oy2-2h4AeG-1}{\nwixd{NW4N9Oy2-2h4AeG-1}}}%
\nwixlogsorted{c}{{PrepareUploading1}{NW4N9Oy2-4J30By-1}{\nwixu{NW4N9Oy2-2h4AeG-1}\nwixd{NW4N9Oy2-4J30By-1}}}%
\nwixlogsorted{c}{{PrepareUploading10}{NW4N9Oy2-1eblsS-1}{\nwixu{NW4N9Oy2-eScQ-1}\nwixd{NW4N9Oy2-1eblsS-1}}}%
\nwixlogsorted{c}{{PrepareUploading11}{NW4N9Oy2-3D7O6O-1}{\nwixu{NW4N9Oy2-1eblsS-1}\nwixd{NW4N9Oy2-3D7O6O-1}}}%
\nwixlogsorted{c}{{PrepareUploading12}{NW4N9Oy2-bK1xc-1}{\nwixu{NW4N9Oy2-3D7O6O-1}\nwixd{NW4N9Oy2-bK1xc-1}}}%
\nwixlogsorted{c}{{PrepareUploading2}{NW4N9Oy2-1qKoDG-1}{\nwixu{NW4N9Oy2-4J30By-1}\nwixd{NW4N9Oy2-1qKoDG-1}}}%
\nwixlogsorted{c}{{PrepareUploading3}{NW4N9Oy2-2fQbcs-1}{\nwixu{NW4N9Oy2-1qKoDG-1}\nwixd{NW4N9Oy2-2fQbcs-1}}}%
\nwixlogsorted{c}{{PrepareUploading4}{NW4N9Oy2-eFVGQ-1}{\nwixu{NW4N9Oy2-2fQbcs-1}\nwixd{NW4N9Oy2-eFVGQ-1}}}%
\nwixlogsorted{c}{{PrepareUploading5}{NW4N9Oy2-3vUIOc-1}{\nwixu{NW4N9Oy2-eFVGQ-1}\nwixd{NW4N9Oy2-3vUIOc-1}}}%
\nwixlogsorted{c}{{PrepareUploading6}{NW4N9Oy2-1e83cU-1}{\nwixu{NW4N9Oy2-3vUIOc-1}\nwixd{NW4N9Oy2-1e83cU-1}}}%
\nwixlogsorted{c}{{PrepareUploading8}{NW4N9Oy2-eScQ-1}{\nwixu{NW4N9Oy2-1e83cU-1}\nwixd{NW4N9Oy2-eScQ-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget}{NW4N9Oy2-44n7uC-1}{\nwixu{NW4N9Oy2-bK1xc-1}\nwixd{NW4N9Oy2-44n7uC-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget1}{NW4N9Oy2-4XRSRb-1}{\nwixu{NW4N9Oy2-44n7uC-1}\nwixd{NW4N9Oy2-4XRSRb-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget2}{NW4N9Oy2-2Cg26h-1}{\nwixu{NW4N9Oy2-4XRSRb-1}\nwixd{NW4N9Oy2-2Cg26h-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget3}{NW4N9Oy2-2aWL27-1}{\nwixu{NW4N9Oy2-2Cg26h-1}\nwixd{NW4N9Oy2-2aWL27-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget4}{NW4N9Oy2-1AF5a3-1}{\nwixu{NW4N9Oy2-2aWL27-1}\nwixd{NW4N9Oy2-1AF5a3-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget5}{NW4N9Oy2-3i43tv-1}{\nwixu{NW4N9Oy2-1AF5a3-1}\nwixd{NW4N9Oy2-3i43tv-1}}}%
\nwixlogsorted{c}{{SelectUploadTarget6}{NW4N9Oy2-1GUGRT-1}{\nwixu{NW4N9Oy2-3i43tv-1}\nwixd{NW4N9Oy2-1GUGRT-1}}}%
\nwixlogsorted{c}{{StartTasks}{nw@notdef}{\nwixu{NW4N9Oy2-2fcvCo-1}}}%
\nwixlogsorted{c}{{TaskSelect}{nw@notdef}{\nwixu{NW4N9Oy2-2ngUXg-1}}}%
\nwixlogsorted{c}{{TaskSelect10}{NW4N9Oy2-1qX7nC-1}{\nwixu{NW4N9Oy2-38fvEk-1}\nwixd{NW4N9Oy2-1qX7nC-1}}}%
\nwixlogsorted{c}{{TaskSelect11}{NW4N9Oy2-2fcvCo-1}{\nwixu{NW4N9Oy2-1qX7nC-1}\nwixd{NW4N9Oy2-2fcvCo-1}}}%
\nwixlogsorted{c}{{TaskSelect9}{NW4N9Oy2-47oStO-1}{\nwixd{NW4N9Oy2-47oStO-1}}}%
\nwixlogsorted{c}{{TaskSelect9-1}{NW4N9Oy2-38fvEk-1}{\nwixu{NW4N9Oy2-47oStO-1}\nwixd{NW4N9Oy2-38fvEk-1}}}%
\nwixlogsorted{c}{{UpdateLocalRepo}{NW4N9Oy2-BfToG-1}{\nwixu{NW4N9Oy2-Wujn0-1}\nwixd{NW4N9Oy2-BfToG-1}}}%
\nwixlogsorted{c}{{Upload2FtpMaster}{NW4N9Oy2-2XJq8-1}{\nwixd{NW4N9Oy2-2XJq8-1}\nwixu{NW4N9Oy2-fppAi-1}}}%
\nwixlogsorted{c}{{Upload2FtpMaster1}{NW4N9Oy2-3Wp8zk-1}{\nwixu{NW4N9Oy2-2XJq8-1}\nwixd{NW4N9Oy2-3Wp8zk-1}}}%
\nwixlogsorted{c}{{Upload2FtpMaster2}{NW4N9Oy2-1RxFwS-1}{\nwixu{NW4N9Oy2-3Wp8zk-1}\nwixd{NW4N9Oy2-1RxFwS-1}}}%
\nwixlogsorted{c}{{Upload2FtpMaster3}{NW4N9Oy2-3PRZc4-1}{\nwixu{NW4N9Oy2-1RxFwS-1}\nwixd{NW4N9Oy2-3PRZc4-1}}}%
\nwixlogsorted{c}{{Upload2Mentors}{NW4N9Oy2-3qFEIZ-1}{\nwixu{NW4N9Oy2-22tG7F-1}\nwixd{NW4N9Oy2-3qFEIZ-1}}}%
\nwixlogsorted{c}{{Upload2OwnServer}{NW4N9Oy2-1xqyce-1}{\nwixd{NW4N9Oy2-1xqyce-1}\nwixu{NW4N9Oy2-1GUGRT-1}}}%
\nwixlogsorted{c}{{Upload2PeopleDO}{NW4N9Oy2-1onIoV-1}{\nwixd{NW4N9Oy2-1onIoV-1}\nwixu{NW4N9Oy2-1Zg9xf-1}}}%
\nwixlogsorted{c}{{Upload2PeopleDO3}{NW4N9Oy2-Wujn0-1}{\nwixu{NW4N9Oy2-1onIoV-1}\nwixd{NW4N9Oy2-Wujn0-1}}}%
\nwixlogsorted{c}{{Upload2Salsa}{NW4N9Oy2-3M9mGy-1}{\nwixd{NW4N9Oy2-3M9mGy-1}\nwixu{NW4N9Oy2-1xqyce-1}}}%
\nwixlogsorted{c}{{Upload2Salsa1}{NW4N9Oy2-3mhKhQ-1}{\nwixu{NW4N9Oy2-3M9mGy-1}\nwixd{NW4N9Oy2-3mhKhQ-1}}}%
\nwixlogsorted{c}{{Upload2Salsa5}{NW4N9Oy2-4SzZ52-1}{\nwixu{NW4N9Oy2-3mhKhQ-1}\nwixd{NW4N9Oy2-4SzZ52-1}}}%
\nwixlogsorted{c}{{Upload2Salsa6}{NW4N9Oy2-2HJIuC-1}{\nwixu{NW4N9Oy2-4SzZ52-1}\nwixd{NW4N9Oy2-2HJIuC-1}}}%
\nwixlogsorted{c}{{Upload2Salsa7}{NW4N9Oy2-2W4RfY-1}{\nwixu{NW4N9Oy2-2HJIuC-1}\nwixd{NW4N9Oy2-2W4RfY-1}}}%
\nwixlogsorted{c}{{UploadFilesSelect}{NW4N9Oy2-1Zg9xf-1}{\nwixu{NW4N9Oy2-38Lz4Y-1}\nwixd{NW4N9Oy2-1Zg9xf-1}}}%
\nwixlogsorted{c}{{UploadLocal}{NW4N9Oy2-3e9Pf3-1}{\nwixd{NW4N9Oy2-3e9Pf3-1}\nwixu{NW4N9Oy2-BfToG-1}}}%
\nwixlogsorted{c}{{UploadUsingDput}{NW4N9Oy2-38Lz4Y-1}{\nwixd{NW4N9Oy2-38Lz4Y-1}\nwixu{NW4N9Oy2-3PRZc4-1}}}%
\nwbegindocs{94}\nwdocspar

In die \textit{Chroot-Umgebung}, hier \textit{/var/cache/pbuilder/base.cow},
wird in die Datei \textit{/etc/apt/sources.list} folgendes eingefügt:

\begin{verbatim}
deb [trusted=yes] file:///var/local/repository ./
deb-src [trusted=yes] file:///var/local/repository ./
\end{verbatim}

\nwenddocs{}
