Changeset 833
- Timestamp:
- 08/11/07 14:53:01
- Files:
-
- buildout/pcl.buildout/trunk/init_postgresql.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
buildout/pcl.buildout/trunk/init_postgresql.py
r818 r833 11 11 from optparse import OptionParser 12 12 13 container = os.getcwd()14 PGDATA = os.path.join(container, 'var', 'postgresql')15 PGROOT = os.path.join(container, 'parts', 'postgresql')16 13 PGDBNAME = 'pcl_test' 17 POSTGIS = os.path.join(container, 'parts', 'postgis')18 DATASET = os.path.join(container, 'parts', 'worldborders', 'world_borders.shp')19 14 20 wrapper_script = os.path.join( container, 'bin', 'pg_ctl')15 wrapper_script = os.path.join(os.getcwd(), 'bin', 'pg_ctl') 21 16 wrapper_script_tmpl = """\ 22 17 #!/bin/sh … … 26 21 test_env_tmpl = """\ 27 22 [test-environment] 28 PCLCORE_DSN = host=localhost dbname= pcl_testport=%(port)s23 PCLCORE_DSN = host=localhost dbname=%(dbname)s port=%(port)s 29 24 """ 30 25 … … 33 28 raise RuntimeError('Error running command: %s' % cmd) 34 29 35 def initpg(port ):30 def initpg(port, datadir, postgresprefix, postgisprefix, worldborders): 36 31 """Initializes a test PostgreSQL server.""" 37 32 # Shut down the server if it is running 38 PIDFILE = '%s/postmaster.pid' % PGDATA33 PIDFILE = '%s/postmaster.pid' % datadir 39 34 if os.path.exists(wrapper_script) and os.path.exists(PIDFILE): 40 35 print 'Shutting down PostgreSQL server...' … … 44 39 45 40 # Clean up existing parts 46 if os.path.exists( PGDATA):47 shutil.rmtree( PGDATA)41 if os.path.exists(datadir): 42 shutil.rmtree(datadir) 48 43 49 assert not os.path.exists( PGDATA)50 os.makedirs( PGDATA)44 assert not os.path.exists(datadir) 45 os.makedirs(datadir) 51 46 52 47 # Initialize the database 53 system('%s/bin/initdb --auth=trust -D %s' % ( PGROOT, PGDATA))48 system('%s/bin/initdb --auth=trust -D %s' % (postgresprefix, datadir)) 54 49 55 50 # Create a wrapper script for pg_ctl 56 51 wrapper = open(wrapper_script, 'w') 57 wrapper.write(wrapper_script_tmpl % ( PGDATA, PGROOT))52 wrapper.write(wrapper_script_tmpl % (datadir, postgresprefix)) 58 53 wrapper.close() 59 54 os.chmod(wrapper_script, stat.S_IRWXU) 60 55 61 56 # Update the port setting and start up the server 62 conffile = '%s/postgresql.conf' % PGDATA57 conffile = '%s/postgresql.conf' % datadir 63 58 f = open(conffile) 64 59 conf = ('port = %s' % port).join(f.read().split('#port = 5432')) … … 69 64 70 65 # Convert the shapefile data to SQL insert statements 71 system('%s/bin/shp2pgsql -I -s 4269 %s postgis.world_borders > /tmp/wb.sql' % ( POSTGIS, DATASET))66 system('%s/bin/shp2pgsql -I -s 4269 %s postgis.world_borders > /tmp/wb.sql' % (postgisprefix, worldborders)) 72 67 73 68 # Create the test database 74 system('%s/bin/createdb --port=%s %s' % ( PGROOT, port, PGDBNAME))75 system('%s/bin/createlang --port=%s plpgsql %s' % ( PGROOT, port, PGDBNAME))76 system('%s/bin/psql -p %s -d %s -c "CREATE SCHEMA postgis"' % ( PGROOT, port, PGDBNAME))77 system('%s/bin/psql -p %s -d %s -f %s/share/lwpostgis.sql' % ( PGROOT, port, PGDBNAME, POSTGIS))78 system('%s/bin/psql -p %s -d %s -f %s/share/spatial_ref_sys.sql' % ( PGROOT, port, PGDBNAME, POSTGIS))69 system('%s/bin/createdb --port=%s %s' % (postgresprefix, port, PGDBNAME)) 70 system('%s/bin/createlang --port=%s plpgsql %s' % (postgresprefix, port, PGDBNAME)) 71 system('%s/bin/psql -p %s -d %s -c "CREATE SCHEMA postgis"' % (postgresprefix, port, PGDBNAME)) 72 system('%s/bin/psql -p %s -d %s -f %s/share/lwpostgis.sql' % (postgresprefix, port, PGDBNAME, postgisprefix)) 73 system('%s/bin/psql -p %s -d %s -f %s/share/spatial_ref_sys.sql' % (postgresprefix, port, PGDBNAME, postgisprefix)) 79 74 80 75 # Import the data 81 system('%s/bin/psql -p %s -d %s -f /tmp/wb.sql' % ( PGROOT, port, PGDBNAME))82 system('%s/bin/psql -p %s -d %s -c "CREATE VIEW postgis.uk_borders AS SELECT * FROM postgis.world_borders WHERE fips_cntry = \'UK\'"' % ( PGROOT, port, PGDBNAME))83 system('%s/bin/psql -p %s -d %s -c "INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES (\'\', \'postgis\', \'uk_borders\', \'the_geom\', 2, 4269, \'MULTIPOLYGON\')"' % ( PGROOT, port, PGDBNAME))84 system('%s/bin/psql -p %s -d %s -c "CREATE TABLE postgis.us_borders AS SELECT * FROM postgis.world_borders WHERE fips_cntry = \'US\'"' % ( PGROOT, port, PGDBNAME))85 system('%s/bin/psql -p %s -d %s -c "INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES (\'\', \'postgis\', \'us_borders\', \'the_geom\', 2, 4269, \'MULTIPOLYGON\')"' % ( PGROOT, port, PGDBNAME))76 system('%s/bin/psql -p %s -d %s -f /tmp/wb.sql' % (postgresprefix, port, PGDBNAME)) 77 system('%s/bin/psql -p %s -d %s -c "CREATE VIEW postgis.uk_borders AS SELECT * FROM postgis.world_borders WHERE fips_cntry = \'UK\'"' % (postgresprefix, port, PGDBNAME)) 78 system('%s/bin/psql -p %s -d %s -c "INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES (\'\', \'postgis\', \'uk_borders\', \'the_geom\', 2, 4269, \'MULTIPOLYGON\')"' % (postgresprefix, port, PGDBNAME)) 79 system('%s/bin/psql -p %s -d %s -c "CREATE TABLE postgis.us_borders AS SELECT * FROM postgis.world_borders WHERE fips_cntry = \'US\'"' % (postgresprefix, port, PGDBNAME)) 80 system('%s/bin/psql -p %s -d %s -c "INSERT INTO geometry_columns (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type) VALUES (\'\', \'postgis\', \'us_borders\', \'the_geom\', 2, 4269, \'MULTIPOLYGON\')"' % (postgresprefix, port, PGDBNAME)) 86 81 87 82 os.unlink('/tmp/wb.sql') … … 91 86 # test configuration and run the buildout again so that the 92 87 # test runner gets updated. 93 open('test-environment.cfg', 'w').write(test_env_tmpl % dict(port=port ))88 open('test-environment.cfg', 'w').write(test_env_tmpl % dict(port=port, dbname=PGDBNAME)) 94 89 system('./bin/buildout') 95 90 … … 100 95 parser.add_option('--port', dest='port', default='5432', 101 96 help='PostgreSQL server port number') 97 parser.add_option('--data-dir', dest='pgdata', default='var/postgresql', 98 help='Data directory where the database files will be stored') 99 parser.add_option('--postgresql-prefix', dest='postgresprefix', default='parts/postgresql', 100 help='PostgreSQL installation prefix') 101 parser.add_option('--postgis-prefix', dest='postgisprefix', default='parts/postgis', 102 help='PostGIS installation prefix') 103 parser.add_option('--worldborders-shp', dest='worldborders', 104 default='parts/worldborders/world_borders.shp', 105 help='Location of the world_borders.shp file.') 102 106 103 107 options, args = parser.parse_args() 104 108 105 initpg(port=options.port) 109 def p(path): 110 return os.path.join(os.getcwd(), path) 111 112 initpg(port=options.port, 113 datadir=p(options.pgdata), 114 postgresprefix=p(options.postgresprefix), 115 postgisprefix=p(options.postgisprefix), 116 worldborders=p(options.worldborders)) 106 117 107 118 print '\n\n'
