Skip to contentSkip to conversation

Fix 'htmldocs' and friends with O=

PATCH In review Tom Rini 3 participants 4 messages Oct 4, 2004 – Oct 16, 2004

Subsystems (2)
lore
Share & tools
lore

Tom Rini

author
#0 lore raw

PATCH 1/1 Fix 'htmldocs' and friends with O=

Hello. The following patch fixes up 'htmldocs' and related to work when trees are being built with O=. I fixed it all up by passing the srctree as an env-var to docproc (and thus what it calls) and then pull that out when needed.

Documentation/DocBook/Makefile +5 -2
@@ -58,14 +58,14 @@ MAKEMAN   = $(PERL) $(srctree)/scripts/m
 # The following rules are used to generate the .sgml documentation
 # required to generate the final targets. (ps, pdf, html).
 quiet_cmd_docproc = DOCPROC $@
-      cmd_docproc = $(DOCPROC) doc $< >$@
+      cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@
 define rule_docproc
 	set -e;								\
         $(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))';) 	\
         $(cmd_$(1)); 							\
         ( 								\
           echo 'cmd_$@ := $(cmd_$(1))'; 				\
-          echo $@: `$(DOCPROC) depend $<`; 				\
+          echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; 		\
         ) > $(dir $@).$(notdir $@).cmd
 endef
 
@@ -129,6 +129,9 @@ quiet_cmd_db2html = DB2HTML $@
 # Rule to generate man files - output is placed in the man subdirectory
 
 %.9:	%.sgml
+ifneq ($(KBUILD_SRC),)
+	$(Q)mkdir -p $(objtree)/Documentation/DocBook/man
+endif
 	$(SPLITMAN) $< $(objtree)/Documentation/DocBook/man "$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)"
 	$(MAKEMAN) convert $(objtree)/Documentation/DocBook/man $<
 
scripts/kernel-doc +1 -1
@@ -1531,7 +1531,7 @@ sub process_state3_type($$) { 
 }
 
 sub process_file($) {
-    my ($file) = @_;
+    my ($file) = "$ENV{'SRCTREE'}@_";
     my $identifier;
     my $func;
     my $initial_section_counter = $section_counter;
scripts/basic/docproc.c +15 -4
@@ -79,6 +79,7 @@ void exec_kernel_doc(char **svec)
 {
 	pid_t pid;
 	int ret;
+	char real_filename[PATH_MAX + 1];
 	/* Make sure output generated so far are flushed */
 	fflush(stdout);
 	switch(pid=fork()) {
@@ -86,8 +87,13 @@ void exec_kernel_doc(char **svec)
 			perror("fork");
 			exit(1);
 		case  0:
-			execvp(KERNELDOCPATH KERNELDOC, svec);
-			perror("exec " KERNELDOCPATH KERNELDOC);
+			memset(real_filename, 0, sizeof(real_filename));
+			strncat(real_filename, getenv("SRCTREE"), PATH_MAX);
+			strncat(real_filename, KERNELDOCPATH KERNELDOC,
+					PATH_MAX - strlen(real_filename));
+			execvp(real_filename, svec);
+			fprintf(stderr, "exec ");
+			perror(real_filename);
 			exit(1);
 		default:
 			waitpid(pid, &ret ,0);
@@ -160,12 +166,17 @@ void find_export_symbols(char * filename
 	struct symfile *sym;
 	char line[MAXLINESZ];
 	if (filename_exist(filename) == NULL) {
+		char real_filename[PATH_MAX + 1];
+		memset(real_filename, 0, sizeof(real_filename));
+		strncat(real_filename, getenv("SRCTREE"), PATH_MAX);
+		strncat(real_filename, filename,
+				PATH_MAX - strlen(real_filename));
 		sym = add_new_file(filename);
-		fp = fopen(filename, "r");
+		fp = fopen(real_filename, "r");
 		if (fp == NULL)
 		{
 			fprintf(stderr, "docproc: ");
-			perror(filename);
+			perror(real_filename);
 		}
 		while(fgets(line, MAXLINESZ, fp)) {
 			char *p;
Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/
#1 lore raw

Salut,

scripts/kernel-doc sub process_state3_type($$) { · line 1537

Quoted 11 lines · Tom Rini
scripts/kernel-doc +1 -1
@@ -1531,7 +1531,7 @@ sub process_state3_type($$) { 
 }
 
 sub process_file($) {
-    my ($file) = @_;
+    my ($file) = "$ENV{'SRCTREE'}@_";
     my $identifier;
     my $func;
     my $initial_section_counter = $section_counter;

From performance/memory footprint standpoint it might be better to use the dot operator here for concatenation.

Tonnerre

author
#2 lore raw
Quoted 8 lines · Tonnerre

Salut,

Quoted 5 lines · Tom Rini
scripts/kernel-doc +0 -0
@@ -1531,7 +1531,7 @@ sub process_state3_type($$) { 
 }
 
Quoted 9 lines

scripts/kernel-doc sub process_state3_type($$) { · line 1537

Quoted 6 lines
scripts/kernel-doc +1 -1
 sub process_file($) {
-    my ($file) = @_;
+    my ($file) = "$ENV{'SRCTREE'}@_";
     my $identifier;
     my $func;
     my $initial_section_counter = $section_counter;

From performance/memory footprint standpoint it might be better to use the dot operator here for concatenation.

I'm not a perl person, so if this makes sense to you Sam (or Andrew, if you've taken this...) please update. Thanks.

Signature · 2 lines
Tom Rini
http://gate.crashing.org/~trini/
#3 lore raw
In reply to Tonnerre
Quoted 8 lines · Tonnerre

Salut,

Quoted 5 lines · Tom Rini
scripts/kernel-doc +0 -0
@@ -1531,7 +1531,7 @@ sub process_state3_type($$) { 
 }
 
Quoted 9 lines

scripts/kernel-doc sub process_state3_type($$) { · line 1537

Quoted 6 lines
scripts/kernel-doc +1 -1
 sub process_file($) {
-    my ($file) = @_;
+    my ($file) = "$ENV{'SRCTREE'}@_";
     my $identifier;
     my $func;
     my $initial_section_counter = $section_counter;

From performance/memory footprint standpoint it might be better to use the dot operator here for concatenation.

For this usage I prefer readability for us who are not familiar with perl. For me a '.' is used as thousand separator and end of line. No usage for concatenation seems intuitive.
So I let it be as-is.

Sam