Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6636af70ed | |||
| 1a3b4a22f2 | |||
| da2fd42a05 | |||
| 141b79c115 | |||
| ca38d8b80e | |||
| c32af8cbfe |
86
LinuxInformationstag.tex
Normal file
86
LinuxInformationstag.tex
Normal file
@@ -0,0 +1,86 @@
|
||||
% Title: Linux - Mehr als nur ein Betriebssystem
|
||||
% Author: Alexander Noack <jali@orca-central.de>
|
||||
% Created On: Mon 20 Apr 2026
|
||||
% Summary: Presentation for the talk
|
||||
% Language: de-DE
|
||||
|
||||
%% preamble
|
||||
|
||||
\documentclass{beamer}
|
||||
|
||||
% use special colour tables for pdf output
|
||||
\ifpdf
|
||||
\usepackage{pdfcolmk}
|
||||
\fi
|
||||
|
||||
% change the theme into something more fancy
|
||||
\usetheme{Warsaw}
|
||||
|
||||
% all our source code is utf-8
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
% allow the import of images
|
||||
\usepackage{graphicx}
|
||||
\usepackage{caption}
|
||||
\captionsetup{justification=Centering}
|
||||
|
||||
% set the language to German
|
||||
\usepackage[ngerman]{babel}
|
||||
|
||||
% we may need some code examples
|
||||
\usepackage{verbatim}
|
||||
\usepackage{listings}
|
||||
|
||||
% alllow quotes in the text
|
||||
\usepackage[autostyle=true]{csquotes}
|
||||
|
||||
% enable strike through text
|
||||
\usepackage[normalem]{ulem}
|
||||
|
||||
% we need to use advanced tables
|
||||
\usepackage{multirow}
|
||||
\usepackage{booktabs}
|
||||
|
||||
% place a logo
|
||||
\logo{\includegraphics[scale=0.2]{images/ccchb.png}}
|
||||
|
||||
% we want urls to be clickable
|
||||
\usepackage{hyperref}
|
||||
|
||||
% redefine the caption source for figures to "Quelle"
|
||||
\addto\captionsngerman{\renewcommand{\figurename}{Quelle}}
|
||||
|
||||
% create header info
|
||||
\title{Linux - Mehr als ein Betriebssystem}
|
||||
\subtitle{Wie eine Software aus Versehen die Welt verändert hat}
|
||||
\author{Alexander Noack \\ \texttt{jali@orca-central.de}}
|
||||
\institute{Chaos Computer Club Bremen \- CCCHB e.V.}
|
||||
|
||||
% document starts here
|
||||
\begin{document}
|
||||
\begin{frame}
|
||||
\titlepage
|
||||
\end{frame}
|
||||
|
||||
% import the slides here
|
||||
\input{slides/01.Introduction}
|
||||
\input{slides/02.JustForFun}
|
||||
|
||||
% epilogue
|
||||
\begin{frame}
|
||||
\frametitle{Fragen?}
|
||||
\begin{center}
|
||||
Fragen? \par
|
||||
Alexander Noack \texttt{<jali@orca-central.de>}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fragen?}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1.0]{images/ccchb.png}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
||||
42
README.md
42
README.md
@@ -0,0 +1,42 @@
|
||||
# Linux - Mehr als ein Betriebssystem
|
||||
|
||||
## Einleitung
|
||||
|
||||
Im Rahmen der Kooperation mit der Stadtbibliothek Bremen, soll es einen
|
||||
Informationsabend zum Thema Linux geben. Geplant ist eine kurze Einführung in
|
||||
das Betriebssystem. Dabei geht es vor allem um zwei Dinge: Die Philosophie von
|
||||
freier und Open-Source Software zu erklären, und den Interessierten die Angst zu
|
||||
nehmen, ein Linux-Betriebssystem mal auszuprobieren.
|
||||
|
||||
## Struktur
|
||||
|
||||
### 1. Begrüßung
|
||||
|
||||
Enthält eine kurze Einführung, wer wir sind, wer der CCC ist, und was DuT/Di.Day
|
||||
ist
|
||||
|
||||
### 2. Just for fun
|
||||
|
||||
Ein kurzer Abriss über die Geschichte der Free and Open Source Bewegung (FOSS)
|
||||
von ITS bis zu Linux.
|
||||
|
||||
### 3. Die Philosophie von FOSS: Vom Konsumenten zum Agenten
|
||||
|
||||
Eine Einführung in die grundlegenden Freiheiten von FOSS, und warum freie
|
||||
Software zu benutzen ein Akt der Selbstermächtigung ist. Auch wenn man nicht
|
||||
programmieren kann.
|
||||
|
||||
### 4. Was ist eigentlich ein Betriebssystem?
|
||||
|
||||
Eine kurze Einführung, was ein Betriebssystem in einem Computer tut, und warum
|
||||
es so wichtig ist.
|
||||
|
||||
### 5. Linux basierte Betriebssysteme: Was ist anders als bei Windows/MacOS, was ist ähnlich?
|
||||
|
||||
Eine Übersicht über die wichtigsten Unterschiede zwischen Windows und Linux aus
|
||||
Anwendersicht. Eine Einführung über die verschiedenen großen Distributionen.
|
||||
|
||||
### 6. Kurze Demo
|
||||
|
||||
Eine kurze Demo (vielleicht schon anfangen, wenn Teil 5 läuft?), um zu zeigen,
|
||||
wie leicht es ist Ubuntu zu installieren.
|
||||
|
||||
11
codebook.toml
Normal file
11
codebook.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
words = [
|
||||
"ari",
|
||||
"ccchb",
|
||||
"lemmke",
|
||||
"minix",
|
||||
"ngerman",
|
||||
"noack",
|
||||
"stallman",
|
||||
"tanenbaum",
|
||||
"unlizensierte",
|
||||
]
|
||||
BIN
images/Heckert_GNU_white.svg.png
Normal file
BIN
images/Heckert_GNU_white.svg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
BIN
images/PDP-10-wikipedia.jpeg
Normal file
BIN
images/PDP-10-wikipedia.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 724 KiB |
BIN
images/Torvalds.jpeg
Normal file
BIN
images/Torvalds.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
BIN
images/Tux.png
Normal file
BIN
images/Tux.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
images/ccchb.png
Normal file
BIN
images/ccchb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
136
notes.md
Normal file
136
notes.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# Notizen
|
||||
|
||||
## 01. Introduction
|
||||
|
||||
- Kurze Vorstellung, wer ich bin.
|
||||
- Erklärung Chaos Computer Club
|
||||
- Was ist der DuT?
|
||||
- Überleitung: Worum geht es heute?
|
||||
- Inhaltsverzeichnis einmal durchgehen.
|
||||
|
||||
## 02. Just for fun
|
||||
|
||||
### PDP-10 slide
|
||||
|
||||
Die Geschichte von Linux ist eng verwoben mit der Geschichte der Freien Software
|
||||
Bewegung, die in den 1980er Jahren ihren Anfang in den USA nahm. Die Geschichte
|
||||
beginnt, bereits Ende der 1960er Jahre, wie sehr viel in der Entwicklung der
|
||||
modernen Computergeschichte, im legendären Artificial Intelligence Laboratory am
|
||||
Massachusets Institute of Technology (MIT). Neben grundlegender Forschung zu
|
||||
künstlicher Intelligenz und neuronalen Netzen, wurde dort auch Forschung an
|
||||
Betriebssystemen durchgeführt. In den frühen 1970er Jahren hat dort die
|
||||
Hacker-Kultur ihren Anfang genommen, als Studenten das *Incompatible Time
|
||||
Sharing System* entwickelt haben. Einer der Entwickler dort war *Richard
|
||||
Stallman*. Stallman war schon aus seiner Zeit in Havard, in der Hacker-Kultur
|
||||
verwurzelt, und schuf in dieser Zeit wichtige Werkzeuge, wie den EMACS
|
||||
Text-Editor und das LISP-Machine Operating System. Stallman war schon früh ein
|
||||
ausgesprochener Kritiker der restriktiven Zugangspolitik in den - teilweise von
|
||||
der DARPA, der Forschungsabteilung des US-Militärs bezahlten Laboratorien. Beim
|
||||
ITS hatte noch jedermann freien Zugang zu den Ressourcen des Computersystems.
|
||||
Das änderte sich jedoch in den folgenden Jahren. Stallman reagierte darauf,
|
||||
indem er einen Weg fand, die verschlüsselten Passworte auf dem System zu
|
||||
entschlüsseln. Er verschickte die entschlüsselten Passworte an die jeweiligen
|
||||
Benutzer, verbunden mit der Bitte, die Passwörter in eine leere Zeichenkette zu
|
||||
ändern. Etwa 20% der Nutzer folgten seinem Aufruf. Ein Sieg mit dem Stallman
|
||||
noch Jahre später gern angab.
|
||||
|
||||
### GNU
|
||||
|
||||
In späten 1970er und frühen 1980er Jahren begann die Hacker-Kultur in den USA zu
|
||||
fragmentieren, und viele Firmen wollten nicht, dass ihr Code in die Hände
|
||||
möglicher Konkurrenten geriet. Zu den heftigsten Verfechtern zählte Bill Gates,
|
||||
der CEO der damals noch jungen Firma *Microsoft*, die sich mit der Entwicklung
|
||||
eines leistungsfähigen BASIC-Interpreters einen Namen gemacht hatte. Gates war
|
||||
schon in den 1970er Jahren damit aufgefallen, dass er die damals verbreitete
|
||||
Praxis, Quellcode frei zu teilen, scharf verurteilte.
|
||||
|
||||
Als 1979 Brian Reid sog. "Time Bombs" im Code seines Textverarbeitungsprogramms
|
||||
*Scribe* einbaute, um eine unlizensierte Weitergabe des Quellcodes zu
|
||||
unterbinden, bezeichnete Stallman dies als ein *Verbrechen gegen die
|
||||
Menschheit*. In einem Interview im Jahr 2008 stellte er klar, dass er das
|
||||
Verbrechen nicht darin sehe, Geld für eine Software zu verlangen, sondern darin,
|
||||
das Wissen, dass mit dem Code verbunden ist, als eine Art *Herrschaftswissen*
|
||||
unter Verschluss zu halten. Er entwickelte darauf hin die Software *texinfo*,
|
||||
die lose auf Scribe basiert.
|
||||
|
||||
Im Jahr 1980 wurden Stallman und einigen anderer der Hacker am MIT der Zugriff
|
||||
auf den Quellcode des neu installierten Laser-Druckers verweigert. Bei früheren
|
||||
Druckern hatte Stallman die Systemsoftware so erweitert, dass Benutzer eine
|
||||
Nachricht erhielten, wenn ihr Druckauftrag beendet war, und so wussten, wann sie
|
||||
zum Drucker gehen mussten, um ihren Ausdruck abzuholen. Die Änderungen
|
||||
benachrichtigten darüber hinaus, alle Nutzer die einen laufenden Druckauftrag
|
||||
hatten, wenn im Drucker ein Papierstau auftrat. Diese Erweiterungen wurden von
|
||||
den Nutzern sehr geschätzt, weil der Drucker sich in einem anderen Gebäudeteil
|
||||
befand, als die Büros, und diese Funktion viele Laufwege ersparte. Die
|
||||
Änderungen an dem neuen Drucker nicht mehr durchführen zu können, überzeugte
|
||||
Stallman, dass es einen Bedarf an Software gab, die jeder frei nutzen und
|
||||
Verändern kann.
|
||||
|
||||
Richard Greenblatt, ein befreudeter Hacker am MIT, gründete derweil die Firma
|
||||
*Lisp Machines Inc.*, um due LISP-basierten Computer bauen zu können, die er
|
||||
zusammen mit Tom Knight im MIT-Lab designed hatte. Greenblatt wollte kein Geld
|
||||
von aussen annehmen, um möglichst unabhängig zu bleiben. Das führte zu
|
||||
Spannungen mit einigen Kommilitonen, die lieber Investoren-Geld annehmen
|
||||
wollten, um die Firma schnell wachsen zu lassen. Daher kam es zum Zerwürfnis,
|
||||
und die Mitglieder des *Invertorenlagers* gründeten die Firma *Symbolics*.
|
||||
Allerdings machten die Investoren die Geheimhaltung des Quellcodes zu einer
|
||||
Bedingung.
|
||||
|
||||
Stallman verbrachte die Jahre 1982 und 1983 damit eine zu Symbolics kompatible
|
||||
Software zu erstellen, um zu verhindern das diese ein Monopol über die Software
|
||||
auf den Computern im MIT bekam. Im Februar 1984 kündigte Stallman schließlich
|
||||
seine Stelle am MIT und startete das GNU Projekt.
|
||||
|
||||
GNU steht ist ein rekursives Akronym und steht für *GNU is not UNIX*. Die Idee
|
||||
war es, ein eigenes Betriebssystem zu bauen, dass vollständig auf freier
|
||||
Software basiert, und dass allen zur Verfügung steht. Inklusive des Quellcodes,
|
||||
sodass jedermann die Software nicht nur nutzen, sondern auch eigenen
|
||||
Bedürfnissen anpassen kann. Dafür gründete er die gemeinnützige *Free Software
|
||||
Foundation*, die sich den Zielen der Open-Source-Bewegung verschrieben hat.
|
||||
|
||||
Stallman war bei der Entwicklung verantwortlich für die Toolchain, vor allem den
|
||||
GNU EMACS Texteditor, den Compiler (GCC), den GNU Debugger und ein
|
||||
automatisiertes Build-System zum kompilieren der Software namens GNU Make. Ende
|
||||
der 1980 Jahre hatte die FSF alle Werkzeuge zusammen, die man braucht, um ein
|
||||
UNIX-artiges Betriebssystem zu erschaffen. Mit einer wichtigen Ausnahme: dem
|
||||
Kernel.
|
||||
|
||||
### Torvalds
|
||||
|
||||
Ein Kernel ist sozusagen das Herzstück eines Betriebssystems. Es ist der Teil,
|
||||
der die Kommunikation der Programme die auf einem Computer laufen mit der
|
||||
physischen Hardware koordiniert, den Speicher verwaltet und Zugriff auf die
|
||||
Massenspeicher wie Festplatten ermöglicht.
|
||||
|
||||
Hier erschien nun ein junger finnischer Informatik-Student auf der Bühne: Linus
|
||||
Torvalds. Torvalds hatte sich gerade seinen ersten 80386 basierten PC gekauft,
|
||||
und war enttäuscht, dass die damals noch üblichen PC-Betriebssysteme, vor allem
|
||||
MS-DOS, die Fähigkeiten dieser Hardware nicht ansatzweise ausnutzten.
|
||||
|
||||
Torvalds schrieb also seinen eigenen Kernel, der seinen neuen PC besser nutzen
|
||||
konnte. Er orientierte sich dabei an *Minix* einem UNIX-ähnlichen
|
||||
Betriebssystem, das von dem legendären Computer-Forscher Andrew S. Tanenbaum für
|
||||
Lehrzwecke geschrieben worden war.
|
||||
|
||||
### GNU/Linux
|
||||
|
||||
Am 25. August 1991 veröffentlichte Torvalds seine Arbeit im der Usenet-Gruppe
|
||||
*comp.os.minix*.
|
||||
|
||||
Ursprünglich wollte er sein Projekt *FreaX* nennen, als Kofferwort aus *Freak*
|
||||
und *Unix*. Ari Lemmke, der damals Administrator der FTP Server and er
|
||||
Universität in Helsinki war, fand den Namen nicht gut, und schlug stattdessen
|
||||
*Linux* vor, als Kurzform von *Linus' Unix*. Torvalds gefiel das zunächst nicht,
|
||||
weil es ihm zu egoistisch vorkam, beugte sich aber den Stimmen der Community,
|
||||
die Lemmke's Vorschlag allesamt besser fanden.
|
||||
|
||||
Obwohl er, anders als Stallman, nicht politisch motiviert war, wollte Torvalds
|
||||
seine Arbeit gerne mit so vielen Menschen wie möglich teilen. Darum wählte er
|
||||
die GNU General Public Licence als Lizenzmodell aus. Dies gab dem GNU Projekt
|
||||
das letzte fehlende Puzzle-Teil in die Hand: GNU/Linux war geboren.
|
||||
|
||||
Über den Namen dieses Betriebssystems gibt es bis heute übrigens Kontroversen.
|
||||
Die Free Software Foundation besteht darauf, dass vollständige System GNU/Linux
|
||||
zu nennen, was technisch richtiger ist (zumal es inzwischen auch Systeme wir
|
||||
GNU/Mach und GNU/Hurd gibt). In der Öffentlichkeit hat sich die Kurzform *Linux*
|
||||
weitestgehend durchgesetzt.
|
||||
19
slides/01.Introduction.tex
Normal file
19
slides/01.Introduction.tex
Normal file
@@ -0,0 +1,19 @@
|
||||
% Title: Linux - Mehr als nur ein Betriebssystem
|
||||
% Author: Alexander Noack <jali@orca-central.de>
|
||||
% Created On: Mon 20 Apr 2026
|
||||
% Summary: Presentation for the talk
|
||||
% Language: de-DE
|
||||
|
||||
\section{Überblick}
|
||||
\begin{frame}
|
||||
\frametitle{Überblick}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.2]{images/Tux.png}
|
||||
\caption{\tiny{lewing@isc.tamu.edu Larry Ewing and The GIMP, Attribution,\\ https://commons.wikimedia.org/w/index.php?curid=80930}}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
60
slides/02.JustForFun.tex
Normal file
60
slides/02.JustForFun.tex
Normal file
@@ -0,0 +1,60 @@
|
||||
% Title: Linux - Mehr als nur ein Betriebssystem
|
||||
% Author: Alexander Noack <jali@orca-central.de>
|
||||
% Created On: Mon 20 Apr 2026
|
||||
% Summary: Presentation for the talk
|
||||
% Language: de-DE
|
||||
|
||||
\section{Just For Fun}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Die Open-Source-Bewegung}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.1]{images/PDP-10-wikipedia.jpeg}\\
|
||||
PDP-10 Mainframe Computer
|
||||
\caption{\tiny{gah4, CC-BY-SA 4.0}}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{GNU}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.1]{images/Heckert_GNU_white.svg.png}
|
||||
\caption{\tiny{By Aurelio A. Heckert <aurium@gmail.com> - gnu.org, CC BY-SA 2.0, \\ https://en.wikipedia.org/w/index.php?curid=33285325}}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{GNU/Linux}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[scale=0.2]{images/Torvalds.jpeg}
|
||||
\caption{\tiny{Torvalds at LC, Beijing. China, 2018; CC-BY 3.0}}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{GNU/Linux}
|
||||
\tiny{
|
||||
Hello everybody out there using minix -
|
||||
|
||||
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for
|
||||
386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any
|
||||
feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical
|
||||
layout of the file-system (due to practical reasons) among other things).
|
||||
|
||||
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get
|
||||
something practical within a few months, and I'd like to know what features most people would want.
|
||||
Any suggestions are welcome, but I won't promise I'll implement them :-)
|
||||
|
||||
\medskip
|
||||
|
||||
Linus (torvalds@kruuna.helsinki.fi)
|
||||
|
||||
\medskip
|
||||
|
||||
PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386
|
||||
task switching etc), and it probably never will support anything other than AT-harddisks, as that's
|
||||
all I have :-(.}
|
||||
\end{frame}
|
||||
202
wscript
Normal file
202
wscript
Normal file
@@ -0,0 +1,202 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
# Created On: Tue 28 Aug 2012 11:44:05 CEST
|
||||
# Last Modified: Tue 21 Mar 2017 08:40:17 pm CET
|
||||
# MAKEFILE for compiling LaTeX Files
|
||||
|
||||
VERSION='1.0.0'
|
||||
APPNAME='MAKEFILE FOR LaTeX'
|
||||
|
||||
top='.'
|
||||
out='build'
|
||||
chapterpath='./chapters'
|
||||
|
||||
# query the options that are possible outputs
|
||||
def options(ctx):
|
||||
ctx.add_option('--form',action='store',default='pdflatex',help='Specify the output format. Allowed values are: pdflatex, latex, htlatex, oolatex, epub, handlatex')
|
||||
ctx.add_option('--cover',action='store',help='Specify an image as cover for ePubs.\nOnly works with --form=epub')
|
||||
ctx.add_option('--infile',action='store',help='Specify the tex file to use as input file.\nIf not given, all files in the top level directory will be compiled.')
|
||||
ctx.add_option('--spellckpath',action='store',help='Specify the path in which to look for the content files for spellcheck.\nDefault is ./chapters',default=chapterpath);
|
||||
|
||||
# configure script
|
||||
def configure(ctx):
|
||||
# local functions to configure the selected element
|
||||
def find_tex_files(path):
|
||||
import os
|
||||
ret = []
|
||||
for name in os.listdir(path):
|
||||
if os.path.isfile(os.path.join(path,name)):
|
||||
if (name.endswith('.tex')) or (name.endswith('.ltx')):
|
||||
ret.append(name)
|
||||
return ret
|
||||
|
||||
def conf_tex(ctx):
|
||||
ctx.load('tex')
|
||||
|
||||
def conf_htlatex(ctx):
|
||||
ctx.find_program('mk4ht',var='TEX')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
def conf_epub(ctx):
|
||||
ctx.find_program('mk4ht',var='TEX')
|
||||
ctx.find_program('ebook-convert',var='EPUB')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
def conf_handlatex(ctx):
|
||||
ctx.find_program('handlatex',var='TEX')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
# define a structure to assign the functions to the parameters
|
||||
conf_output = {'pdflatex' : conf_tex,
|
||||
'latex' : conf_tex,
|
||||
'htlatex' : conf_htlatex,
|
||||
'oolatex' : conf_htlatex,
|
||||
'epub' : conf_epub,
|
||||
'handlatex' : conf_handlatex
|
||||
|
||||
}
|
||||
|
||||
# set the selected mode
|
||||
if ctx.options.form:
|
||||
ctx.env.FORM = ctx.options.form
|
||||
conf_output[ctx.env.FORM](ctx)
|
||||
else:
|
||||
ctx.fatal('Output format is not set!')
|
||||
|
||||
# set a cover image
|
||||
if ctx.options.cover:
|
||||
ctx.env.COVER = ctx.options.cover
|
||||
else:
|
||||
ctx.env.COVER = ''
|
||||
|
||||
# find the aspell program
|
||||
ctx.find_program('aspell',var='ASPELL')
|
||||
|
||||
# set a default path to look for spellck sources
|
||||
if ctx.options.spellckpath:
|
||||
ctx.env.SPELLCK = ctx.options.spellckpath
|
||||
|
||||
# Set a list of all files to use
|
||||
if ctx.options.infile:
|
||||
sf = []
|
||||
sf.append(ctx.options.infile)
|
||||
ctx.env.SOURCEFILES = sf
|
||||
else:
|
||||
ctx.env.SOURCEFILES = find_tex_files(top)
|
||||
|
||||
|
||||
def build(ctx):
|
||||
# metadata parameters
|
||||
def build_metadata(fileName,cover):
|
||||
ret = '--level1-toc \'//*[@class="title"]\' '
|
||||
with open(fileName,'r') as in_file:
|
||||
count = 0
|
||||
for line in in_file:
|
||||
if '% Author' in line:
|
||||
ret += ' --authors "' + line.split(':')[1].rstrip().lstrip() +'"'
|
||||
count += 1
|
||||
elif '% Title' in line:
|
||||
ret += ' --title "' + line.split(':')[1].rstrip().lstrip() + '"'
|
||||
count += 1
|
||||
elif count > 1:
|
||||
break
|
||||
in_file.close()
|
||||
|
||||
if cover:
|
||||
ret += ' --cover "' + cover + '"'
|
||||
|
||||
return ret
|
||||
|
||||
# local functions to control the build process
|
||||
def build_tex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
ctx(features = 'tex',
|
||||
type = ctx.env.FORM,
|
||||
source = f,
|
||||
prompt = 0
|
||||
)
|
||||
if ctx.cmd == 'install':
|
||||
outExt = '.dvi'
|
||||
if ctx.env.FORM == 'pdflatex':
|
||||
outExt = '.pdf'
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + outExt)
|
||||
|
||||
def build_htlatex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${FORM} ${SRC} >/dev/null',source=f, target=fileName + '.html')
|
||||
if ctx.cmd == 'install':
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + '.html')
|
||||
|
||||
def build_epub(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
print(ctx.path.find_resource(ctx.env.COVER))
|
||||
if ctx.env.COVER :
|
||||
ctx.env.META = build_metadata(f,ctx.path.find_resource(ctx.env.COVER).abspath())
|
||||
else:
|
||||
ctx.env.META = build_metadata(f,'')
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} htlatex ${SRC} >/dev/null',source=f, target=fileName + '.html')
|
||||
ctx(rule='${EPUB} ${SRC} ${TGT} ${META}',source=fileName + '.html', target=fileName + '.epub')
|
||||
if ctx.cmd == 'install':
|
||||
ctx.install_files('${PREFIX}',fileName + '.epub')
|
||||
|
||||
def build_handlatex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${SRC} >/dev/null && rm -f ../*.h*',source=f)
|
||||
if ctx.cmd == 'install':
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + outExt)
|
||||
|
||||
|
||||
# define a structure to assign the functions to the parameters
|
||||
build_output = {'pdflatex' : build_tex,
|
||||
'latex' : build_tex,
|
||||
'htlatex' : build_htlatex,
|
||||
'oolatex' : build_htlatex,
|
||||
'epub' : build_epub,
|
||||
'handlatex' : build_handlatex
|
||||
}
|
||||
|
||||
# call the configured build method
|
||||
build_output[ctx.env.FORM](ctx)
|
||||
|
||||
|
||||
# Custom command to spellcheck all
|
||||
def spellck(ctx):
|
||||
|
||||
# Search for all possible TEX files
|
||||
def find_tex_files(path):
|
||||
import os
|
||||
ret = []
|
||||
for root, dirs, files in os.walk(path):
|
||||
for name in files:
|
||||
if (name.endswith('.tex')) or (name.endswith('.ltx')):
|
||||
ret.append(os.path.join(root,name))
|
||||
return ret
|
||||
|
||||
# Set a list of input files to use
|
||||
if ctx.options.infile:
|
||||
sf = []
|
||||
sf.append(ctx.options.infile)
|
||||
ctx.env.SOURCEFILES = sf
|
||||
else :
|
||||
ctx.env.SOURCEFILES = find_tex_files(ctx.env.SPELLCK)
|
||||
|
||||
# run aspell
|
||||
from os import system
|
||||
for f in ctx.env.SOURCEFILES :
|
||||
system(ctx.env.ASPELL + ' -c ' + f)
|
||||
system('rm ' + f + '.' +'bak')
|
||||
|
||||
# Class declarartion to bind the build context to the spellck command
|
||||
from waflib.Build import BuildContext
|
||||
class spck(BuildContext):
|
||||
cmd='spellck'
|
||||
fun='spellck'
|
||||
Reference in New Issue
Block a user