-
-
Notifications
You must be signed in to change notification settings - Fork 14.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The package contains some files only necessary for linking other software against PgSQL’s libraries. Those files include compiler flags that reference `dev` outputs of other libraries, unnecessarily increasing the runtime closure. Let’s move those files to a `dev` output, reducing the runtime closure of `out`. We also need to clear out some paths hardcoded into the libs to avoid a dependency cycle between the `dev` and `out` outputs. This includes the path to PGXS files for the `libpgcommon` and `postgres` server (used e.g. by `SELECT pg_config()` query); we restore the path explicitly for `pg_config` program. The `out` output will be the root of the graph. This further reduces the closure size of out from 236.5M to 235.5M.
- Loading branch information
Showing
4 changed files
with
103 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
70 changes: 70 additions & 0 deletions
70
pkgs/servers/sql/postgresql/patches/hardcode-pg_config-paths.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
diff --git a/src/bin/pg_config/pg_config.c b/src/bin/pg_config/pg_config.c | ||
index 62b97af..e5b71e5 100644 | ||
--- a/src/bin/pg_config/pg_config.c | ||
+++ b/src/bin/pg_config/pg_config.c | ||
@@ -112,6 +112,11 @@ advice(void) | ||
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); | ||
} | ||
|
||
+static char* | ||
+get_config_val(ConfigData configdata) { | ||
+ return strcmp(configdata.name, "PGXS") == 0 ? "@dev@/lib/pgxs/src/makefiles/pgxs.mk" : configdata.setting; | ||
+} | ||
+ | ||
static void | ||
show_item(const char *configname, | ||
ConfigData *configdata, | ||
@@ -122,7 +127,7 @@ show_item(const char *configname, | ||
for (i = 0; i < configdata_len; i++) | ||
{ | ||
if (strcmp(configname, configdata[i].name) == 0) | ||
- printf("%s\n", configdata[i].setting); | ||
+ printf("%s\n", get_config_val(configdata[i])); | ||
} | ||
} | ||
|
||
@@ -160,7 +165,7 @@ main(int argc, char **argv) | ||
if (argc < 2) | ||
{ | ||
for (i = 0; i < configdata_len; i++) | ||
- printf("%s = %s\n", configdata[i].name, configdata[i].setting); | ||
+ printf("%s = %s\n", configdata[i].name, get_config_val(configdata[i])); | ||
exit(0); | ||
} | ||
|
||
diff --git a/src/common/config_info.c b/src/common/config_info.c | ||
index aa643b6..3750c14 100644 | ||
--- a/src/common/config_info.c | ||
+++ b/src/common/config_info.c | ||
@@ -42,11 +42,7 @@ get_configdata(const char *my_exec_path, size_t *configdata_len) | ||
configdata = (ConfigData *) palloc(*configdata_len * sizeof(ConfigData)); | ||
|
||
configdata[i].name = pstrdup("BINDIR"); | ||
- strlcpy(path, my_exec_path, sizeof(path)); | ||
- lastsep = strrchr(path, '/'); | ||
- if (lastsep) | ||
- *lastsep = '\0'; | ||
- cleanup_path(path); | ||
+ strlcpy(path, "@out@/bin", sizeof(path)); | ||
configdata[i].setting = pstrdup(path); | ||
i++; | ||
|
||
@@ -105,8 +101,7 @@ get_configdata(const char *my_exec_path, size_t *configdata_len) | ||
i++; | ||
|
||
configdata[i].name = pstrdup("SHAREDIR"); | ||
- get_share_path(my_exec_path, path); | ||
- cleanup_path(path); | ||
+ strlcpy(path, "@out@/share", sizeof(path)); | ||
configdata[i].setting = pstrdup(path); | ||
i++; | ||
|
||
@@ -117,7 +112,7 @@ get_configdata(const char *my_exec_path, size_t *configdata_len) | ||
i++; | ||
|
||
configdata[i].name = pstrdup("PGXS"); | ||
- get_pkglib_path(my_exec_path, path); | ||
+ strlcpy(path, "/dev/null", sizeof(path)); | ||
strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path)); | ||
cleanup_path(path); | ||
configdata[i].setting = pstrdup(path); |
14 changes: 0 additions & 14 deletions
14
pkgs/servers/sql/postgresql/patches/hardcode-pgxs-path.patch
This file was deleted.
Oops, something went wrong.
17 changes: 17 additions & 0 deletions
17
pkgs/servers/sql/postgresql/patches/prevent-output-cycle.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
diff --git a/src/port/Makefile b/src/port/Makefile | ||
index bfe1feb..1f9f0d3 100644 | ||
--- a/src/port/Makefile | ||
+++ b/src/port/Makefile | ||
@@ -152,9 +152,9 @@ pg_config_paths.h: $(top_builddir)/src/Makefile.global | ||
echo "#define PGBINDIR \"$(bindir)\"" >$@ | ||
echo "#define PGSHAREDIR \"$(datadir)\"" >>$@ | ||
echo "#define SYSCONFDIR \"$(sysconfdir)\"" >>$@ | ||
- echo "#define INCLUDEDIR \"$(includedir)\"" >>$@ | ||
- echo "#define PKGINCLUDEDIR \"$(pkgincludedir)\"" >>$@ | ||
- echo "#define INCLUDEDIRSERVER \"$(includedir_server)\"" >>$@ | ||
+ echo "#define INCLUDEDIR \"/dev/null/include\"" >>$@ | ||
+ echo "#define PKGINCLUDEDIR \"/dev/null/include\"" >>$@ | ||
+ echo "#define INCLUDEDIRSERVER \"/dev/null/include/server\"" >>$@ | ||
echo "#define LIBDIR \"$(libdir)\"" >>$@ | ||
echo "#define PKGLIBDIR \"$(pkglibdir)\"" >>$@ | ||
echo "#define LOCALEDIR \"$(localedir)\"" >>$@ |