# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-11-08 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: YAML Front Matter: description #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:1 #, no-wrap msgid "Upgrading a FreeBSD Port" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:1 #, no-wrap msgid "Chapter 11. Upgrading a Port" msgstr "" #. type: Title = #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:14 #, no-wrap msgid "Upgrading a Port" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:53 msgid "" "When a port is not the most recent version available from the authors, " "update the local working copy of [.filename]#/usr/ports#. The port might " "have already been updated to the new version." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:57 msgid "" "When working with more than a few ports, it will probably be easier to use " "Git to keep the whole ports collection up-to-date, as described in extref:" "{handbook}ports[Using the Ports Collection, ports-using]. This will have " "the added benefit of tracking all the port's dependencies." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:62 msgid "" "The next step is to see if there is an update already pending. To do this, " "there are two options. There is a searchable interface to the https://" "bugs.freebsd.org/search/[FreeBSD Problem Report (PR) or bug database]. " "Select `Ports & Packages` in the `Product` multiple select menu, and enter " "the name of the port in the `Summary` field." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:66 msgid "" "If there is no pending PR, the next step is to send an email to the port's " "maintainer, as shown by `make maintainer`. That person may already be " "working on an upgrade, or have a reason to not upgrade the port right now " "(because of, for example, stability problems of the new version), and there " "is no need to duplicate their work. Note that unmaintained ports are listed " "with a maintainer of `ports@FreeBSD.org`, which is just the general ports " "mailing list, so sending mail there probably will not help in this case." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:68 msgid "" "If the maintainer requests to do the upgrade or there is no maintainer, then " "help out FreeBSD by preparing the update! Please do this by using the " "man:diff[1] command in the base system." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:70 msgid "" "To create a suitable `diff` for a single patch, copy the file that needs " "patching to [.filename]#something.orig#, save the changes to " "[.filename]#something# and then create the patch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:74 #, no-wrap msgid "% diff -u something.orig something > something.diff\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:81 msgid "" "Otherwise, either use the `git diff` method (crossref:upgrading[git-diff, " "Using Git to Make Patches]) or copy the contents of the port to an entire " "different directory and use the result of the recursive man:diff[1] output " "of the new and old ports directories (for example, if the modified port " "directory is called [.filename]#superedit# and the original is in our tree " "as [.filename]#superedit.bak#, then save the result of `diff -ruN " "superedit.bak superedit`). Either unified or context diff is fine, but port " "committers generally prefer unified diffs. Note the use of the `-N` option-" "this is the accepted way to force diff to properly deal with the case of new " "files being added or old files being deleted. Before sending us the diff, " "please examine the output to make sure all the changes make sense. (In " "particular, make sure to first clean out the work directories with `make " "clean`)." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:85 msgid "" "If some files have been added, copied, moved, or removed, add this " "information to the problem report so that the committer picking up the patch " "will know what man:git[1] commands to run." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:90 msgid "" "To simplify common operations with patch files, use `make makepatch` as " "described in crossref:slow-porting[slow-patch,Patching]. Other tools " "exists, like [.filename]#/usr/ports/Tools/scripts/patchtool.py#. Before " "using it, please read [.filename]#/usr/ports/Tools/scripts/README.patchtool#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:94 msgid "" "If the port is unmaintained, and it is actively being used, please consider " "volunteering to become its maintainer. FreeBSD has over 4000 ports without " "maintainers, and this is an area where more volunteers are always needed. " "(For a detailed description of the responsibilities of maintainers, refer to " "the section in the extref:{developers-handbook}policies[Developer's " "Handbook, policies-maintainer].)" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:100 msgid "" "To submit the diff, use the https://bugs.freebsd.org/submit/[bug submit " "form] (product `Ports & Packages`, component `Individual Port(s)`). Always " "include the category with the port name, followed by colon, and brief " "description of the issue. Examples: `_category/portname_: _add FOO " "option_`; `_category/portname_: _Update to X.Y_`. Please mention any added " "or deleted files in the message, as they have to be explicitly specified to " "man:git[1] when doing a commit. Do not compress or encode the diff." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:103 msgid "" "Before submitting the bug, review the extref:{problem-reports}[Writing the " "problem report, pr-writing] section in the Problem Reports article. It " "contains far more information about how to write useful problem reports." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:109 msgid "" "If the upgrade is motivated by security concerns or a serious fault in the " "currently committed port, please notify the {portmgr} to request immediate " "rebuilding and redistribution of the port's package. Unsuspecting users of " "`pkg` will otherwise continue to install the old version via `pkg install` " "for several weeks." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:116 msgid "" "Please use man:diff[1] or `git diff` to create updates to existing ports. " "Other formats include the whole file and make it impossible to see just what " "has changed. When diffs are not included, the entire update might be " "ignored." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:119 msgid "" "Now that all of that is done, read about how to keep up-to-date in " "crossref:keeping-up[keeping-up,Keeping Up]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:121 #, no-wrap msgid "Using Git to Make Patches" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:130 msgid "" "When possible, please submit a man:git[1] patch or diff. They are easier to " "handle than diffs between \"new and old\" directories. It is easier to see " "what has changed, and to update the diff if something was modified in the " "Ports Collection since the work on it began, or if the committer asks for " "something to be fixed. Also, a patch generated with man:git-format-patch[1] " "or man:git-diff[1] can be easily applied with man:git-am[1] or man:git-" "apply[1] and will save some time for the committer. Finally, the git patch " "generated by man:git-format-patch[1] includes the author information and " "commit messages. These will be recorded in the log of the repository and " "this is the recommended way to submit the changes." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:135 #, no-wrap msgid "" "% git clone https://git.FreeBSD.org/ports.git ~/my_wrkdir <.> <.>\n" "% cd ~/my_wrkdir\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:138 msgid "" "This can be anywhere, of course. Building ports is not limited to within " "[.filename]#/usr/ports/#." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:140 msgid "" "https://git.FreeBSD.org/[git.FreeBSD.org] is the FreeBSD public Git server. " "See extref:{handbook}mirrors[FreeBSD Git Repository URL Table, git-url-" "table] for more information." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:143 msgid "" "While in the port directory, make any changes that are needed. If adding, " "moving, or removing a file, use `git` to track these changes:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:149 #, no-wrap msgid "" "% git add new_file\n" "% git mv old_name new_name\n" "% git rm deleted_file\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:152 msgid "" "Make sure to check the port using the checklist in crossref:quick-" "porting[porting-testing,Testing the Port] and crossref:quick-porting[porting-" "portlint,Checking the Port with `portlint`]." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:154 msgid "Also, update the checksum reference in distinfo with `make makesum`." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:158 msgid "" "Before making the patch, fetch the latest repository and rebase the changes " "on top of it. Watch and follow the output carefully. If any of the files " "failed to rebase, it means that the upstream files changed while local " "changes happened in the same file, and the conflicts need to be resolved " "manually." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:163 #, no-wrap msgid "" "% git fetch origin main\n" "% git rebase origin/main\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:166 msgid "Check the changes staged for the patch:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:171 #, no-wrap msgid "" "% git status\n" "% git diff --staged\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:174 msgid "The last step is to make an unified diff or patch of the changes:" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:176 msgid "To generate a patch with man:git-format-patch[1]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:181 #, no-wrap msgid "" "% git checkout -b my_branch\n" "% git commit\n" "% git format-patch main\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:187 msgid "" "This will generate a patch named like `0001-foo.patch`. This is the " "preferred way as it would include author identity, and it is also easier " "when making a series of changes that are not meant to be squashed together." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:189 msgid "Alternatively, to generate an unified diff with man:git-diff[1]:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:192 #, no-wrap msgid "% git diff --staged > ../`make -VPKGNAME`.diff\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:195 msgid "" "This will generate a diff named like `foo-1.2.3.diff`. Where `foo` is " "replaced with the first line of the commit message, i.e., the subject of the " "commit message." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:197 msgid "" "After patch has been created, switch to the main branch for starting other " "developments." msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:200 #, no-wrap msgid "% git checkout main\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:203 msgid "" "Once the patch is accepted and merged, delete the local development branch " "if desired:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:206 #, no-wrap msgid "% git branch -D my_branch\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:213 msgid "" "If files have been added, moved, or removed, include the man:git[1] `add`, " "`mv`, and `rm` commands that were used. `git mv` must be run before the " "patch can be applied. `git add` or `git rm` must be run after the patch is " "applied." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:216 msgid "" "Send the patch following the extref:{problem-reports}[problem report " "submission guidelines, pr-writing]." msgstr "" #. type: Title == #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:218 #, no-wrap msgid "UPDATING and MOVED" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:221 #, no-wrap msgid "/usr/ports/UPDATING" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:225 msgid "" "If upgrading the port requires special steps like changing configuration " "files or running a specific program, it must be documented in this file. " "The format of an entry in this file is:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:231 #, no-wrap msgid "" "YYYYMMDD:\n" " AFFECTS: users of portcategory/portname\n" " AUTHOR: the name \n" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:233 #, no-wrap msgid " Special instructions\n" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:240 msgid "" "When including exact portmaster, portupgrade, and/or pkg instructions, " "please make sure to get the shell escaping right. For example, do _not_ use:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:244 #, no-wrap msgid "# pkg delete -g -f docbook-xml* docbook-sk* docbook[2345]??-* docbook-4*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:248 msgid "" "As shown, the command will only work with bourne shells. Instead, use the " "form shown below, which will work with both bourne shell and c-shell:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:252 #, no-wrap msgid "# pkg delete -g -f docbook-xml\\* docbook-sk\\* docbook\\[2345\\]\\?\\?-\\* docbook-4\\*\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:260 msgid "" "It is recommended that the AFFECTS line contains a glob matching all the " "ports affected by the entry so that automated tools can parse it as easily " "as possible. If an update concerns all the existing BIND 9 versions the " "`AFFECTS` content must be `users of dns/bind9*`, it must _not_ be `users of " "BIND 9`" msgstr "" #. type: Title === #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:263 #, no-wrap msgid "/usr/ports/MOVED" msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:269 msgid "" "This file is used to list moved or removed ports. Each line in the file is " "made up of the name of the port, where the port was moved, when, and why. " "If the port was removed, the section detailing where it was moved can be " "left blank. Each section must be separated by the `|` (pipe) character, " "like so:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:273 #, no-wrap msgid "old name|new name (blank for deleted)|date of move|reason\n" msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:277 msgid "" "The date must be entered in the form `YYYY-MM-DD`. New entries are added to " "the end of the list to keep it in chronological order, with the oldest entry " "at the top of the list." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:279 msgid "" "If a port was removed but has since been restored, delete the line in this " "file that states that it was removed." msgstr "" #. type: Plain text #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:281 msgid "" "If a port was renamed and then renamed back to its original name, add a new " "one with the intermediate name to the old name, and remove the old entry as " "to not create a loop." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:285 msgid "Any changes must be validated with `Tools/scripts/MOVEDlint.awk`." msgstr "" #. type: delimited block = 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:287 msgid "If using a ports directory other than [.filename]#/usr/ports#, use:" msgstr "" #. type: delimited block . 4 #: documentation/content/en/books/porters-handbook/upgrading/_index.adoc:292 #, no-wrap msgid "" "% cd /home/user/ports\n" "% env PORTSDIR=$PWD Tools/scripts/MOVEDlint.awk\n" msgstr ""