[PATCH] Display warning when flagging VCS packages
VCS packages should not be flagged out-of-date when the package version does not match the most recent commit. Implements FS#62733. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org> --- web/html/css/aurweb.css | 4 ++++ web/html/pkgflag.php | 5 +++++ web/lib/pkgbasefuncs.inc.php | 21 +++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/web/html/css/aurweb.css b/web/html/css/aurweb.css index ef37bf5..81bf9ab 100644 --- a/web/html/css/aurweb.css +++ b/web/html/css/aurweb.css @@ -195,3 +195,7 @@ label.confirmation, .comments .more { font-weight: normal; } + +.error { + color: red; +} diff --git a/web/html/pkgflag.php b/web/html/pkgflag.php index 61346b9..2fba6bd 100644 --- a/web/html/pkgflag.php +++ b/web/html/pkgflag.php @@ -50,6 +50,11 @@ if (has_credential(CRED_PKGBASE_FLAG)): ?> <li><?= htmlspecialchars($pkgname) ?></li> <?php endforeach; ?> </ul> + <?php if (pkgbase_is_vcs($base_id)): ?> + <p class="error"> + This is a VCS package. Please do <strong>not</strong> flag this package out-of-date when the package version in the AUR does not match the most recent commit. + </p> + <?php endif; ?> <p> <?= __('Please do %snot%s use this form to report bugs. Use the package comments instead.', '<strong>', '</strong>'); ?> diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index 1df21a2..a492589 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -367,6 +367,27 @@ function pkgbase_get_pkgnames($base_id) { return $result->fetchAll(PDO::FETCH_COLUMN, 0); } +/** + * Determine whether a package base is (or contains a) VCS package + * + * @param int $base_id The ID of the package base + * + * @return bool True if the package base is/contains a VCS package + */ +function pkgbase_is_vcs($base_id) { + $suffixes = array("-cvs", "-svn", "-git", "-hg", "-bzr", "-darcs"); + $haystack = pkgbase_get_pkgnames($base_id); + array_push($haystack, pkgbase_name_from_id($base_id)); + foreach ($haystack as $pkgname) { + foreach ($suffixes as $suffix) { + if (substr_compare($pkgname, $suffix, -strlen($suffix)) === 0) { + return true; + } + } + } + return false; +} + /** * Delete all packages belonging to a package base * -- 2.21.0
Le 25/05/2019 à 19:07, Lukas Fleischer a écrit :
+ This is a VCS package. Please do <strong>not</strong> flag this package out-of-date when the package version in the AUR does not match the most recent commit.
Maybe we should also hint when it is appropriated to do so? E.g. missing new dependency or old one to be removed, moved upstream…
+/** + * Determine whether a package base is (or contains a) VCS package + * + * @param int $base_id The ID of the package base + * + * @return bool True if the package base is/contains a VCS package + */ +function pkgbase_is_vcs($base_id) { + $suffixes = array("-cvs", "-svn", "-git", "-hg", "-bzr", "-darcs");
What about false positives and missing items like -nightly’s? I think it would be a good time to implement FS#56602, auto-seed the value depending on your above list and let maintainers override this. Regards, Bruno
On Sat, 25 May 2019 at 13:46:45, Bruno Pagani wrote:
Le 25/05/2019 =C3=A0 19:07, Lukas Fleischer a =C3=A9crit=C2=A0:
+ This is a VCS package. Please do <strong>not</strong> fla= g this package out-of-date when the package version in the AUR does not mat= ch the most recent commit. =20 Maybe we should also hint when it is appropriated to do so? E.g. missing new dependency or old one to be removed, moved upstream=E2=80=A6
There already is a message stating that package flagging should not be used to report such bugs. Is it not obvious/precise enough?
=20
+/** + * Determine whether a package base is (or contains a) VCS package + * + * @param int $base_id The ID of the package base + * + * @return bool True if the package base is/contains a VCS package + */ +function pkgbase_is_vcs($base_id) { + $suffixes =3D array("-cvs", "-svn", "-git", "-hg", "-bzr", "-darc= s"); =20 What about false positives and missing items like -nightly=E2=80=99s? I t= hink it would be a good time to implement FS#56602, auto-seed the value depending on your above list and let maintainers override this.
Yes, there are false positives and false negatives. That is why we only display a warning and do not automatically disable the feature for VCS packages. Read the comments in FS#62733 for details.
VCS packages should not be flagged out-of-date when the package version does not match the most recent commit. Implements FS#62733. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org> --- web/html/css/aurweb.css | 4 ++++ web/html/pkgflag.php | 9 +++++++++ web/lib/pkgbasefuncs.inc.php | 21 +++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/web/html/css/aurweb.css b/web/html/css/aurweb.css index ef37bf5..81bf9ab 100644 --- a/web/html/css/aurweb.css +++ b/web/html/css/aurweb.css @@ -195,3 +195,7 @@ label.confirmation, .comments .more { font-weight: normal; } + +.error { + color: red; +} diff --git a/web/html/pkgflag.php b/web/html/pkgflag.php index 61346b9..9cc6d7a 100644 --- a/web/html/pkgflag.php +++ b/web/html/pkgflag.php @@ -50,6 +50,15 @@ if (has_credential(CRED_PKGBASE_FLAG)): ?> <li><?= htmlspecialchars($pkgname) ?></li> <?php endforeach; ?> </ul> + <?php if (pkgbase_is_vcs($base_id)): ?> + <p class="error"> + This seems to be a VCS package. Please do <strong>not</strong> + flag it out-of-date if the package version in the AUR does not + match the most recent commit. Flagging this package should only + be done if the sources moved or changes in the PKGBUILD are + required because of recent upstream changes. + </p> + <?php endif; ?> <p> <?= __('Please do %snot%s use this form to report bugs. Use the package comments instead.', '<strong>', '</strong>'); ?> diff --git a/web/lib/pkgbasefuncs.inc.php b/web/lib/pkgbasefuncs.inc.php index 1df21a2..a492589 100644 --- a/web/lib/pkgbasefuncs.inc.php +++ b/web/lib/pkgbasefuncs.inc.php @@ -367,6 +367,27 @@ function pkgbase_get_pkgnames($base_id) { return $result->fetchAll(PDO::FETCH_COLUMN, 0); } +/** + * Determine whether a package base is (or contains a) VCS package + * + * @param int $base_id The ID of the package base + * + * @return bool True if the package base is/contains a VCS package + */ +function pkgbase_is_vcs($base_id) { + $suffixes = array("-cvs", "-svn", "-git", "-hg", "-bzr", "-darcs"); + $haystack = pkgbase_get_pkgnames($base_id); + array_push($haystack, pkgbase_name_from_id($base_id)); + foreach ($haystack as $pkgname) { + foreach ($suffixes as $suffix) { + if (substr_compare($pkgname, $suffix, -strlen($suffix)) === 0) { + return true; + } + } + } + return false; +} + /** * Delete all packages belonging to a package base * -- 2.21.0
participants (2)
-
Bruno Pagani
-
Lukas Fleischer