Do we need to export OSVERSION?

看板DFBSD_kernel作者時間21年前 (2005/04/21 03:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
Hi Matt, Running into a problems with OSVERSION and the semantics of .EXPORT: Variables set in the command line and MAKEFLAGS are readonly. Nothing in the makefiles are able to modified thier values. (POSIX) This is compatible with .EXPORT: o if variable does not exist create it and export it to the enviornment, as empty string. o if variable exists, export it to the enviornment with its value. o if variable that is exported is set after being exported, export its new value. o if variable is from command line or MAKEFLAGS do net change is value, or modify the enviornment. Emit a warning. All of this works fine execpt that in /usr/ports/Mk/bsd.port.mk and /usr/ports/Mk/bsd.port.subdir.mk they use MAKEFLAGS to pass OSVERSION. :-P # These won't change, so we can pass them through the environment .MAKEFLAGS: \ ARCH="${ARCH:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ OPSYS="${OPSYS:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ OSREL="${OSREL:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ OSVERSION="${OSVERSION:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ PORTOBJFORMAT="${PORTOBJFORMAT:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ SYSTEMVERSION="${SYSTEMVERSION:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" In our /usr/share/mk/* files we use .makeenv (.EXPORT:) to put OSVERSION into the enviornment. So of course warnings start popping up line mushrooms. :-( I have a few solutions: 1. hack make(1) to special case OSVERSION variable (worst) 2. change the semantics of .EXPORT: to allow changes to command line variables. 3. some how convince the port maintainers to stop passing OSVERSION through MAKEFLAGS. 4. change /usr/share/mk/bsd.port.mk and others to not export OSVERSION. I think #4 is the easiest and would not break things, but I am not sure it would not break things. Why did we use .makeenv for OSVERSION? Max
文章代碼(AID): #12PgRu00 (DFBSD_kernel)
文章代碼(AID): #12PgRu00 (DFBSD_kernel)