@@ -90,65 +90,6 @@ proc validateVersion*(ver: string) =
9090 " Version may only consist of numbers and the '.' character " &
9191 " but found '" & c & " '." , false )
9292
93- proc validatePackageStructure (pkgInfo: PackageInfo , options: Options ) =
94- # # This ensures that a package's source code does not leak into
95- # # another package's namespace.
96- # # https://github.com/nim-lang/nimble/issues/144
97- let
98- realDir = pkgInfo.getRealDir ()
99- correctDir = pkgInfo.basicInfo.name
100-
101- proc onFile (path: string ) =
102- # Remove the root to leave only the package subdirectories.
103- # ~/package-0.1/package/utils.nim -> package/utils.nim.
104- var trailPath = changeRoot (realDir, " " , path)
105- if trailPath.startsWith (DirSep ): trailPath = trailPath[1 .. ^ 1 ]
106- let (dir, file, ext) = trailPath.splitFile
107- # We're only interested in nim files, because only they can pollute our
108- # namespace.
109- if ext != (ExtSep & " nim" ):
110- return
111-
112- if dir.len == 0 :
113- if file != pkgInfo.basicInfo.name:
114- # A source file was found in the top level of srcDir that doesn't share
115- # a name with the package.
116- let
117- msg = (" Package '$1' has an incorrect structure. " &
118- " The top level of the package source directory " &
119- " should contain at most one module, " &
120- " named '$2', but a file named '$3' was found. This " &
121- " will be an error in the future." ) %
122- [pkgInfo.basicInfo.name, pkgInfo.basicInfo.name & ext, file & ext]
123- hint = (" If this is the primary source file in the package, " &
124- " rename it to '$1'. If it's a source file required by " &
125- " the main module, or if it is one of several " &
126- " modules exposed by '$4', then move it into a '$2' subdirectory. " &
127- " If it's a test file or otherwise not required " &
128- " to build the package '$1', prevent its installation " &
129- " by adding `skipFiles = @[\" $3\" ]` to the .nimble file. See " &
130- " https://github.com/nim-lang/nimble#libraries for more info." ) %
131- [pkgInfo.basicInfo.name & ext, correctDir & DirSep , file & ext, pkgInfo.basicInfo.name]
132- raise validationError (msg, true , hint, true )
133- else :
134- assert (not pkgInfo.isMinimal)
135- # On Windows `pkgInfo.bin` has a .exe extension, so we need to normalize.
136- if not (dir.startsWith (correctDir & DirSep ) or dir == correctDir):
137- let
138- msg = (" Package '$2' has an incorrect structure. " &
139- " It should contain a single directory hierarchy " &
140- " for source files, named '$3', but file '$1' " &
141- " is in a directory named '$4' instead. " &
142- " This will be an error in the future." ) %
143- [file & ext, pkgInfo.basicInfo.name, correctDir, dir]
144- hint = (" If '$1' contains source files for building '$2', rename it " &
145- " to '$3'. Otherwise, prevent its installation " &
146- " by adding `skipDirs = @[\" $1\" ]` to the .nimble file." ) %
147- [dir, pkgInfo.basicInfo.name, correctDir]
148- raise validationError (msg, true , hint, true )
149-
150- iterInstallFiles (realDir, pkgInfo, options, onFile)
151-
15293proc validatePackageInfo (pkgInfo: PackageInfo , options: Options ) =
15394 let path = pkgInfo.myPath
15495 if pkgInfo.basicInfo.name == " " :
@@ -176,10 +117,6 @@ proc validatePackageInfo(pkgInfo: PackageInfo, options: Options) =
176117 if pkgInfo.backend notin [" c" , " cc" , " objc" , " cpp" , " js" ]:
177118 raise validationError (" '" & pkgInfo.backend &
178119 " ' is an invalid backend." , false )
179- if options.action.typ in {actionInstall, actionBuild, actionDevelop, actionCompile, actionCheck}:
180- # nim is used for building the project, thus no need to validate its structure.
181- if not pkgInfo.basicInfo.name.isNim:
182- validatePackageStructure (pkginfo, options)
183120
184121proc nimScriptHint * (pkgInfo: PackageInfo ) =
185122 if not pkgInfo.isNimScript:
0 commit comments