Exemple #1
0
    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)
Exemple #3
0
    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))
Exemple #4
0
    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
Exemple #5
0
    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"])
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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")
Exemple #9
0
 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")
Exemple #10
0
    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',
            ])
Exemple #11
0
 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)