Date: Mon, 25 Sep 2017 23:38:06 -0700 From: Russell Haley <russ.haley@gmail.com> To: koobs@freebsd.org Cc: freebsd-ports@freebsd.org, doc@freebsd.org Subject: Re: Porters Handbook section 4.4 Message-ID: <CABx9NuTUmeSU8yYkiYpR2vGYkhTV_MiHuNJYqZvLwJ9Q97B8Zg@mail.gmail.com> In-Reply-To: <7b2f2464-5c35-e24a-2047-838c1a9e96a3@FreeBSD.org> References: <CABx9NuSC=tVieJ=dk6%2BFucvfEfNGHCRMuHcy%2BNxo9QW%2BtS8-gA@mail.gmail.com> <8a3e663a-d94f-0ef7-bbc7-8ebaa111f6dd@FreeBSD.org> <CABx9NuS6ie6fVwMh68wpRmRE6MsuGDfKQgLdVVZaeL_HJrKVOg@mail.gmail.com> <7b2f2464-5c35-e24a-2047-838c1a9e96a3@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 25, 2017 at 11:21 PM, Kubilay Kocak <koobs@freebsd.org> wrote: > On 9/26/17 2:53 PM, Russell Haley wrote: >> On Sun, Sep 24, 2017 at 10:02 PM, Kubilay Kocak <koobs@freebsd.org> wrote: >>> On 9/25/17 2:08 PM, Russell Haley wrote: >>>> Hi, >>>> >>>> Section 4.3 of the porters handbook talks about making modifications >>>> to a private copy of a tarball and recording the steps. >>>> >>>> Section 4.4 talks about changing directories into the affected ports >>>> dir and running make makepatch to generate patch files. >>>> >>>> I am unsure how the makepatch target is supposed to find my private >>>> directory. Since I was confused, I created patches, added them to the >>>> port, ran make, then ran make makepatch and the system re-generated >>>> new "makepatch" patches. >>> >>> Quite a number of new users have raised the same question on IRC. >>> >>>> So, my question is thus: >>>> >>>> To me, section 4.4 seems vague about where changes should be made, >>>> which is compounded by the information in section 4.3. Can the >>>> makepatch target ask for and find a private directory, or should the >>>> handbook be clarified to state that the changes should be made to the >>>> 'work' folder? If the later is true, I assume there is some proper >>>> workflow to keep changes from being destroyed while testing? >>> >>> The handbook section needs to be updated to be less ambiguous with >>> regard to where things should be done. >>> >>> I'd be happy to provide a docs committer with verbiage if they can help >>> with formatting/commit. >> Hi, >> >> If you provide the verbiage, I'll attempt a patch. :) >> >> Russ >> >>>> If there is a section in the handbook clarifying this, please just say >>>> so and I will go find it. >>>> >>>> Thanks! >>>> Russ >>> >>> ./koobs > > In section: > > 4.4. Patching > > - Add new section (at/numbered 4.4.2) > - Name: Automatic Patch Generation > - Renumber sections (4.4.2 -> 4.4.3) > > Text: > > The ports framework provides a {{{makepatch}} target, which when run, > automatically creates correctly named and formatted patch files in the > correct location. The general process is as follows: > > % cd <port directory> > % make patch > > Note: In the general case, {{{make patch}} is used (not just {{{make > extract}}} to extract the DISTFILES), because ports that contain > existing patches need to have the patches applied so that they are also > generated (regenerated) in the last step. > > ``` > % cd work/<directory> (WRKSRC) > ``` > > At this point, make the source changes in WRKSRC: > > ``` > % cp <file> <file>.orig > % edit <file> > ``` > > Repeat the above steps for each file at any location within WRKSRC that > needs a patch file created. > > Go back to the main port directory: > > ``` > % cd <port directory> > ``` > > Finally, run the {{{makepatch}}} target > > ``` > % make makepatch > ``` > > The makepatch target recursively searches WRKSRC for <file>/<file>.orig > pairs within WRKSRC, and creates a patch file in PATCHDIR from each pair > (using diff). > > NOTE: Any pre-existing patches in PATCHDIR that are *not* regenerated > during the above process are placed in a backup location in WRKDIR. This > backup location is deleted on {{{make clean}}}. This may occur when not > using {{{make patch}}} to extract the sources, because existing patches > are or were not applied, or if there are existing patch files that make > edits to multiple files in a single patch file, which will now be in > separate patch files after makepatch regeneration. Inspect and review > the patch files in PATCHDIR to ensure they have been created as expected. > > == Other == > > - Patch files are stored in PATCHDIR, usually files/, from where they > will be automatically applied > + Patch files are stored in PATCHDIR, by default `files/` in the port > directory, which are automatically applied in the 'patch' stage Thanks! I'll play with this on the weekend. Russ
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABx9NuTUmeSU8yYkiYpR2vGYkhTV_MiHuNJYqZvLwJ9Q97B8Zg>