1include ../upgradeable_versions.mk 2 3EXTENSION = postgis_tiger_geocoder 4EXTVERSION = @POSTGIS_LIB_VERSION@ 5MINORVERSION = 2011.@POSTGIS_MAJOR_VERSION@.@POSTGIS_MINOR_VERSION@ 6GREP = @GREP@ 7PERL = @PERL@ 8 9MICRO_NUMBER = $(shell echo $(EXTVERSION) | \ 10 $(PERL) -pe 's/\d.\d.(\d+)[a-zA-Z]*\d*/$1/' 11 12PREREL_NUMBER = $(shell echo $(EXTVERSION) | \ 13 $(PERL) -pe 's/\d\.\d\.(.*)/\1/' | \ 14 $(GREP) "[a-zA-Z]" | \ 15 $(PERL) -pe 's/\d+[a-zA-Z]+(\d+)/\1/' 16 17MICRO_PREV = $(shell if test "$(MICRO_NUMBER)x" != "x"; then expr $(MICRO_NUMBER) - 1; fi) 18PREREL_PREV = $(shell if test "$(PREREL_NUMBER)x" != "x"; then expr $(PREREL_NUMBER) - 1; fi) 19 20PREREL_PREFIX = $(shell echo $(EXTVERSION) | \ 21 $(PERL) -pe 's/\d\.\d\.(.*)/\1/' | \ 22 $(GREP) "[a-zA-Z]" | \ 23 $(PERL) -pe 's/(\d+[a-zA-Z]+)\d*/\1/' 24 25DATA_built = \ 26 $(EXTENSION).control \ 27 sql/$(EXTENSION)--$(EXTVERSION).sql \ 28 sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql \ 29 $(NULL) 30 31REGRESS = test-normalize_address test-upgrade 32REGRESS_OPTS = --load-extension=fuzzystrmatch --load-extension=postgis --load-extension=$(EXTENSION) 33 34PG_CONFIG = @PG_CONFIG@ 35 36SQL_BITS = $(wildcard sql_bits/*.sql) 37EXTRA_CLEAN += sql/*.sql ${SQL_BITS} 38 39#test address standardizer if also built 40ifeq (@ADDRESS_STANDARDIZER@,address_standardizer) 41 REGRESS += test-pagc_normalize_address 42 REGRESS_OPTS += --load-extension=address_standardizer 43endif 44 45all: sql/$(EXTENSION)--$(EXTVERSION).sql sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql sql/$(EXTENSION)--ANY--$(EXTVERSION).sql sql/test-normalize_address.sql sql/test-pagc_normalize_address.sql expected/test-normalize_address.out expected/test-pagc_normalize_address.out sql/test-upgrade.sql expected/test-upgrade.out 46 47 48expected: 49 mkdir -p $@ 50 51sql: 52 mkdir -p $@ 53 54sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql | sql 55 cp $< $@ 56 57expected/test-normalize_address.out: sql_bits/test_tuples_only_unaligned.sql.in ../../extras/tiger_geocoder/regress/normalize_address_regress | expected 58 cat $^ > $@ 59 60expected/test-pagc_normalize_address.out: sql_bits/test_tuples_only_unaligned.sql.in ../../extras/tiger_geocoder/regress/pagc_normalize_address_regress | expected 61 cat $^ > $@ 62 63## adding \t .. to force output to be the same as what get in regular regress in tiger folder 64sql/test-normalize_address.sql: sql_bits/test_tuples_only_unaligned.sql.in ../../extras/tiger_geocoder/regress/normalize_address_regress.sql | sql 65 cat $^ > $@ 66 67sql/test-upgrade.sql: | sql 68 echo 'ALTER EXTENSION ${EXTENSION} UPDATE TO "$(EXTVERSION)next"' > $@ 69 70%.control: %.control.in Makefile 71 cat $< \ 72 | sed -e 's|@EXTVERSION@|$(EXTVERSION)|g' \ 73 > $@ 74 75expected/test-upgrade.out: sql/test-upgrade.sql | expected 76 cp $< $@ 77 78sql/test-pagc_normalize_address.sql: sql_bits/test_tuples_only_unaligned.sql.in ../../extras/tiger_geocoder/regress/pagc_normalize_address_regress.sql | sql 79 cat $^ > $@ 80 81sql/$(EXTENSION).sql: sql_bits/tiger_geocoder.sql sql_bits/mark_editable_objects.sql.in sql_bits/tiger_geocoder_comments.sql | sql 82 cat $^ > $@ 83 84sql/$(EXTENSION)--ANY--$(EXTVERSION).sql: ../postgis_extension_helper.sql sql_bits/remove_from_extension.sql.in sql/tiger_geocoder_upgrade_minor.sql sql_bits/mark_editable_objects.sql.in sql_bits/tiger_geocoder_comments.sql | sql 85 cat $^ > $@ 86 echo "SELECT postgis_extension_drop_if_exists('${EXTENSION}', 'DROP SCHEMA tiger_data');" >> $@ 87 cat ../postgis_extension_helper_uninstall.sql >> $@ 88 89sql/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql: sql/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql | sql 90 cp $< $@ 91 92#strip BEGIN/COMMIT since these are not allowed in extensions 93#strip CREATE SCHEMA since we force extension 94# to create schema by setting schema to tiger_geocoder in control 95#also remove tiger_data from extension if it is part of it 96sql_bits/tiger_geocoder_minor.sql.in: ../../extras/tiger_geocoder/utility/set_search_path.sql \ 97 sql_bits/upgrade_before.sql.in \ 98 ../../extras/tiger_geocoder/geocode_settings.sql \ 99 ../../extras/tiger_geocoder/tiger_loader_2017.sql \ 100 ../../extras/tiger_geocoder/utility/utmzone.sql \ 101 ../../extras/tiger_geocoder/utility/cull_null.sql \ 102 ../../extras/tiger_geocoder/utility/nullable_levenshtein.sql \ 103 ../../extras/tiger_geocoder/utility/levenshtein_ignore_case.sql \ 104 ../../extras/tiger_geocoder/normalize/end_soundex.sql \ 105 ../../extras/tiger_geocoder/normalize/count_words.sql \ 106 ../../extras/tiger_geocoder/normalize/state_extract.sql \ 107 ../../extras/tiger_geocoder/normalize/get_last_words.sql \ 108 ../../extras/tiger_geocoder/normalize/location_extract_countysub_exact.sql \ 109 ../../extras/tiger_geocoder/normalize/location_extract_countysub_fuzzy.sql \ 110 ../../extras/tiger_geocoder/normalize/location_extract_place_exact.sql \ 111 ../../extras/tiger_geocoder/normalize/location_extract_place_fuzzy.sql \ 112 ../../extras/tiger_geocoder/normalize/location_extract.sql \ 113 ../../extras/tiger_geocoder/normalize/normalize_address.sql \ 114 ../../extras/tiger_geocoder/normalize/pprint_addy.sql \ 115 ../../extras/tiger_geocoder/pagc_normalize/pagc_tables.sql \ 116 ../../extras/tiger_geocoder/pagc_normalize/pagc_normalize_address.sql \ 117 ../../extras/tiger_geocoder/geocode/other_helper_functions.sql \ 118 ../../extras/tiger_geocoder/geocode/rate_attributes.sql \ 119 ../../extras/tiger_geocoder/geocode/includes_address.sql \ 120 ../../extras/tiger_geocoder/geocode/interpolate_from_address.sql \ 121 ../../extras/tiger_geocoder/geocode/geocode_address.sql \ 122 ../../extras/tiger_geocoder/geocode/geocode_location.sql \ 123 ../../extras/tiger_geocoder/geocode/geocode_intersection.sql \ 124 ../../extras/tiger_geocoder/geocode/geocode.sql \ 125 ../../extras/tiger_geocoder/geocode/reverse_geocode.sql \ 126 ../../extras/tiger_geocoder/geocode/census_tracts_functions.sql 127 mkdir -p sql_bits 128 cat $^ > $@ 129 130#also remove tiger_data from extension if it is part of it so data gets backed up 131sql_bits/tiger_geocoder.sql.in: sql_bits/norm_addy_create.sql.in \ 132 ../../extras/tiger_geocoder/utility/set_search_path.sql \ 133 ../../extras/tiger_geocoder/geocode_settings.sql \ 134 ../../extras/tiger_geocoder/tables/lookup_tables_2011.sql \ 135 ../../extras/tiger_geocoder/tiger_loader_2017.sql \ 136 ../../extras/tiger_geocoder/utility/set_search_path.sql \ 137 ../../extras/tiger_geocoder/utility/utmzone.sql \ 138 ../../extras/tiger_geocoder/utility/cull_null.sql \ 139 ../../extras/tiger_geocoder/utility/nullable_levenshtein.sql \ 140 ../../extras/tiger_geocoder/utility/levenshtein_ignore_case.sql \ 141 ../../extras/tiger_geocoder/normalize/end_soundex.sql \ 142 ../../extras/tiger_geocoder/normalize/count_words.sql \ 143 ../../extras/tiger_geocoder/normalize/state_extract.sql \ 144 ../../extras/tiger_geocoder/normalize/get_last_words.sql \ 145 ../../extras/tiger_geocoder/normalize/location_extract_countysub_exact.sql \ 146 ../../extras/tiger_geocoder/normalize/location_extract_countysub_fuzzy.sql \ 147 ../../extras/tiger_geocoder/normalize/location_extract_place_exact.sql \ 148 ../../extras/tiger_geocoder/normalize/location_extract_place_fuzzy.sql \ 149 ../../extras/tiger_geocoder/normalize/location_extract.sql \ 150 ../../extras/tiger_geocoder/normalize/normalize_address.sql \ 151 ../../extras/tiger_geocoder/normalize/pprint_addy.sql \ 152 ../../extras/tiger_geocoder/pagc_normalize/pagc_tables.sql \ 153 ../../extras/tiger_geocoder/pagc_normalize/pagc_normalize_address.sql \ 154 ../../extras/tiger_geocoder/geocode/other_helper_functions.sql \ 155 ../../extras/tiger_geocoder/geocode/rate_attributes.sql \ 156 ../../extras/tiger_geocoder/geocode/includes_address.sql \ 157 ../../extras/tiger_geocoder/geocode/interpolate_from_address.sql \ 158 ../../extras/tiger_geocoder/geocode/geocode_address.sql \ 159 ../../extras/tiger_geocoder/geocode/geocode_location.sql \ 160 ../../extras/tiger_geocoder/geocode/geocode_intersection.sql \ 161 ../../extras/tiger_geocoder/geocode/geocode.sql \ 162 ../../extras/tiger_geocoder/geocode/reverse_geocode.sql \ 163 ../../extras/tiger_geocoder/geocode/census_tracts_functions.sql \ 164 ../../extras/tiger_geocoder/topology/tiger_topology_loader.sql \ 165 ../postgis_extension_helper.sql \ 166 sql_bits/add_search_path.sql 167 mkdir -p sql_bits 168 cat $^ > $@ 169 echo "SELECT postgis_extension_drop_if_exists('${EXTENSION}', 'DROP SCHEMA tiger_data');" >> $@ 170 cat ../postgis_extension_helper_uninstall.sql >> $@ 171 172sql_bits/tiger_geocoder.sql: sql_bits/tiger_geocoder.sql.in 173 mkdir -p sql_bits 174 sed -e 's/BEGIN;//g' -e 's/COMMIT;//g' -e '/^CREATE SCHEMA/d;' $< > $@ 175 $(PERL) -pe 's/BEGIN\;//g ; s/COMMIT\;//g' $< > $@ 176 177sql_bits/add_search_path.sql: sql_bits/add_search_path.sql.in 178 mkdir -p sql_bits 179 cp $< $@ 180 181../../doc/tiger_geocoder_comments.sql: 182 $(MAKE) -C ../../doc comments 183 184sql_bits/tiger_geocoder_comments.sql: ../../doc/tiger_geocoder_comments.sql 185 mkdir -p sql_bits 186 cp $< $@ 187 188#grep all lines that start with CREATE OR REPLACE FUNCTION, TRIGGER... 189#then replace CREATE OR REPLACE .. with ALTER EXTENSION..; 190#then remove default values and extra junk 191# sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql: ../../tiger_geocoder/tiger_geocoder.sql 192# sed -e '/^CREATE \(OR REPLACE\|TYPE\|TABLE\|VIEW\|CAST\)/!d;' \ 193# -e 's/OR REPLACE//g' \ 194# -e 's/CREATE\(.*\)/ALTER EXTENSION $(EXTENSION) ADD\1;/' \ 195# -e 's/DEFAULT [\.0-9a-zA-Z]\+//g' \ 196# -e 's/\(BEFORE\|WITH FUNCTION\)\(.*\)/;/' \ 197# -e 's/[ \t]+;/;/' \ 198# -e 's/(;/;/' \ 199# -e 's/\\(;/;/' \ 200# -e 's/;;/;/g' $< > $@ 201 202#hardcode for now using 203#the extensions/make_unpackaged.sql script form an install 204sql/$(EXTENSION)--unpackaged--$(EXTVERSION).sql: sql_bits/tiger_geocoder--unpackaged.sql.in | sql 205 cp $< $@ 206 207#upgrade script should have everything but table, schema, type creation/alter 208#NOTE: we assume all object definitions end in ; 209#first expression deletes all non-removable objects defined on same line 210#second deletes all non-removable defined on multiple lines 211# the end of the body of object we assume ends in ; 212#aggregates are special 213#they can be dropped but we need to remove 214#them from the extension first 215sql/tiger_geocoder_upgrade_minor.sql: sql_bits/tiger_geocoder_minor.sql.in | sql 216 sed -e '/^\(CREATE\|ALTER\) \(CAST\|TYPE\|TABLE\|SCHEMA\|DOMAIN\|TRIGGER\).*;/d' \ 217 -e '/^\(CREATE\|ALTER\) \(CAST\|TYPE\|TABLE\|SCHEMA\|DOMAIN\|TRIGGER\)/,/\;/d' \ 218 -e 's/BEGIN;//g' -e 's/COMMIT;//g' \ 219 $< > $@ 220 221EXTDIR=$(DESTDIR)$(datadir)/$(datamoduledir) 222 223install: install-upgrade-paths 224 225# The "next" lines are a cludge to allow upgrading between different 226# revisions of the same version 227install-upgrade-paths: 228 tpl='$(EXTENSION)--ANY--$(EXTVERSION).sql'; \ 229 $(INSTALL_DATA) sql/$${tpl} "$(EXTDIR)/$${tpl}"; \ 230 ln -fs "$${tpl}" $(EXTDIR)/$(EXTENSION)--$(EXTVERSION)--$(EXTVERSION)next.sql; \ 231 ln -fs "$${tpl}" $(EXTDIR)/$(EXTENSION)--$(EXTVERSION)next--$(EXTVERSION).sql; \ 232 for OLD_VERSION in $(UPGRADEABLE_VERSIONS); do \ 233 ln -fs "$${tpl}" $(EXTDIR)/$(EXTENSION)--$$OLD_VERSION--$(EXTVERSION).sql; \ 234 done 235 236uninstall: uninstall-upgrade-paths 237 238INSTALLED_UPGRADE_SCRIPTS = \ 239 $(wildcard $(EXTDIR)/*$(EXTVERSION).sql) \ 240 $(wildcard $(EXTDIR)/*$(EXTVERSION)next.sql) \ 241 $(NULL) 242 243uninstall-upgrade-paths: 244 rm -f $(INSTALLED_UPGRADE_SCRIPTS) 245 246#only extension files 247EXTRA_CLEAN += $(wildcard expected/*--*.out) 248 249distclean: clean 250 rm Makefile 251 252PGXS := $(shell $(PG_CONFIG) --pgxs) 253include $(PGXS) 254PERL=@PERL@ 255