From 682fc6d81de06c8de9d51e2058e5a0dd6192e42b Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Sat, 15 Mar 2008 16:01:17 -0400 Subject: [PATCH] Spec fixes, require a python setup.py build to generate app.cfg. --- fas/.gitignore | 1 - fas/README | 2 +- fas/fas.spec | 28 ++++--- fas/fas/config/.gitignore | 1 + fas/fas/config/app.cfg | 167 -------------------------------------- fas/fas/config/app.cfg.in | 2 +- 6 files changed, 18 insertions(+), 183 deletions(-) create mode 100644 fas/fas/config/.gitignore delete mode 100644 fas/fas/config/app.cfg diff --git a/fas/.gitignore b/fas/.gitignore index 3021ee9..a8affaa 100644 --- a/fas/.gitignore +++ b/fas/.gitignore @@ -1,5 +1,4 @@ *~ -*.mo random_seed pubring.gpg secring.gpg diff --git a/fas/README b/fas/README index 834e059..686ea58 100644 --- a/fas/README +++ b/fas/README @@ -67,7 +67,7 @@ It's presently part of the fedora-infrastructure git repo:: Once you are inside you're fresh checkout, you need to regenerate some files that are created by the build script, setup.py:: - python setup.py egg_info + python setup.py build This will create the fas.egg-info directory which has metadata about the program. It allows things like the identity provider to work. diff --git a/fas/fas.spec b/fas/fas.spec index 22ca1a2..73d8a88 100644 --- a/fas/fas.spec +++ b/fas/fas.spec @@ -22,6 +22,7 @@ Requires: python-fedora-infrastructure >= 0.2.99.2 Requires: babel Requires: pygpgme Requires: python-babel +Requires: python-genshi Requires: pytz %description @@ -48,24 +49,25 @@ Additional scripts that work as clients to the accounts system. %build %{__python} setup.py build --install-data='%{_datadir}/fas' + %install -rm -rf $RPM_BUILD_ROOT -%{__python} setup.py install -O1 --skip-build --install-data='%{_datadir}/fas' --root $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT%{_sbindir} -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir} -mv $RPM_BUILD_ROOT%{_bindir}/start-fas $RPM_BUILD_ROOT%{_sbindir} +rm -rf %{buildroot} +%{__python} setup.py install -O1 --skip-build --install-data='%{_datadir}/fas' --root %{buildroot} +mkdir -p %{buildroot}%{_sbindir} +mkdir -p %{buildroot}%{_sysconfdir} +mv %{buildroot}%{_bindir}/start-fas %{buildroot}%{_sbindir} # Unreadable by others because it's going to contain a database password. -install fas.cfg $RPM_BUILD_ROOT%{_sysconfdir} -install client/fas.conf $RPM_BUILD_ROOT%{_sysconfdir} +install -m 640 fas.cfg %{buildroot}%{_sysconfdir} +install -m 600 client/fas.conf %{buildroot}%{_sysconfdir} + %clean -rm -rf $RPM_BUILD_ROOT +rm -rf %{buildroot} + %pre -/usr/sbin/groupadd -r fas &>/dev/null || : -/usr/sbin/useradd -r -s /sbin/nologin -d /usr/share/fas -M \ - -c 'Fedora Acocunt System user' -g fas fas &>/dev/null || : - +/usr/sbin/useradd -c 'Fedora Acocunt System user' -s /sbin/nologin \ + -r -M -d /usr/share/fas fas &> /dev/null || : %files @@ -74,7 +76,7 @@ rm -rf $RPM_BUILD_ROOT %{python_sitelib}/* %{_datadir}/fas/ %{_sbindir}/start-fas -%attr(0640,root,apache) %config(noreplace) %{_sysconfdir}/fas.cfg +%attr(-,root,fas) %config(noreplace) %{_sysconfdir}/fas.cfg %files clients %{_bindir}/* diff --git a/fas/fas/config/.gitignore b/fas/fas/config/.gitignore new file mode 100644 index 0000000..55cae88 --- /dev/null +++ b/fas/fas/config/.gitignore @@ -0,0 +1 @@ +app.cfg diff --git a/fas/fas/config/app.cfg b/fas/fas/config/app.cfg deleted file mode 100644 index e1d0a0a..0000000 --- a/fas/fas/config/app.cfg +++ /dev/null @@ -1,167 +0,0 @@ -[global] -# The settings in this file should not vary depending on the deployment -# environment. dev.cfg and prod.cfg are the locations for -# the different deployment settings. Settings in this file will -# be overridden by settings in those other files. - -# The commented out values below are the defaults - -# Database values -sqlalchemy.convert_unicode=True - -# VIEW - -# which view (template engine) to use if one is not specified in the -# template name -# tg.defaultview = "kid" -tg.defaultview = "genshi" - -# The following kid settings determine the settings used by the kid serializer. - -# One of (html|html-strict|xhtml|xhtml-strict|xml|json) -# kid.outputformat="html" -genshi.outputformat = "xhtml" - -# When @#%*( TG supports this.... -#genshi.outputformat = "html" -#genshi.default_doctype = "html-strict" - -# kid.encoding="utf-8" -genshi.encoding="utf-8" - -# The sitetemplate is used for overall styling of a site that -# includes multiple TurboGears applications -# tg.sitetemplate="" - -# Allow every exposed function to be called as json, -# tg.allow_json = False - -# Suppress the inclusion of the shipped MochiKit version, which is rather outdated. -# Attention: setting this to True and listing 'turbogears.mochikit' in 'tg.include_widgets' -# is a contradiction. This option will overrule the default-inclusion to prevent version -# mismatch bugs. -# tg.mochikit_suppress = True - -# List of Widgets to include on every page. -# for example ['turbogears.mochikit'] -# tg.include_widgets = [] - -# Set to True if the scheduler should be started -# tg.scheduler = False - -# Set to True to allow paginate decorator redirects when page number gets -# out of bound. Useful for getting the real page id in the url -# paginate.redirect_on_out_of_range = True - -# Set to True to allow paginate decorator redirects when last page is requested. -# This is useful for getting the real last page id in the url -# paginate.redirect_on_last_page = True - -# i18n -session_filter.on = True -i18n.run_template_filter = True -i18n.domain = 'fas' - -# VISIT TRACKING -# Each visit to your application will be assigned a unique visit ID tracked via -# a cookie sent to the visitor's browser. -# -------------- - -# Enable Visit tracking -visit.on=True - -# Number of minutes a visit may be idle before it expires. -visit.timeout=20 - -# The name of the cookie to transmit to the visitor's browser. -# visit.cookie.name="tg-visit" - -# Domain name to specify when setting the cookie (must begin with . according to -# RFC 2109). The default (None) should work for most cases and will default to -# the machine to which the request was made. NOTE: localhost is NEVER a valid -# value and will NOT WORK. -# visit.cookie.domain=None - -# Specific path for the cookie -# visit.cookie.path="/" - -# The name of the VisitManager plugin to use for visitor tracking. -visit.manager="sqlalchemy" -#visit.manager="sqlobject" - -# Database class to use for visit tracking -visit.saprovider.model = "fas.model.Visit" -identity.saprovider.model.visit = "fas.model.VisitIdentity" -#visit.saprovider.model = "fedora.accounts.tgfas.visit_identity_table" -#visit.soprovider.model = "fas.model.Visit" - -#identity.saprovider.model.visit="fedora.accounts.tgfas.VisitIdentity" -#identity.saprovider.model= -#sqlalchemy.dburi='sqlite://' - -# IDENTITY -# General configuration of the TurboGears Identity management module -# -------- - -# Switch to turn on or off the Identity management module -identity.on=True - -# [REQUIRED] URL to which CherryPy will internally redirect when an access -# control check fails. If Identity management is turned on, a value for this -# option must be specified. -identity.failure_url="/login" - -identity.provider='safas3' -# identity.provider='sqlobject' - -# The names of the fields on the login form containing the visitor's user ID -# and password. In addition, the submit button is specified simply so its -# existence may be stripped out prior to passing the form data to the target -# controller. -# identity.form.user_name="user_name" -# identity.form.password="password" -# identity.form.submit="login" - -# What sources should the identity provider consider when determining the -# identity associated with a request? Comma separated list of identity sources. -# Valid sources: form, visit, http_auth -# identity.source="form,http_auth,visit" - -# SqlAlchemyIdentityProvider -# Configuration options for the default IdentityProvider -# ------------------------- - -# The classes you wish to use for your Identity model. Remember to not use reserved -# SQL keywords for class names (at least unless you specify a different table -# name using sqlmeta). -identity.saprovider.model.user="fas.model.People" -identity.saprovider.model.group="fas.model.Groups" -#identity.saprovider.model.permission="fas.model.Visit" - -# The password encryption algorithm used when comparing passwords against what's -# stored in the database. Valid values are 'md5' or 'sha1'. If you do not -# specify an encryption algorithm, passwords are expected to be clear text. -# The SqlAlchemyProvider *will* encrypt passwords supplied as part of your login -# form. If you set the password through the password property, like: -# my_user.password = 'secret' -# the password will be encrypted in the database, provided identity is up and -# running, or you have loaded the configuration specifying what encryption to -# use (in situations where identity may not yet be running, like tests). - -# identity.saprovider.encryption_algorithm=None - -# compress the data sends to the web browser -# [/] -# gzip_filter.on = TrueNote: in the SVG XML, change the 'interviewee-name' text to be the name of whichever in -# gzip_filter.mime_types = ["application/x-javascript", "text/javascript", "text/html", "text/css", "text/plain"] -[/robots.txt] -static_filter.on = True -static_filter.dir = "%(top_level_dir)s/static/robots.txt" - -[/static] -static_filter.on = True -static_filter.dir = "%(top_level_dir)s/static" - -[/favicon.ico] -static_filter.on = True -static_filter.file = "%(top_level_dir)s/static/images/favicon.ico" diff --git a/fas/fas/config/app.cfg.in b/fas/fas/config/app.cfg.in index 4813a03..56c9924 100644 --- a/fas/fas/config/app.cfg.in +++ b/fas/fas/config/app.cfg.in @@ -61,7 +61,7 @@ genshi.encoding="utf-8" session_filter.on = True i18n.run_template_filter = True i18n.domain = 'fas' -i18n.locale_dir = 'po' +i18n.locale_dir = '@DATADIR@/locales' # VISIT TRACKING # Each visit to your application will be assigned a unique visit ID tracked via