Reviewing Octave Forge packages: Difference between revisions

From Octave
Jump to navigation Jump to search
(→‎Checklist: add versions, permissions, and licence check info)
Tags: Mobile edit Mobile web edit
 
(21 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Help reviewing Octave-Forge packages ==
{{Warning | Since July 2022 Octave packages are organized by https://packages.octave.org.}}


We need help. Here is how:
The reviewing procedure in short:


# Pick a package at https://sourceforge.net/p/octave/package-releases/
# Pick a package at https://sourceforge.net/p/octave/package-releases/
# Copy the check-list below and fill it out, marking each box:
# Copy the check-list below and fill it out, marking each box:
#* <code>[x]</code> for passed
#* <code>[x]</code> for successfully passed
#* <code>[n/a]</code> for non-applicable
#* <code>[ ]</code> for not done / error (please give below the checklist a brief reason)
#* <code>[ ]</code> for skipped (because you cannot do it, missing software, etc)
#* <code>[F]</code> for fails.
# Paste your filled in check-list as a comment on the issue above
# Paste your filled in check-list as a comment on the issue above
# An [https://sourceforge.net/p/octave/_members/ Octave Forge Admin] will try to look over your review and hopefully release the package.


=== What happens next ===
== Checklist ==


An admin will try to look over your review and hopefully release the package.  More than one person can review a package, in fact that would be great.
<pre>
# Repository / Metadata


- [ ] release commit/changeset specified and present in repository
- [ ] `generate_package_html` / `make html` works without errors and warnings
- [ ] generated HTML documentation looks sane


== Checklist ==
# pkg-tool runs without errors or warnings


<pre>
- [ ] `pkg install  foo`
== Repository ==
- [ ] `pkg load      foo`
[ ] maintainer has specified a corresponding revision commit/changeset
- [ ] `pkg unload    foo`
[ ] checkout code from Sourceforge, commit/changeset is present
- [ ] `pkg uninstall foo`
- Above steps were run on Octave and OS versions:
  -  ________
  -  ________


== Compile and Install ==
# Package tests
[ ] release candidate installs on latest stable Octave release
[ ] no compiler errors or warnings
[ ] ran tests using <code>runtests /path/to/pkg</code>
[ ] ran all tests, including those in src (how??)
[ ] ran doctest on all functions (optional)
[ ] ran generate_package_html (if Makefile present try <code> make html </code>)
[ ] no makeinfo errors and warnings during HTML build
[ ] unpacked and spot-checked the generated HTML documentation


== Interaction with pkg ==
- [ ] ran `pkg test foo`
[ ] <code>pkg load foo</code> runs with errors or warnings
- [ ] ran `doctest`
[ ] <code>pkg unload foo</code> runs with errors or warnings
[ ] <code>pkg uninstall foo</code> runs with errors or warnings


[ ] Above steps were run on Octave and OS versions:
# Package files in release candidate tarball
    *  ________
    *  ________


== Package files in release candidate tarball ==
- [ ] `DESCRIPTION` version and release date updated
[ ] tested with minimum Octave version list in DESCRIPTION
- [ ] `DESCRIPTION` minimum Octave tested
[ ] reasonable dependencies listed in DESCRIPTION
- [ ] `DESCRIPTION` all dependencies are listed
[ ] NEWS file makes sense, version and date match
- [ ] `NEWS` version and date match
[ ] All functions are listed in INDEX
- [ ] `NEWS` big changes announced
[ ] check licenses (<code>licensecheck -r</code> "plus some manual checks").
- [ ] `INDEX` all (new) functions are listed
[ ] package files are readable/executable by all users (reasonably current maintainer Makefile should be doing this).
- [ ] version numbers in help text and function body (e.g., banners) updated
[ ] version number in src/configure.ac (if present) matches DESCRIPTION and tarball name.
- [ ] license specifications in help text and function body agree `licensecheck -r`
[ ] any version numbers within the help or function body (e.g., banners) matches above.
- [ ] file permissions are readable/executable by all users
- [ ] junk files are removed (hidden dot files, backup files, results of configure runs, etc.)
- [ ] (optional if present) `src/configure.ac` version updated
</pre>
</pre>


== Other info ==
== Admin tasks ==
 
# Upload release tarball to [https://sourceforge.net/projects/octave/files/Octave%20Forge%20Packages/Individual%20Package%20Releases/ Individual Package Releases]
# Update https://octave.sourceforge.io/
#* Upload new package HTML documentation to {{Path|/home/project-web/octave/htdocs/packages/foo/}} <ref>How to access the Octave Forge webspace [https://sourceforge.net/p/forge/documentation/Project%20Web%20Services/ SourceForge help].</ref>
#* Brief notes: `sftp` to look around the site: `sftp <user>@web.sourceforge.net`
#* Then `rsync -auvn --delete ...` to sync the particular package content.
# Optional: Update news feed, add entry in [https://sourceforge.net/p/octave/project-web/ci/default/tree/htdocs/news.html htdocs/news.html]
#* (currently unmaintained, after about March 2022)
 
== SourceForge Project information ==
 
* admin accounts: https://sourceforge.net/p/octave/_members
* Package repositories
** hg: https://sourceforge.net/p/octave/_list/hg
** git: https://sourceforge.net/p/octave/_list/git
* Octave Forge web site https://octave.sourceforge.io and [https://sourceforge.net/p/octave/project-web/ci/default/tree source code]
 
{{File|.htaccess|<pre>
<FilesMatch "\.svgz$">
Header set Content-Encoding gzip
</FilesMatch>
 
RewriteEngine on
 
# use PHP files in root directory
RewriteRule ^archive\.html$ /archive.php [PT]
RewriteRule ^bugs\.html$ /bugs.php [PT]
RewriteRule ^code\.html$ /code.php [PT]
RewriteRule ^developers\.html$ /developers.php [PT]
RewriteRule ^docs\.html$ /docs.php [PT]
RewriteRule ^FAQ\.html$ /FAQ.php [PT]
RewriteRule ^function_list\.html$ /function_list.php [PT]
RewriteRule ^index\.html$ /index.php [PT]
RewriteRule ^links\.html$ /links.php [PT]
RewriteRule ^NEWS\.html$ /NEWS.php [PT]
RewriteRule ^packages\.html$ /packages.php [PT]
 
# root directory of files for download
RewriteRule ^released-packages/$ https://sourceforge.net/projects/octave/files/ [R=307,L]
 
# a particular packages repository
RewriteRule ^pkg-repository/(.*)/$ https://sourceforge.net/p/octave/$1/ [R=307,L]
 
# don't rewrite paths in the following directories
RewriteRule ^templates(/|$)(.*) - [L]
RewriteRule ^pkg_icon(/|$)(.*) - [L]
RewriteRule ^java(/|$)(.*) - [L]
RewriteRule ^doxygen32(/|$)(.*) - [L]
RewriteRule ^doxygen34(/|$)(.*) - [L]
RewriteRule ^doxygen36(/|$)(.*) - [L]
RewriteRule ^doxygen38(/|$)(.*) - [L]
RewriteRule ^doxygen40(/|$)(.*) - [L]
RewriteRule ^doxygen41(/|$)(.*) - [L]
RewriteRule ^coda(/|$)(.*) - [L]
RewriteRule ^octave(/|$)(.*) - [L]
RewriteRule ^octave\.old(/|$)(.*) - [L]
RewriteRule ^old_packages(/|$)(.*) - [L]


TODO:  how does one check all functions are listed in INDEX?
# webserver of sourceforge doesn't understand END rewrite rule flag,
# so we have to check for looping instead if necessary


TODO: document how to run "all tests including those in src"  Someday this should be just "pkg test foo".
# forbid direct access to packages directory
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^packages(/|$)(.*) - [F]


TODO: would be good to provide more specific instructions for when the package as a Maintainer Makefile?  But we don't usually put the Maintainer Makefile in the .tar.gz package to do?  (At least Doctest and Symbolic don't).
# paths in all other sudirectories are rewritten to be under directory
# "packages"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+/.*) /packages/$1 [L]


=== Meta helping ===
# FIXME: Trailing slash is not appended for (non-existing, to be
# re-written) package directories at top level. This should be cured
# in a better way than with the following.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) /packages/$1/ [L]


* Feel free to edit this wiki with explanations of the check list tasks
* Please do add (reasonable) tasks to the check list


=== Common problems ===
<FilesMatch "\.(php|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header unset Expires
Header set Cache-Control "no-cache, must-revalidate"
</ifModule>
</FilesMatch>
</pre>}}


Here are some common problems that reviewers can check for
== Footnotes ==


* INDEX is missing some new functions added
<references/>
* NEWS has not been updated or is missing something big
* Version numbers or dates do not match between DESCRIPTION and NEWS
* Common makeinfo errors like "@bye seen before @end deftypefn"
* DESCRIPTION says pkg works with old Octave 4.x but it fails for me
* Obviously, compiler errors, warnings, test failures


[[Category:Octave Forge]]
[[Category:Outdated pages]]
[[Category:Packages]]

Latest revision as of 18:58, 21 February 2023

Warning icon.svg
Since July 2022 Octave packages are organized by https://packages.octave.org.

The reviewing procedure in short:

  1. Pick a package at https://sourceforge.net/p/octave/package-releases/
  2. Copy the check-list below and fill it out, marking each box:
    • [x] for successfully passed
    • [ ] for not done / error (please give below the checklist a brief reason)
  3. Paste your filled in check-list as a comment on the issue above
  4. An Octave Forge Admin will try to look over your review and hopefully release the package.

Checklist[edit]

# Repository / Metadata

- [ ] release commit/changeset specified and present in repository
- [ ] `generate_package_html` / `make html` works without errors and warnings
- [ ] generated HTML documentation looks sane

# pkg-tool runs without errors or warnings

- [ ] `pkg install   foo`
- [ ] `pkg load      foo`
- [ ] `pkg unload    foo`
- [ ] `pkg uninstall foo`
- Above steps were run on Octave and OS versions:
  -  ________
  -  ________

# Package tests

- [ ] ran `pkg test foo`
- [ ] ran `doctest` 

# Package files in release candidate tarball

- [ ] `DESCRIPTION` version and release date updated
- [ ] `DESCRIPTION` minimum Octave tested
- [ ] `DESCRIPTION` all dependencies are listed
- [ ] `NEWS` version and date match
- [ ] `NEWS` big changes announced
- [ ] `INDEX` all (new) functions are listed
- [ ] version numbers in help text and function body (e.g., banners) updated
- [ ] license specifications in help text and function body agree `licensecheck -r`
- [ ] file permissions are readable/executable by all users
- [ ] junk files are removed (hidden dot files, backup files, results of configure runs, etc.)
- [ ] (optional if present) `src/configure.ac` version updated

Admin tasks[edit]

  1. Upload release tarball to Individual Package Releases
  2. Update https://octave.sourceforge.io/
    • Upload new package HTML documentation to /home/project-web/octave/htdocs/packages/foo/ [1]
    • Brief notes: `sftp` to look around the site: `sftp <user>@web.sourceforge.net`
    • Then `rsync -auvn --delete ...` to sync the particular package content.
  3. Optional: Update news feed, add entry in htdocs/news.html
    • (currently unmaintained, after about March 2022)

SourceForge Project information[edit]

File: .htaccess
<FilesMatch "\.svgz$">
Header set Content-Encoding gzip
</FilesMatch>

RewriteEngine on

# use PHP files in root directory
RewriteRule ^archive\.html$ /archive.php [PT]
RewriteRule ^bugs\.html$ /bugs.php [PT]
RewriteRule ^code\.html$ /code.php [PT]
RewriteRule ^developers\.html$ /developers.php [PT]
RewriteRule ^docs\.html$ /docs.php [PT]
RewriteRule ^FAQ\.html$ /FAQ.php [PT]
RewriteRule ^function_list\.html$ /function_list.php [PT]
RewriteRule ^index\.html$ /index.php [PT]
RewriteRule ^links\.html$ /links.php [PT]
RewriteRule ^NEWS\.html$ /NEWS.php [PT]
RewriteRule ^packages\.html$ /packages.php [PT]

# root directory of files for download
RewriteRule ^released-packages/$ https://sourceforge.net/projects/octave/files/ [R=307,L]

# a particular packages repository
RewriteRule ^pkg-repository/(.*)/$ https://sourceforge.net/p/octave/$1/ [R=307,L]

# don't rewrite paths in the following directories
RewriteRule ^templates(/|$)(.*) - [L]
RewriteRule ^pkg_icon(/|$)(.*) - [L]
RewriteRule ^java(/|$)(.*) - [L]
RewriteRule ^doxygen32(/|$)(.*) - [L]
RewriteRule ^doxygen34(/|$)(.*) - [L]
RewriteRule ^doxygen36(/|$)(.*) - [L]
RewriteRule ^doxygen38(/|$)(.*) - [L]
RewriteRule ^doxygen40(/|$)(.*) - [L]
RewriteRule ^doxygen41(/|$)(.*) - [L]
RewriteRule ^coda(/|$)(.*) - [L]
RewriteRule ^octave(/|$)(.*) - [L]
RewriteRule ^octave\.old(/|$)(.*) - [L]
RewriteRule ^old_packages(/|$)(.*) - [L]

# webserver of sourceforge doesn't understand END rewrite rule flag,
# so we have to check for looping instead if necessary

# forbid direct access to packages directory
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^packages(/|$)(.*) - [F]

# paths in all other sudirectories are rewritten to be under directory
# "packages"
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+/.*) /packages/$1 [L]

# FIXME: Trailing slash is not appended for (non-existing, to be
# re-written) package directories at top level. This should be cured
# in a better way than with the following.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) /packages/$1/ [L]


<FilesMatch "\.(php|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header unset Expires
Header set Cache-Control "no-cache, must-revalidate"
</ifModule>
</FilesMatch>

Footnotes[edit]

  1. How to access the Octave Forge webspace SourceForge help.