]> git.llucax.com Git - software/sercom-old.git/commitdiff
- Se arregla el empaquetado de Debian (limpiandolo bastante).
authorLeandro Lucarella <llucax@gmail.com>
Sun, 6 Mar 2005 04:43:47 +0000 (04:43 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 6 Mar 2005 04:43:47 +0000 (04:43 +0000)
- Se agrega el script setup.py para instalar los modulos de python.
- Se actualizan los número de versión a 0.3 (incrementa la versión de Debian).
- Se mejora bastante la documentación de los README.

16 files changed:
Makefile [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/changelog
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/sercom.cron.d [new file with mode: 0644]
debian/sercom.default [new file with mode: 0644]
doc/README
doc/dependencias.txt [deleted file]
doc/examples/Makefile-cpp [new file with mode: 0644]
doc/examples/sercom.ini
setup.py [new file with mode: 0755]
src/T/general.php
src/sc_deliver
src/sc_test
src/sercom/__init__.py

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..1019876
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,44 @@
+# sercom Makefile (probablemente _demasiado_ Debian friendly)
+
+INSTALL = install -o root -g root
+
+PREFIX = /usr/local
+
+CONFS     = $(wildcard doc/examples/*.ini)
+MAKEFILES = $(wildcard doc/examples/Makefile*)
+DAEMONS   = src/sc_fetch src/sc_test src/sc_deliver
+COMMANDS  = src/sc_codegen src/sc_dbq
+PHPLIBS   = $(wildcard src/T/*.php)
+PHPDBO    = $(wildcard src/T/DBO/*.php)
+PHPSCHEMA = $(wildcard src/T/DBO/schema/*.ini)
+DOCS      = doc/README $(wildcard doc/schema.*)
+EXAMPLES  = $(wildcard doc/examples/*)
+
+.PHONY: all install clean
+
+all:
+
+install:
+       # Directorios
+       $(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/sbin
+       $(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/bin
+       $(INSTALL) -d -m 0755 $(DESTDIR)/etc/sercom
+       $(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/share/doc/sercom/examples
+       $(INSTALL) -d -m 0755 $(DESTDIR)$(PREFIX)/share/php/T/DBO/schema
+       $(INSTALL) -d -m 2775 $(DESTDIR)$/var/lib/sercom/ejercicios
+       $(INSTALL) -d -m 2775 $(DESTDIR)$/var/lib/sercom/intentos
+       # Archivos
+       $(INSTALL)    -m 0644 $(CONFS)     $(DESTDIR)/etc/sercom
+       $(INSTALL)    -m 0664 $(MAKEFILES) $(DESTDIR)/var/lib/sercom
+       $(INSTALL)    -m 0755 $(DAEMONS)   $(DESTDIR)$(PREFIX)/sbin
+       $(INSTALL)    -m 0755 $(COMMANDS)  $(DESTDIR)$(PREFIX)/bin
+       $(INSTALL)    -m 0644 $(PHPLIBS)   $(DESTDIR)$(PREFIX)/share/php/T
+       $(INSTALL)    -m 0644 $(PHPDBO)    $(DESTDIR)$(PREFIX)/share/php/T/DBO
+       $(INSTALL)    -m 0644 $(PHPSCHEMA) $(DESTDIR)$(PREFIX)/share/php/T/DBO/schema
+       $(INSTALL)    -m 0644 $(DOCS)      $(DESTDIR)$(PREFIX)/share/doc/sercom
+       $(INSTALL)    -m 0644 $(EXAMPLES)  $(DESTDIR)$(PREFIX)/share/doc/sercom/examples
+       # Bibliotecas en Python
+       ./setup.py install --optimize 2 --root=$(DESTDIR) --prefix=$(PREFIX)
+
+clean:
+
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..3770ed0
--- /dev/null
@@ -0,0 +1,25 @@
+sercom for Debian
+-----------------
+
+Primero que nada debería leer el archivo /usr/share/doc/sercom/README!!!
+
+Para que el programa empiece a funcionar, hay que cambiar /etc/default/sercom,
+poniendo la variable ENABLED=1 (ver el resto de las variables por si hay que
+ajustar algo más, aunque los valores que trae son bastante razonables).
+
+2 servicios arrancarán al prender la PC: sc_fetch (encargado de recibir las
+entregas) y sc_test (encargado de probar las entregas).
+Puede activarlos o desactivarlos con 'invoque-rc.d sercom start' o 'stop'
+respectivamente.
+
+El programa sc_deliver, encargado de cerrar una entrega y tomar el último
+intento exitoso como entrega final a corregir, corre todos los días a las
+23:30hs, puede modificarlo en el archivo /etc/cron.d/sercom.
+Puede ser necesario modificarlo si el corrector es muy lento compilando y no
+llega terminar de compilar las cosas que, normalmente, se terminan de entregar a
+las 20:00hs.
+
+Tambien puede cambiar la frecuencia de rotación de logs en
+/etc/logrotate.d/sercom.
+
+ -- Leandro Lucarella <llucare@fi.uba.ar>, sáb mar  5 22:16:29 ART 2005
index e942babb72de8e6f01ddd17d7c581fd673dcd470..860d0f97b8003ebe2fc4fa7c99c6e79929dd28ed 100644 (file)
@@ -1,3 +1,15 @@
+sercom (0.3) unstable; urgency=low
+
+  * Se migra sc_test a python.
+  * sc_test ahora corre los casos de prueba y compara resultados, enviando
+    mails, etc. No corre un chequeador de memoria.
+  * Se agrega sc_deliver, encargado de cerrar las entregas.
+  * Se agrega sc_dbq, para hacer consultas a la base de datos usando sqlobject
+    de python, principalmente con motivos de debug.
+  * Bugfixes.
+
+ -- Leandro Lucarella <luca@llucax.hn.org>  Sun,  6 Mar 2005 01:36:29 -0300
+
 sercom (0.2) unstable; urgency=low
 
   * Se mejora el log.
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..73debd1
--- /dev/null
@@ -0,0 +1,20 @@
+Source: sercom
+Section: utils
+Priority: optional
+Maintainer: Leandro Lucarella <llucare@fi.uba.ar>
+Build-Depends: debhelper (>= 4.0.0), cdbs
+Standards-Version: 3.6.1
+
+Package: sercom
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends},
+ php4-cli, php4-pear, php4-imap, make, python2.4, python2.4-sqlobject (>> 0.6.1)
+Recommends: php4-sqlite, python2.4-sqlite, python2.4-egenix-mxdatetime, gcc,
+ g++, sqlite
+Description: Servidor de correccion de taller
+ sercom es un SERvidor de COMpilacion y ejecucion de pruebas para la catedra de
+ Taller de Programacion I de la Facultad de Ingenieria de la Universidad de
+ Buenos Aires, aunque puede ser facilmente adaptado para usar por otras
+ catedras e incluso usos mas generales.
+ .
+ Este paquete incluye sc_fetch, sc_test, sc_deliver, sc_dbq y sc_codegen.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..67b3e40
--- /dev/null
@@ -0,0 +1,22 @@
+This is sercom, written and maintained by Leandro Lucarella <llucare@fi.uba.ar>
+on Sun, 29 Aug 2004 15:20:25 -0300.
+
+Copyright (C) 2003  Leandro Lucarella
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this package; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/sercom.cron.d b/debian/sercom.cron.d
new file mode 100644 (file)
index 0000000..9b5e7c7
--- /dev/null
@@ -0,0 +1,5 @@
+# /etc/cron.d/sercom: fragmento de crontab para sercom
+
+# Ejecuta sc_deliver todos los días después a las 23:30hs
+# m h  dom mon dow user    command
+30  23  *   *   *  sercom  /usr/sbin/sc_deliver
diff --git a/debian/sercom.default b/debian/sercom.default
new file mode 100644 (file)
index 0000000..0a6d1ab
--- /dev/null
@@ -0,0 +1,24 @@
+# Defaults for sercom initscript
+# sourced by /etc/init.d/sercom
+# installed at /etc/default/sercom by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Opciones para el fetch
+FETCH_OPTS=""
+# Prioridad del fetch
+FETCH_NICE=5
+# Usuario con el cual correr el fetch
+FETCH_UID=sercom
+# Grupo con el cual correr el fetch
+FETCH_GID=sercom
+
+# Opciones para el test
+TEST_OPTS=""
+# Prioridad del test
+TEST_NICE=10
+
+# Hasta que esto no esté en 1, el servidor no va a correr.
+ENABLED=0
index 8df4df85d76526a06a2c66567c1fbeedbf1eb53e..1c504d8be1875e0414442ecafe2c875750aa7dd5 100644 (file)
@@ -1,4 +1,62 @@
 Corrector Automático para Taller de Programación I (75.42)
 Universidad de Buenos Aires - Facultad de Ingeniería
 
+Este programa requiere el siguiente los siguientes programas y bibliotecas:
+* php4-cli
+* php4-imap
+* php4-pear
+* php4 PEAR DB_DataObject (1.7.2 o superior) (# pear install -a DB_DataObject)
+* make
+* python2.4
+* python2.4-sqlobject (0.6.2 o superior)
 
+En el directorio /etc/sercom se encuentran los archivos de configuración,
+debería darle una mirada antes de correr el servidor.
+
+/etc/sercom/log.ini es un poco más complejo y sirve para configurar el nivel
+de log. El formato está descripto en:
+http://docs.python.org/lib/logging-config-fileformat.html
+Se lo provee de una forma bastante razonable, probablemente haya que cambiar
+la sección [handler_mail] para poner un servidor SMTP y direcciones de mail
+válidas solamente.
+
+Los archivos de configuración originales se encuentran en
+/usr/share/doc/sercom/examples, por si fuera necesario recuperarlos.
+
+En /var/lib/sercom están los archivos de datos del programa. Contiene:
+- Makefile de ejemplo ('Makefile' para C y 'Makefile-cpp' para C++).
+- Directorio 'intentos' donde los intentos de entrega que llegan por mail
+  de los alumnos. Su estructura es:
+  intentos/año.cuatrimestre/curso.ejercicio.entrega/padron.intento
+  dentro de cada directorio están los archivos fuente enviados por el alumno.
+- Directorio 'ejercicios' donde los datos sobre los ejercicios deben ser
+  guardados, incluyendo los archivos para casos de prueba. Su estructura es:
+  ejercicios/[id]/Makefile
+                  casos_de_prueba/[nombre]/{stdin}
+                                           {stdout}
+                                           {stderr}
+                                           {entradas/[archivo]}
+                                           {salidas/[archivo]}
+  [algo] significa que algo es una variable. {algo} indica que puede no existir.
+  id: es el identificador de ejercicio en la base de datos.
+  nombre: es el nombre del caso de prueba
+  stdin/stdout/stderr: es la entrada estándar, salida estándar y salida de error
+    esperada (la entrada es la que espera el programa a probar y las salidas son
+    las que espera el corrector para saber si la corrida fue correcta).
+  entradas: los 'archivo's de entradas son los archivos que espera tener
+    presente el programa para correr el caso de prueba.
+  salidas: los 'archivo's de salidas son los archivos que espera que genere (o
+    modifique si estaba presente también en entradas) el corrector y con el que
+    serán comparados dichos archivos generados para evaluar si la corrida fue
+    correcta.
+- Archivo de base de datos: la configuración por omisión espera la base de datos
+  en /var/lib/sercom/corrector.sqlite, con la estructura descripta en
+  /usr/share/doc/sercom/schema.sql. Para crear la base de datos vacía:
+  sqlite /var/lib/sercom/corrector.sqlite < /usr/share/doc/sercom/schema.sql
+  Pero recuerde que también habrá que cargar la base de datos con los datos
+  mínimos para que el corrector funcione (entregas, ejercicios, cursos,
+  docentes, inscriptos, casos de prueba).
+
+Por omisión el programa guarda el archivo de log en /var/log/sercom.log.
+
+ -- Leandro Lucarella <llucare@fi.uba.ar>, sáb mar  5 22:16:29 ART 2005
diff --git a/doc/dependencias.txt b/doc/dependencias.txt
deleted file mode 100644 (file)
index b830f66..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-PEAR:
-=====
-DB_DataObject 1.7.2
diff --git a/doc/examples/Makefile-cpp b/doc/examples/Makefile-cpp
new file mode 100644 (file)
index 0000000..7679eb3
--- /dev/null
@@ -0,0 +1,75 @@
+# Makefile de ejemplo para C++
+# 
+# Creado: jue abr 15 15:34:19 ART 2004
+#
+# Copyleft 2004 - Leandro Lucarella, Bajo licencia GPL [http://www.gnu.org/]
+#
+
+# CONFIGURACION
+################
+
+# Nombre del ejecutable.
+target = tp
+
+# Extensión de los archivos a compilar (c para C, cpp o cc o cxx para C++).
+extension = cpp
+
+# Archivos con el código fuente que componen el ejecutable. Si no se especifica,
+# toma todos los archivos con la extensión mencionada. Para especificar hay que
+# descomentar la línea (quitarle el '#' del principio).
+# NOTA: No poner cabeceras (.h). 
+#fuentes = entrada.cpp
+
+# Si es un programa GTK+, descomentá (quitale el '#' a) la siguiente línea.
+#gtk = si 
+
+
+# CONFIGURACION "AVANZADA"
+###########################
+
+# Opciones para el compilador C.
+CFLAGS = -Werror -Wall -ggdb -ansi -pedantic -DDEBUG
+
+# Opciones para el compilador C++.
+CXXFLAGS = $(CFLAGS) -fno-inline
+
+# Opciones del enlazador.
+LDFLAGS=-static
+
+
+# VARIABLES CALCULADAS A PARTIR DE LA CONFIGURACION
+####################################################
+
+# Agrego flags y libs de GTK+ de ser necesario.
+ifdef gtk
+CFLAGS += $(shell pkg-config --cflags gtk+-2.0)
+CXXFLAGS += $(shell pkg-config --cflags gtk+-2.0)
+LDFLAGS += $(shell pkg-config --libs gtk+-2.0)
+endif
+
+# Uso enlazador de c++ si es código no C.
+ifeq ($(extension), c)
+enlazador = $(CC)
+else
+enlazador = $(CXX)
+endif
+
+# Si no especifica archivos, tomo todos.
+fuentes ?= $(wildcard *.$(extension))
+
+
+# REGLAS
+#########
+
+.PHONY: all clean
+
+all: $(target)
+
+o_files = $(patsubst %.$(extension),%.o,$(fuentes))
+
+$(target): $(o_files)
+       $(enlazador) $(LDFLAGS) $(o_files) $(LOADLIBES) $(LDLIBS) -o $(target)
+
+clean:
+       @$(RM) -fv *.o $(target)
+
index 781b1b1182dee7feef70a3c59b1dd84b4e2e604f..0dafe52aacd30e5aa0fcaa1bbb433870352523c3 100644 (file)
@@ -58,7 +58,7 @@ options = novalidate-cert/ssl
 
 
 [DBO]
-database = sqlite:////var/lib/sercom/corrector.sqlite
+database = sqlite:///var/lib/sercom/corrector.sqlite
 schema_location = T/DBO/schema/
 class_location = T/DBO/
 require_prefix = T/DBO/
diff --git a/setup.py b/setup.py
new file mode 100755 (executable)
index 0000000..4d43da1
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python2.4
+# -*- encoding: iso-8859-1 -*-
+# vim: set et sw=4 sts=4 :
+
+from distutils.core import setup
+
+setup(name='sercom',
+    version='0.3',
+    description='Sercom base library',
+    author='Leandro Lucarella',
+    author_email='luca@llucax.hn.org',
+    url='http://www.fi.uba.ar/materias/7542/',
+    packages=['sercom'],
+    package_dir={'': 'src'},
+)
index 22d6ab780a9f3527703d295431d149dd2cf586a8..75478e56364def6b01ec8fed5cf5f50d4c2ca593 100644 (file)
@@ -1,6 +1,6 @@
 <?php // vim: set binary noeol et sw=4 sts=4:
 
-$VERSION = 0.2;
+$VERSION = 0.3;
 $NAME = 'sercom';
 
 define('DB_DATAOBJECT_NO_OVERLOAD', 0);
index 3b7abc4b68487aeec0c97cdb659fe2f30ac801ce..6377f003e4a7c9643c1c697f5542d4bf508f08b3 100755 (executable)
@@ -26,7 +26,7 @@ a su intento %d, recibido el %s.
     mail['To'] = inscripto.mail
     mail['Reply-To'] = conf.get('mail', 'admin')
     mail['Return-Path'] = conf.get('mail', 'admin')
-    mail['X-Mailer'] = 'sercom 0.3'
+    mail['X-Mailer'] = 'sercom ' + sercom.VERSION
     mail['X-Priority'] = '5'
     smtp = smtplib.SMTP(conf.get('mail', 'smtp'))
     smtp.sendmail(mail['From'], mail['To'], mail.as_string())
index d7c1d6363c7dd19abbb1d9491ce1b9f6c1556696..25a4b9806fc3864306b563cf6ecc37fb1f1a2119 100755 (executable)
@@ -316,7 +316,7 @@ class MailIntento(email.MIMEMultipart.MIMEMultipart, object):
         self['To'] = intento.mailRespuesta
         self['Reply-To'] = conf.get('mail', 'admin')
         self['Return-Path'] = conf.get('mail', 'admin')
-        self['X-Mailer'] = 'sercom 0.3'
+        self['X-Mailer'] = 'sercom ' + sercom.VERSION
         self['X-Priority'] = '5'
         self.epilogue = 'Para ver correctamente este e-mail su cliente debe ' \
             'soportar MIME.\n\n'
index e71f633793a7520320103957022ecd19fa698250..9edb4cafb8cefd3e700e0169a52e955319a33090 100644 (file)
@@ -1 +1,3 @@
 from util import init
+
+VERSION = '0.3'