diff --git a/src/plugins/select/bluegene/plugin/bluegene.c b/src/plugins/select/bluegene/plugin/bluegene.c
index cea7874cdbc0dae10ca466179c26f11bbb4cdcf2..807c01c4f97316fe8edd9091a25cab1644dac267 100644
--- a/src/plugins/select/bluegene/plugin/bluegene.c
+++ b/src/plugins/select/bluegene/plugin/bluegene.c
@@ -145,19 +145,6 @@ extern void fini_bg(void)
 	ba_fini();
 }
 
-extern char *give_geo(uint16_t int_geo[SYSTEM_DIMENSIONS])
-{
-	char *geo = NULL;
-	int i;
-
-	for (i=0; i<SYSTEM_DIMENSIONS; i++) {
-		if (geo)
-			xstrcat(geo, "x");
-		xstrfmtcat(geo, "%c", alpha_num[int_geo[i]]);
-	}
-	return geo;
-}
-
 /*
  * block_state_mutex should be locked before calling this function
  */
diff --git a/src/plugins/select/bluegene/plugin/bluegene.h b/src/plugins/select/bluegene/plugin/bluegene.h
index 72e7b6af77d3ece44ba6cbf8a92da028dd306986..9b21b061bcc15fe51d925bcb917f2cc1b90d0d87 100644
--- a/src/plugins/select/bluegene/plugin/bluegene.h
+++ b/src/plugins/select/bluegene/plugin/bluegene.h
@@ -132,8 +132,6 @@ extern int init_bg(void);
 /* Purge all plugin variables */
 extern void fini_bg(void);
 
-extern char *give_geo(uint16_t int_geo[SYSTEM_DIMENSIONS]);
-
 extern bool blocks_overlap(bg_record_t *rec_a, bg_record_t *rec_b);
 
 extern void bg_requeue_job(uint32_t job_id, bool wait_for_start);
diff --git a/src/plugins/select/bluegene/plugin/nodeinfo.c b/src/plugins/select/bluegene/plugin/nodeinfo.c
index 1a924196931400b1f3d821f63cb9d491c0f612b7..b5083bf75a1f404a688c6e0c21ce342680e675e2 100644
--- a/src/plugins/select/bluegene/plugin/nodeinfo.c
+++ b/src/plugins/select/bluegene/plugin/nodeinfo.c
@@ -127,6 +127,24 @@ unpack_error:
 	return SLURM_ERROR;
 }
 
+/* This is defined here so we can get it on non-bluegene systems since
+ * it is needed in pack/unpack functions, and bluegene.c isn't
+ * compiled for non-bluegene machines, and it didn't make since to
+ * compile the whole file just for this one function.
+ */
+extern char *give_geo(uint16_t int_geo[SYSTEM_DIMENSIONS])
+{
+	char *geo = NULL;
+	int i;
+
+	for (i=0; i<SYSTEM_DIMENSIONS; i++) {
+		if (geo)
+			xstrcat(geo, "x");
+		xstrfmtcat(geo, "%c", alpha_num[int_geo[i]]);
+	}
+	return geo;
+}
+
 extern int select_nodeinfo_pack(select_nodeinfo_t *nodeinfo, Buf buffer,
 				uint16_t protocol_version)
 {
diff --git a/src/plugins/select/bluegene/plugin/nodeinfo.h b/src/plugins/select/bluegene/plugin/nodeinfo.h
index e4336f05b8f39479e8969f6930120ebb2a118c0a..bcee05de17f0ac5188905f81823f6a7af05bd963 100644
--- a/src/plugins/select/bluegene/plugin/nodeinfo.h
+++ b/src/plugins/select/bluegene/plugin/nodeinfo.h
@@ -57,6 +57,8 @@ struct select_nodeinfo {
 	List subgrp_list;
 };
 
+extern char *give_geo(uint16_t int_geo[SYSTEM_DIMENSIONS]);
+
 extern int select_nodeinfo_pack(select_nodeinfo_t *nodeinfo, Buf buffer,
 				uint16_t protocol_version);