Recently in TI's DVSDK write drive module is old by the Linux kernel SVN version number problem, such as "2.6.37-svn41", "2.6.37-svn51" and so on, SVN version of the change, from the above the code kernel version of the change will be changed once, This results in the original driver module KO files must be copied to the new lib/modules/2.6.37-svn51, very cumbersome and not conducive to the release.
So find a blog post "Remove SVN management kernel compiled version of automatic change", see my reprint.
According to its claim will arch/arm/configs/omap3_evm_defconfig inside
Config_localversion_auto=y
Modified to #config_localversion_auto=y
Or #config_localversion_auto is not set
After cleaning the. config file in the kernel source root directory, re-make omap3_evm_defconfig or make Linux_config,config_localversion_auto dependencies are not set but are still built.
It was later found to be set to:
Config_localversion_auto=n
To make it default, the principle of the study and then fill.
But after doing so, compiling the Linux kernel and booting the kernel version into a "2.6.37+" with a "+" number
This will need to modify the Scripts/setlocalversion script, first look at a piece of code[Plain] View plain Copy scm_version () { local short & nbsp; short=false cd "$srctree" if test -e .scmversion; then cat .scmversion return fi if test "$" = "--short"; then short=true fi # Check for git and a git repo. if test -d .git && head= ' Git rev-parse --verify --short head 2>/dev/null ';then # if we are at a tagged commit (like "V2.6.30-RC6"), we ignore # it, because this version is defined in the top level makefile. if [ -z "' Git describe --exact-match 2>/dev/null '" ]; then # if only the short version is requested, don ' t bother # running further git commands if $short; then echo "+" return fi ...... fi ...... fi } Here's an echo. + ", the" 2.6.37+ "inside the" + "in the end is this statement produced it. started to see some blogs say modify here, comment out "echo" + "", but did not work. Need to analyze, look at the 3rd F statement, meaning that there are at least. Git directory exists to execute this later, but we use SVN, No. git, so here's echo "+" is not executed. Let's look at a piece of code: [Plain] View Plain Copy # scm version string if not at a tagged commit if test "$CONFIG _localversion_auto" = "y"; then # full scm version string res= "$res $ (scm_version) " else # append a plus sign if the repository is not in a clean # annotated or signed tagged state (as git describe only # looks at signed or annotated tags - git tag -a/-s) and # LOCALVERSION= is not specified if test "${localversion+set}" != "Set"; then scm=$ (scm_version --short) res= "$res ${scm:++}" fi fi Here if that means that if the Config_localversion_auto is defined, the SVN version number will be added, we are already set to N, so the else part is executed, scm=$ (scm_version--short) Although the--short passed to Scm_version makes short=true, but. Git does not exist, so scm_version does not print "+", and then see res= "$res ${scm:++}" What does this mean? Scm:++ is actually saying that if the SCM is undefined, the default value "+" is used to mean: + indicates the meaning of using the default value, while the second "+" represents the default value. So the second "+" can be removed. That is, change to res= "$res ${scm:+}", you can print without "+" version number "2.6.37".
Hope to help the peers who have the same problem.