def get_recipe_sources(self, conan_reference, export_folder, export_sources_folder, remote): t1 = time.time() def filter_function(urls): file_url = urls.get(EXPORT_SOURCES_TGZ_NAME) if file_url: urls = {EXPORT_SOURCES_TGZ_NAME: file_url} else: return None return urls urls = self._call_remote(remote, "get_recipe_urls", conan_reference) urls = filter_function(urls) if not urls: return conan_reference zipped_files = self._call_remote(remote, "download_files_to_folder", urls, export_folder) duration = time.time() - t1 log_recipe_sources_download(conan_reference, duration, remote, zipped_files) if not zipped_files: mkdir(export_sources_folder) # create the folder even if no source files return unzip_and_get_files(zipped_files, export_sources_folder, EXPORT_SOURCES_TGZ_NAME) c_src_path = os.path.join(export_sources_folder, EXPORT_SOURCES_DIR_OLD) if os.path.exists(c_src_path): merge_directories(c_src_path, export_sources_folder) rmdir(c_src_path) touch_folder(export_sources_folder)
def get_recipe_sources(self, ref, export_folder, export_sources_folder, remote): assert ref.revision, "get_recipe_sources requires RREV" t1 = time.time() zipped_files = self._call_remote(remote, "get_recipe_sources", ref, export_folder) if not zipped_files: mkdir(export_sources_folder ) # create the folder even if no source files return duration = time.time() - t1 log_recipe_sources_download(ref, duration, remote.name, zipped_files) unzip_and_get_files(zipped_files, export_sources_folder, EXPORT_SOURCES_TGZ_NAME, output=self._output) # REMOVE in Conan 2.0 c_src_path = os.path.join(export_sources_folder, EXPORT_SOURCES_DIR_OLD) if os.path.exists(c_src_path): merge_directories(c_src_path, export_sources_folder) rmdir(c_src_path) touch_folder(export_sources_folder)
def get_recipe_sources(self, conan_reference, export_folder, export_sources_folder, remote): t1 = time.time() def filter_function(urls): file_url = urls.get(EXPORT_SOURCES_TGZ_NAME) if file_url: urls = {EXPORT_SOURCES_TGZ_NAME: file_url} else: return None return urls zipped_files = self._call_remote(remote, "get_recipe", conan_reference, export_folder, filter_function) duration = time.time() - t1 log_recipe_sources_download(conan_reference, duration, remote, zipped_files) if not zipped_files: mkdir(export_sources_folder) # create the folder even if no source files return unzip_and_get_files(zipped_files, export_sources_folder, EXPORT_SOURCES_TGZ_NAME) c_src_path = os.path.join(export_sources_folder, ".c_src") if os.path.exists(c_src_path): merge_directories(c_src_path, export_sources_folder) rmdir(c_src_path) for dirname, _, filenames in os.walk(export_sources_folder): for fname in filenames: touch(os.path.join(dirname, fname))
def get_recipe_sources(self, conan_reference, export_folder, export_sources_folder, remote): t1 = time.time() zipped_files = self._call_remote(remote, "get_recipe_sources", conan_reference, export_folder) if not zipped_files: mkdir(export_sources_folder ) # create the folder even if no source files return conan_reference duration = time.time() - t1 log_recipe_sources_download(conan_reference, duration, remote.name, zipped_files) unzip_and_get_files(zipped_files, export_sources_folder, EXPORT_SOURCES_TGZ_NAME, output=self._output) c_src_path = os.path.join(export_sources_folder, EXPORT_SOURCES_DIR_OLD) if os.path.exists(c_src_path): merge_directories(c_src_path, export_sources_folder) rmdir(c_src_path) touch_folder(export_sources_folder) return conan_reference
def excluded_dirs_test(self): files = [ "file.txt", "subdir/file2.txt", "subdir/file3.txt", "other_dir/somefile.txt", "other_dir/somefile2.txt" ] self._save(self.source, files, "fromsrc") files_dest = ["file.txt", "subdir2/file2.txt"] self._save(self.dest, files_dest, "fromdest") # Excluded one file from other_dir and the whole subdir merge_directories(self.source, self.dest, excluded=["other_dir/somefile.txt", "subdir"]) self._assert_equals( self._get_paths(self.dest), ["file.txt", "subdir2/file2.txt", "other_dir/somefile2.txt"]) # Excluded one from dest (no sense) and one from origin merge_directories( self.source, self.dest, excluded=["subdir2/file2.txt", "subdir", "other_dir/somefile.txt"]) self._assert_equals( self._get_paths(self.dest), ["file.txt", "subdir2/file2.txt", "other_dir/somefile2.txt"])
def test_empty_dest_merge(self): files = ["file.txt", "subdir/file2.txt"] self._save(self.source, files) merge_directories(self.source, self.dest) self._assert_equals(self._get_paths(self.dest), files)
def test_non_empty_dest_merge(self): files = ["file.txt", "subdir/file2.txt"] self._save(self.source, files, "fromsrc") files_dest = ["file.txt", "subdir2/file2.txt"] self._save(self.dest, files_dest, "fromdest") merge_directories(self.source, self.dest) self._assert_equals(self._get_paths(self.dest), files + files_dest) # File from src overrides file from dest self.assertEquals(load(join(self.dest, "file.txt")), "fromsrc")
def parent_directory_test(self): files_dest = ["file.txt", "subdir2/file2.txt"] self._save(self.dest, files_dest, "fromdest") self.source = join(self.dest, "source_folder") files = ["file.txt", "subdir/file2.txt"] self._save(self.source, files, "fromsrc") merge_directories(self.source, self.dest) shutil.rmtree(self.source) self._assert_equals(self._get_paths(self.dest), files + files_dest) self.assertEquals(load(join(self.dest, "file.txt")), "fromsrc") self.assertEquals(load(join(self.dest, "subdir2/file2.txt")), "fromdest") self.assertEquals(load(join(self.dest, "subdir/file2.txt")), "fromsrc")
def nested_directories_test(self): self.dest = join(self.source, "destination_dir") files_dest = ["file.txt", "subdir2/file2.txt"] self._save(self.dest, files_dest, "fromdest") mkdir(join(self.dest, "empty_folder", "subempty_folder")) files = ["file.txt", "subdir/file2.txt"] self._save(self.source, files, "fromsrc") merge_directories(self.source, self.dest) self._assert_equals( self._get_paths(self.dest), files + files_dest + [ 'empty_folder/subempty_folder', ])
def same_directory_test(self): files = ["file.txt", "subdir/file2.txt"] self._save(self.source, files, "fromsrc") merge_directories(self.source, self.source) self._assert_equals(self._get_paths(self.source), files)