Ejemplo n.º 1
0
    def package(self, reference, package_id, only_manifest, package_all):
        assert(isinstance(reference, ConanFileReference))

        # Package paths
        conan_file_path = self._paths.conanfile(reference)

        if package_all:
            if only_manifest:
                packages_dir = self._paths.packages(reference)
            else:
                packages_dir = self._paths.builds(reference)
            if not os.path.exists(packages_dir):
                raise NotFoundException('%s does not exist' % str(reference))
            packages = [PackageReference(reference, packid)
                        for packid in os.listdir(packages_dir)]
        else:
            packages = [PackageReference(reference, package_id)]

        for package_reference in packages:
            package_folder = self._paths.package(package_reference)
            # Will read current conaninfo with specified options and load conanfile with them
            if not only_manifest:
                self._user_io.out.info("Packaging %s" % package_reference.package_id)
                build_folder = self._paths.build(package_reference)
                loader = self._loader(build_folder)
                conanfile = loader.load_conan(conan_file_path, self._user_io.out)
                rmdir(package_folder)
                output = ScopedOutput(str(reference), self._user_io.out)
                packager.create_package(conanfile, build_folder, package_folder, output)
            else:
                self._user_io.out.info("Creating manifest for %s" % package_reference.package_id)
                if not os.path.exists(package_folder):
                    raise NotFoundException('Package %s does not exist' % str(package_reference))
                packager.generate_manifest(package_folder)
Ejemplo n.º 2
0
    def package(self, reference, package_id, only_manifest, package_all):
        assert (isinstance(reference, ConanFileReference))

        # Package paths
        conan_file_path = self._paths.conanfile(reference)

        if package_all:
            if only_manifest:
                packages_dir = self._paths.packages(reference)
            else:
                packages_dir = self._paths.builds(reference)
            if not os.path.exists(packages_dir):
                raise NotFoundException('%s does not exist' % str(reference))
            packages = [
                PackageReference(reference, packid)
                for packid in os.listdir(packages_dir)
            ]
        else:
            packages = [PackageReference(reference, package_id)]

        for package_reference in packages:
            package_folder = self._paths.package(package_reference)
            # Will read current conaninfo with specified options and load conanfile with them
            if not only_manifest:
                self._user_io.out.info("Packaging %s" %
                                       package_reference.package_id)
                build_folder = self._paths.build(package_reference)
                # Small fix to package for short paths, without messing with the whole thing
                link = os.path.join(build_folder, ".conan_link")
                if os.path.exists(link):
                    build_folder = load(link)
                loader = self._loader(build_folder)
                conanfile = loader.load_conan(conan_file_path,
                                              self._user_io.out)
                rmdir(package_folder)
                output = ScopedOutput(str(reference), self._user_io.out)
                packager.create_package(conanfile, build_folder,
                                        package_folder, output)
            else:
                self._user_io.out.info("Creating manifest for %s" %
                                       package_reference.package_id)
                if not os.path.exists(package_folder):
                    raise NotFoundException('Package %s does not exist' %
                                            str(package_reference))
                packager.generate_manifest(package_folder)