Class RpmBuilder

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class RpmBuilder
    extends java.lang.Object
    implements java.lang.AutoCloseable
    Build RPM files

    This class takes care of most tasks building RPM files. The constructor only requests the require attributes. There are a few more meta information entries which can be set using the RpmBuilder.PackageInformation class and the methods setInformation(PackageInformation) and getInformation().

    In order to build an RPM file, create a new instance of the RpmBuilder class, set package information, add files by using a context created by newContext() and finally call build(). The RPM file will only be built once the build() method is called. Closing the instance of RpmBuilder will not write the RPM file, but simply clean up temporary files. Closing this instance will also not delete target RPM file.

    The implementation of this class uses the PayloadRecorder to create the payload archive, Header class for the signature and package header and the RpmWriter to finally write the RPM file.

    Signature processors

    The RPM builder uses a default set of SignatureProcessors. In order to add additional ones use the addDefaultSignatureProcessors(). It is possible to remove all already registered processors (including the default ones) using removeAllSignatureProcessors().

    Author:
    Jens Reimann
    • Constructor Detail

      • RpmBuilder

        public RpmBuilder​(java.lang.String name,
                          java.lang.String version,
                          java.lang.String release,
                          java.nio.file.Path target)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • RpmBuilder

        public RpmBuilder​(java.lang.String name,
                          RpmVersion version,
                          java.lang.String architecture,
                          java.nio.file.Path targetFile,
                          java.nio.file.OpenOption... openOptions)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • RpmBuilder

        public RpmBuilder​(java.lang.String name,
                          RpmVersion version,
                          java.lang.String architecture,
                          java.nio.file.Path targetFile,
                          BuilderOptions options)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • RpmBuilder

        public RpmBuilder​(java.lang.String name,
                          java.lang.String version,
                          java.lang.String release,
                          java.lang.String architecture,
                          java.nio.file.Path target,
                          java.nio.file.OpenOption... openOptions)
                   throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • addSignatureProcessor

        public void addSignatureProcessor​(SignatureProcessor processor)
      • removeAllSignatureProcessors

        public void removeAllSignatureProcessors()
      • addDefaultSignatureProcessors

        public void addDefaultSignatureProcessors()
      • setLeadOverrideArchitecture

        public void setLeadOverrideArchitecture​(Architecture leadOverrideArchitecture)
      • setLeadOverrideOperatingSystem

        public void setLeadOverrideOperatingSystem​(OperatingSystem leadOverrideOperatingSystem)
      • setHeaderCustomizer

        public void setHeaderCustomizer​(java.util.function.Consumer<Header<RpmTag>> headerCustomizer)
      • getFeatures

        public static java.util.List<RpmBuilder.Feature> getFeatures()
        Return the list of features supported by this builder.
        Returns:
        the list of features supported by this builder
      • getInformation

        public RpmBuilder.PackageInformation getInformation()
        Get the current package information
        Returns:
        the current package information. Never returns null.
      • setInformation

        public void setInformation​(RpmBuilder.PackageInformation information)
        Completely set the current package information
        Parameters:
        information - the new package information, may be null, in which case the package information is reset to its defaults.
      • getTargetFile

        public java.nio.file.Path getTargetFile()
      • getArchitecture

        public java.lang.String getArchitecture()
      • getName

        public java.lang.String getName()
      • build

        public void build()
                   throws java.io.IOException
        Actually build the RPM file

        Note: this method may only be called once per instance

        Throws:
        java.io.IOException - in case of any IO error
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.io.IOException
      • addRequirement

        public void addRequirement​(java.lang.String name,
                                   java.lang.String version,
                                   RpmDependencyFlags... flags)
      • addProvides

        public void addProvides​(java.lang.String name,
                                java.lang.String version,
                                RpmDependencyFlags... flags)
      • addConflicts

        public void addConflicts​(java.lang.String name,
                                 java.lang.String version,
                                 RpmDependencyFlags... flags)
      • addObsoletes

        public void addObsoletes​(java.lang.String name,
                                 java.lang.String version,
                                 RpmDependencyFlags... flags)
      • addSuggests

        public void addSuggests​(java.lang.String name,
                                java.lang.String version,
                                RpmDependencyFlags... flags)
      • addRecommends

        public void addRecommends​(java.lang.String name,
                                  java.lang.String version,
                                  RpmDependencyFlags... flags)
      • addSupplements

        public void addSupplements​(java.lang.String name,
                                   java.lang.String version,
                                   RpmDependencyFlags... flags)
      • addEnhances

        public void addEnhances​(java.lang.String name,
                                java.lang.String version,
                                RpmDependencyFlags... flags)
      • setPreInstallationScript

        public void setPreInstallationScript​(java.lang.String interpreter,
                                             java.lang.String script)
      • setPreInstallationScript

        public void setPreInstallationScript​(java.lang.String script)
      • setPostInstallationScript

        public void setPostInstallationScript​(java.lang.String interpreter,
                                              java.lang.String script)
      • setPostInstallationScript

        public void setPostInstallationScript​(java.lang.String script)
      • setPreRemoveScript

        public void setPreRemoveScript​(java.lang.String interpreter,
                                       java.lang.String script)
      • setPreRemoveScript

        public void setPreRemoveScript​(java.lang.String script)
      • setPostRemoveScript

        public void setPostRemoveScript​(java.lang.String interpreter,
                                        java.lang.String script)
      • setPostRemoveScript

        public void setPostRemoveScript​(java.lang.String script)
      • setVerifyScript

        public void setVerifyScript​(java.lang.String interpreter,
                                    java.lang.String script)
      • setVerifyScript

        public void setVerifyScript​(java.lang.String script)
      • setPreTransactionScript

        public void setPreTransactionScript​(java.lang.String interpreter,
                                            java.lang.String script)
      • setPreTransactionScript

        public void setPreTransactionScript​(java.lang.String script)
      • setPostTransactionScript

        public void setPostTransactionScript​(java.lang.String interpreter,
                                             java.lang.String script)
      • setPostTransactionScript

        public void setPostTransactionScript​(java.lang.String script)
      • getRequiredRpmVersion

        public RpmBuilder.Version getRequiredRpmVersion()
        Return the minimum required version of RPM for supporting all features of this generated RPM.
        Returns:
        After the method build() was called it returns the minimum required version of RPM. Before it will return the default version RpmBuilder.Version.V4_11.