| src/tools/pgindent/README |
| |
| pgindent |
| ======== |
| |
| This can format all PostgreSQL *.c and *.h files, but excludes *.y, and |
| *.l files. |
| |
| 1) Change directory to the top of the build tree. |
| |
| 2) Download the typedef file from the buildfarm: |
| |
| wget -O src/tools/pgindent/typedefs.list http://buildfarm.postgresql.org/cgi-bin/typedefs.pl |
| |
| 3) Remove all derived files (pgindent has trouble with one of the flex macros): |
| |
| gmake maintainer-clean |
| |
| 4) Run pgindent: |
| |
| find . -name '*.[ch]' -type f -print | \ |
| egrep -v -f src/tools/pgindent/exclude_file_patterns | \ |
| xargs -n100 pgindent src/tools/pgindent/typedefs.list |
| |
| 5) Remove any files that generate errors and restore their original |
| versions. |
| |
| 6) Do a full test build: |
| |
| run configure |
| # stop is only necessary if it's going to install in a location with an |
| # already running server |
| pg_ctl stop |
| gmake -C src install |
| gmake -C contrib install |
| gmake installcheck-world |
| |
| |
| --------------------------------------------------------------------------- |
| |
| We have standardized on NetBSD's indent. We have fixed a few bugs which |
| requre the NetBSD source to be patched with indent.bsd.patch patch. A |
| fully patched version is available at ftp://ftp.postgresql.org/pub/dev. |
| |
| GNU indent, version 2.2.6, has several problems, and is not recommended. |
| These bugs become pretty major when you are doing >500k lines of code. |
| If you don't believe me, take a directory and make a copy. Run pgindent |
| on the copy using GNU indent, and do a diff -r. You will see what I |
| mean. GNU indent does some things better, but mangles too. |
| |
| Notes about excluded files: |
| |
| src/include/storage/s_lock.h is excluded because it contains assembly code |
| that pgindent tends to mess up. |
| |
| src/include/snowball/libstemmer/ and src/backend/snowball/libstemmer/ |
| are excluded because those files are imported from an external project, |
| not maintained locally, and are machine-generated anyway. |
| |
| src/interfaces/ecpg/test/expected/ is excluded to avoid breaking the ecpg |
| regression tests. Several *.h files are included in regression output so |
| should not be changed. |
| |
| --------------------------------------------------------------------------- |
| |
| Obsolete typedef list creation instructions: |
| -------------------------------------------- |
| |
| To use pgindent: |
| |
| 1) Build the source tree with _debug_ symbols and all possible configure options |
| |
| 2) Install to /usr/local/pgsql |
| |
| 3) Install all contrib modules |
| |
| 4) Save a list of typedefs by running: |
| |
| src/tools/find_typedef /usr/local/pgsql/bin /usr/local/pgsql/lib > /tmp/pgtypedefs |