Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37047132
en ru br
Репозитории ALT
S:4.6-alt3
5.1: 2.4-alt3
4.1: 2.4-alt2
4.0: 2.4-alt2
3.0: 2.4-alt1
www.altlinux.org/Changes

Другие репозитории

Группа :: Development/Tools
Пакет: ccache

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: ccache-2.4-debian-no-home.patch
Скачать


--- ccache.c
+++ ccache.c
@@ -836,6 +836,13 @@
 {
 	/* find the real compiler */
 	find_compiler(argc, argv);
+
+	/* use the real compiler if HOME is not set */
+	if (!cache_dir) {
+		cc_log("Unable to determine home directory\n");
+		cc_log("ccache is disabled\n");
+		failed();
+	}
 	
 	/* we might be disabled */
 	if (getenv("CCACHE_DISABLE")) {
@@ -895,6 +902,13 @@
 	printf("-V                      print version number\n");
 }
 
+static void check_cache_dir(void)
+{
+	if (!cache_dir) {
+		fatal("Unable to determine home directory");
+	}
+}
+
 /* the main program when not doing a compile */
 static int ccache_main(int argc, char *argv[])
 {
@@ -914,31 +928,37 @@
 			exit(0);
 			
 		case 's':
+			check_cache_dir();
 			stats_summary();
 			break;
 
 		case 'c':
+			check_cache_dir();
 			cleanup_all(cache_dir);
 			printf("Cleaned cache\n");
 			break;
 
 		case 'C':
+			check_cache_dir();
 			wipe_all(cache_dir);
 			printf("Cleared cache\n");
 			break;
 
 		case 'z':
+			check_cache_dir();
 			stats_zero();
 			printf("Statistics cleared\n");
 			break;
 
 		case 'F':
+			check_cache_dir();
 			v = atoi(optarg);
 			stats_set_limits(v, -1);
 			printf("Set cache file limit to %u\n", (unsigned)v);
 			break;
 
 		case 'M':
+			check_cache_dir();
 			v = value_units(optarg);
 			stats_set_limits(-1, v);
 			printf("Set cache size limit to %uk\n", (unsigned)v);
@@ -983,7 +1003,10 @@
 
 	cache_dir = getenv("CCACHE_DIR");
 	if (!cache_dir) {
-		x_asprintf(&cache_dir, "%s/.ccache", get_home_directory());
+		const char *home_directory = get_home_directory();
+		if (home_directory) {
+			x_asprintf(&cache_dir, "%s/.ccache", home_directory);
+		}
 	}
 
 	temp_dir = getenv("CCACHE_TEMPDIR");
@@ -1023,7 +1046,7 @@
 	}
 
 	/* make sure the cache dir exists */
-	if (create_dir(cache_dir) != 0) {
+	if (cache_dir && (create_dir(cache_dir) != 0)) {
 		fprintf(stderr,"ccache: failed to create %s (%s)\n", 
 			cache_dir, strerror(errno));
 		exit(1);
--- util.c
+++ util.c
@@ -448,7 +448,7 @@
 		}
 	}
 #endif
-	fatal("Unable to determine home directory");
+	cc_log("Unable to determine home directory");
 	return NULL;
 }
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin