diff -Nru relion-3.1.3/debian/changelog relion-3.1.3/debian/changelog --- relion-3.1.3/debian/changelog 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/changelog 2022-09-29 11:27:08.000000000 +0000 @@ -1,3 +1,19 @@ +relion (3.1.3-2) unstable; urgency=medium + + [ Andreas Beckmann ] + * Team upload. + * Cherry-pick upstream fixes related to cub. (Closes: #995224) + * Simplify debian/rules. + * Fix missing hardening flags. + * Build for Architecture: any. + * Standards-Version: 4.6.1. + * Fix some typos found by Lintian. + + [ Andreas Tille ] + * Enable uscan to create a sensible download name + + -- Andreas Beckmann Thu, 29 Sep 2022 13:27:08 +0200 + relion (3.1.3-1) unstable; urgency=medium * Fix watchfile to detect new versions on github @@ -23,6 +39,12 @@ relion (3.1.0-3) unstable; urgency=medium + * relion-cuda and relion-gui-cuda are now built by src:relion-cuda/contrib. + + -- Roland Fehrenbacher Thu, 01 Oct 2020 10:37:37 +0200 + +relion (3.1.0-2) unstable; urgency=medium + * New upstream version 3.1.0 * Update to Standards-Version: 4.5.0 * Rename available binary packages, since MPI support is now default. @@ -30,11 +52,13 @@ available. * Dropped librelion* packages. No shared libraries are created by relion anymore. + * Add versions with CUDA/GPU support (these are in the Debian contrib + archive area). They are named relion-cuda and relion-gui-cuda. * Moved to dep14 layout to work directly with the upstream git repo (see README.source in the source archive). * Added a simple autopkgtest - -- Roland Fehrenbacher Thu, 01 Oct 2020 10:37:37 +0200 + -- Roland Fehrenbacher Tue, 29 Sep 2020 19:01:31 +0000 relion (1.4+dfsg-4) unstable; urgency=medium diff -Nru relion-3.1.3/debian/control relion-3.1.3/debian/control --- relion-3.1.3/debian/control 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/control 2022-09-29 11:27:08.000000000 +0000 @@ -11,14 +11,14 @@ libopenmpi-dev, libtiff-dev, fluid -Standards-Version: 4.6.0 +Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/med-team/relion Vcs-Git: https://salsa.debian.org/med-team/relion.git Homepage: https://www2.mrc-lmb.cam.ac.uk/relion/index.php/Main_Page Rules-Requires-Root: no Package: relion -Architecture: amd64 i386 +Architecture: any Depends: openmpi-gcc | openmpi-bin, ${misc:Depends}, ${shlibs:Depends}, @@ -43,9 +43,9 @@ CUDA/GPU support. Package: relion-gui -Architecture: amd64 i386 -Depends: openmpi-gcc | openmpi-bin, - relion, +Architecture: any +Depends: + relion (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, Breaks: relion-bin, @@ -57,7 +57,7 @@ relion-bin+mpi, relion-bin+mpi+gui, Conflicts: relion-cuda-gui, -Description: parallel toolkit for 3D reconstructions in cryo-electron microscopy +Description: toolkit for 3D reconstructions in cryo-electron microscopy (gui apps) RELION (for REgularised LIkelihood OptimisatioN) is a stand-alone computer program for Maximum A Posteriori refinement of (multiple) 3D reconstructions or 2D class averages in cryo-electron microscopy. diff -Nru relion-3.1.3/debian/copyright relion-3.1.3/debian/copyright --- relion-3.1.3/debian/copyright 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/copyright 2022-09-29 11:27:08.000000000 +0000 @@ -9,6 +9,7 @@ Files: debian/* Copyright: 2014-2020, Q-Leap Networks GmbH + © 2022 Andreas Beckmann License: GPL-2+ Files: src/CPlot2D.cpp @@ -46,16 +47,16 @@ src/acc/cuda/cub/thread/* src/acc/cuda/cub/util* src/acc/cuda/cub/warp/* - src/gpu-utils/cub/agent/* - src/gpu-utils/cub/block/* - src/gpu-utils/cub/cub.cuh - src/gpu-utils/cub/device/* - src/gpu-utils/cub/grid/* - src/gpu-utils/cub/host/mutex.cuh - src/gpu-utils/cub/iterator/* - src/gpu-utils/cub/thread/* - src/gpu-utils/cub/util* - src/gpu-utils/cub/warp/* + src/gpu_utils/cub/agent/* + src/gpu_utils/cub/block/* + src/gpu_utils/cub/cub.cuh + src/gpu_utils/cub/device/* + src/gpu_utils/cub/grid/* + src/gpu_utils/cub/host/mutex.cuh + src/gpu_utils/cub/iterator/* + src/gpu_utils/cub/thread/* + src/gpu_utils/cub/util* + src/gpu_utils/cub/warp/* Copyright: 2011, Duane Merrill. 2011-2016, NVIDIA CORPORATION. 2011-2017, NVIDIA CORPORATION. diff -Nru relion-3.1.3/debian/patches/0001-Repair-wrong-comment-sign-pointed-out-by-Alexey-Roma.patch relion-3.1.3/debian/patches/0001-Repair-wrong-comment-sign-pointed-out-by-Alexey-Roma.patch --- relion-3.1.3/debian/patches/0001-Repair-wrong-comment-sign-pointed-out-by-Alexey-Roma.patch 1970-01-01 00:00:00.000000000 +0000 +++ relion-3.1.3/debian/patches/0001-Repair-wrong-comment-sign-pointed-out-by-Alexey-Roma.patch 2022-09-29 11:27:08.000000000 +0000 @@ -0,0 +1,25 @@ +From 554e0ed993e5ac8a3fee4be7c5cf64a62216a8c7 Mon Sep 17 00:00:00 2001 +From: Takanori Nakane +Date: Tue, 9 Nov 2021 14:52:30 +0000 +Subject: [PATCH] Repair wrong comment sign (pointed out by Alexey Romanenko) + +--- + src/acc/cuda/cuda_utils_cub.cuh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/acc/cuda/cuda_utils_cub.cuh b/src/acc/cuda/cuda_utils_cub.cuh +index 3e32fb86..cf6ede21 100644 +--- a/src/acc/cuda/cuda_utils_cub.cuh ++++ b/src/acc/cuda/cuda_utils_cub.cuh +@@ -13,7 +13,7 @@ + #undef CubLog + #endif + +-#define CUB_NS_QUALIFIER ::cub # for compatibility with CUDA 11.5 ++#define CUB_NS_QUALIFIER ::cub // for compatibility with CUDA 11.5 + #include "src/acc/cuda/cub/device/device_radix_sort.cuh" + #include "src/acc/cuda/cub/device/device_reduce.cuh" + #include "src/acc/cuda/cub/device/device_scan.cuh" +-- +2.20.1 + diff -Nru relion-3.1.3/debian/patches/series relion-3.1.3/debian/patches/series --- relion-3.1.3/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ relion-3.1.3/debian/patches/series 2022-09-29 11:27:08.000000000 +0000 @@ -0,0 +1,2 @@ +0001-Repair-wrong-comment-sign-pointed-out-by-Alexey-Roma.patch +typos.patch diff -Nru relion-3.1.3/debian/patches/typos.patch relion-3.1.3/debian/patches/typos.patch --- relion-3.1.3/debian/patches/typos.patch 1970-01-01 00:00:00.000000000 +0000 +++ relion-3.1.3/debian/patches/typos.patch 2022-09-29 11:27:08.000000000 +0000 @@ -0,0 +1,131 @@ +Author: Andreas Beckmann +Description: fix typos found by Lintian + +--- a/src/acc/cuda/custom_allocator.cuh ++++ b/src/acc/cuda/custom_allocator.cuh +@@ -301,7 +301,7 @@ private: + { + char *mangled_name = 0, *offset_begin = 0, *offset_end = 0; + +- // find parantheses and +address offset surrounding mangled name ++ // find parentheses and +address offset surrounding mangled name + for (char *p = messages[i]; *p; ++p) + { + if (*p == '(') +--- a/src/args.cpp ++++ b/src/args.cpp +@@ -412,7 +412,7 @@ void IOParser::writeUsageOneSection(int + + void IOParser::writeUsage(std::ostream &out) + { +- out << "+++ RELION: command line arguments (with defaults for optional ones between parantheses) +++"< > &untangled); + +--- a/src/autopicker.cpp ++++ b/src/autopicker.cpp +@@ -105,7 +105,7 @@ void AutoPicker::read(int argc, char **a + do_read_fom_maps = parser.checkOption("--read_fom_maps", "Skip probability calculations, re-read precalculated maps from disc"); + do_optimise_scale = !parser.checkOption("--skip_optimise_scale", "Skip the optimisation of the micrograph scale for better prime factors in the FFTs. This runs slower, but at exactly the requested resolution."); + do_only_unfinished = parser.checkOption("--only_do_unfinished", "Only autopick those micrographs for which the coordinate file does not yet exist"); +- do_gpu = parser.checkOption("--gpu", "Use GPU acceleration when availiable"); ++ do_gpu = parser.checkOption("--gpu", "Use GPU acceleration when available"); + gpu_ids = parser.getOption("--gpu", "Device ids for each MPI-thread","default"); + #ifndef CUDA + if(do_gpu) +--- a/src/gpu_utils/cuda_mem_utils.h ++++ b/src/gpu_utils/cuda_mem_utils.h +@@ -441,7 +441,7 @@ private: + { + char *mangled_name = 0, *offset_begin = 0, *offset_end = 0; + +- // find parantheses and +address offset surrounding mangled name ++ // find parentheses and +address offset surrounding mangled name + for (char *p = messages[i]; *p; ++p) + { + if (*p == '(') +--- a/src/metadata_label.h ++++ b/src/metadata_label.h +@@ -867,7 +867,7 @@ private: + EMDL::addLabel(EMDL_OPTIMISER_DO_HELICAL_REFINE, EMDL_BOOL, "rlnDoHelicalRefine", "Flag to indicate that helical refinement should be performed"); + EMDL::addLabel(EMDL_OPTIMISER_IGNORE_HELICAL_SYMMETRY, EMDL_BOOL, "rlnIgnoreHelicalSymmetry", "Flag to indicate that helical symmetry is ignored in 3D reconstruction"); + EMDL::addLabel(EMDL_OPTIMISER_FOURIER_MASK, EMDL_STRING, "rlnFourierMask", "Name of an FFTW-centred Fourier mask to be applied to the Projector for refinement."); +- EMDL::addLabel(EMDL_OPTIMISER_HELICAL_TWIST_INITIAL, EMDL_DOUBLE, "rlnHelicalTwistInitial", "The intial helical twist (rotation per subunit) in degrees before refinement"); ++ EMDL::addLabel(EMDL_OPTIMISER_HELICAL_TWIST_INITIAL, EMDL_DOUBLE, "rlnHelicalTwistInitial", "The initial helical twist (rotation per subunit) in degrees before refinement"); + EMDL::addLabel(EMDL_OPTIMISER_HELICAL_RISE_INITIAL, EMDL_DOUBLE, "rlnHelicalRiseInitial", "The initial helical rise (translation per subunit) in Angstroms before refinement"); + EMDL::addLabel(EMDL_OPTIMISER_HELICAL_Z_PERCENTAGE, EMDL_DOUBLE, "rlnHelicalCentralProportion", "Only expand this central fraction of the Z axis when imposing real-space helical symmetry"); + EMDL::addLabel(EMDL_OPTIMISER_HELICAL_NSTART, EMDL_INT, "rlnNrHelicalNStart", "The N-number for an N-start helix"); +--- a/src/ml_optimiser_mpi.cpp ++++ b/src/ml_optimiser_mpi.cpp +@@ -568,7 +568,7 @@ void MlOptimiserMpi::initialiseWorkLoad( + if (node->size <= 2) + REPORT_ERROR("MlOptimiserMpi::initialiseWorkLoad: at least 3 MPI processes are required when splitting data into random halves"); + if (node->size % 2 == 0) +- REPORT_ERROR("MlOptimiserMpi::initialiseWorkLoad: the number of MPI processes must be an odd number when gold-standard seperation is applied."); ++ REPORT_ERROR("MlOptimiserMpi::initialiseWorkLoad: the number of MPI processes must be an odd number when gold-standard separation is applied."); + } + else if (node->size <= 1) + REPORT_ERROR("MlOptimiserMpi::initialiseWorkLoad: at least 2 MPI processes are required, otherwise use the sequential program"); +--- a/src/particle_subtractor.cpp ++++ b/src/particle_subtractor.cpp +@@ -293,7 +293,7 @@ void ParticleSubtractor::revert() + } + + obsModel.save(MD, fn_out + "original.star"); +- std::cout << "Writen " << (fn_out + "original.star") << std::endl; ++ std::cout << "Written " << (fn_out + "original.star") << std::endl; + } + + void ParticleSubtractor::run() +--- a/src/pipeline_jobs.cpp ++++ b/src/pipeline_jobs.cpp +@@ -1092,7 +1092,7 @@ Note that for importing coordinate files + Also note that micrographs, movies and coordinate files all need to be in the same directory (with the same rootnames, e.g.mic1 in the example above) in order to be imported correctly. 3D masks or references can be imported from anywhere. \n \n \ + Note that movie-particle STAR files cannot be imported from a previous version of RELION, as the way movies are handled has changed in RELION-2.0. \n \n \ + For the import of a particle, 2D references or micrograph STAR file or of a 3D reference or mask, only a single file can be imported at a time. \n \n \ +-Note that due to a bug in a fltk library, you cannot import from directories that contain a substring of the current directory, e.g. dont important from /home/betagal if your current directory is called /home/betagal_r2. In this case, just change one of the directory names."); ++Note that due to a bug in a fltk library, you cannot import from directories that contain a substring of the current directory, e.g. don't import from /home/betagal if your current directory is called /home/betagal_r2. In this case, just change one of the directory names."); + + joboptions["node_type"] = JobOption("Node type:", job_nodetype_options, 0, "Select the type of Node this is."); + joboptions["optics_group_particles"] = JobOption("Rename optics group for particles:", (std::string)"", "Only for the import of a particles STAR file with a single, or no, optics groups defined: rename the optics group for the imported particles to this string."); +@@ -1300,7 +1300,7 @@ void RelionJob::initialiseMotioncorrJob( + joboptions["patch_x"] = JobOption("Number of patches X:", std::string("1"), "Number of patches (in X and Y direction) to apply motioncor2."); + joboptions["patch_y"] = JobOption("Number of patches Y:", std::string("1"), "Number of patches (in X and Y direction) to apply motioncor2."); + joboptions["group_frames"] = JobOption("Group frames:", 1, 1, 5, 1, "Average together this many frames before calculating the beam-induced shifts."); +- joboptions["bin_factor"] = JobOption("Binning factor:", 1, 1, 2, 1, "Bin the micrographs this much by a windowing operation in the Fourier Tranform. Binning at this level is hard to un-do later on, but may be useful to down-scale super-resolution images. Float-values may be used. Do make sure though that the resulting micrograph size is even."); ++ joboptions["bin_factor"] = JobOption("Binning factor:", 1, 1, 2, 1, "Bin the micrographs this much by a windowing operation in the Fourier Transform. Binning at this level is hard to un-do later on, but may be useful to down-scale super-resolution images. Float-values may be used. Do make sure though that the resulting micrograph size is even."); + joboptions["fn_gain_ref"] = JobOption("Gain-reference image:", "", "*.mrc", ".", "Location of the gain-reference file to be applied to the input micrographs. Leave this empty if the movies are already gain-corrected."); + joboptions["gain_rot"] = JobOption("Gain rotation:", job_gain_rotation_options, 0, "Rotate the gain reference by this number times 90 degrees clockwise in relion_display. This is the same as -RotGain in MotionCor2. Note that MotionCor2 uses a different convention for rotation so it says 'counter-clockwise'. Valid values are 0, 1, 2 and 3."); + joboptions["gain_flip"] = JobOption("Gain flip:", job_gain_flip_options, 0, "Flip the gain reference after rotation. This is the same as -FlipGain in MotionCor2. 0 means do nothing, 1 means flip Y (upside down) and 2 means flip X (left to right)."); +@@ -4587,7 +4587,7 @@ void RelionJob::initialisePostprocessJob + + joboptions["do_auto_bfac"] = JobOption("Estimate B-factor automatically?", true, "If set to Yes, then the program will use the automated procedure described by Rosenthal and Henderson (2003, JMB) to estimate an overall B-factor for your map, and sharpen it accordingly. \ + Note that your map must extend well beyond the lowest resolution included in the procedure below, which should not be set to resolutions much lower than 10 Angstroms. "); +- joboptions["autob_lowres"] = JobOption("Lowest resolution for auto-B fit (A):", 10, 8, 15, 0.5, "This is the lowest frequency (in Angstroms) that will be included in the linear fit of the Guinier plot as described in Rosenthal and Henderson (2003, JMB). Dont use values much lower or higher than 10 Angstroms. If your map does not extend beyond 10 Angstroms, then instead of the automated procedure use your own B-factor."); ++ joboptions["autob_lowres"] = JobOption("Lowest resolution for auto-B fit (A):", 10, 8, 15, 0.5, "This is the lowest frequency (in Angstroms) that will be included in the linear fit of the Guinier plot as described in Rosenthal and Henderson (2003, JMB). Don't use values much lower or higher than 10 Angstroms. If your map does not extend beyond 10 Angstroms, then instead of the automated procedure use your own B-factor."); + joboptions["do_adhoc_bfac"] = JobOption("Use your own B-factor?", false, "Instead of using the automated B-factor estimation, provide your own value. Use negative values for sharpening the map. \ + This option is useful if your map does not extend beyond the 10A needed for the automated procedure, or when the automated procedure does not give a suitable value (e.g. in more disordered parts of the map)."); + joboptions["adhoc_bfac"] = JobOption("User-provided B-factor:", -1000, -2000, 0, -50, "Use negative values for sharpening. Be careful: if you over-sharpen your map, you may end up interpreting noise for signal!"); +--- a/src/tiff_converter.cpp ++++ b/src/tiff_converter.cpp +@@ -318,7 +318,7 @@ void TIFFConverter::initialise(int _rank + total_ranks = _total_ranks; + + if (do_estimate && total_ranks != 1) +- REPORT_ERROR("MPI parallelisation is not avaialble for --estimate_gain"); ++ REPORT_ERROR("MPI parallelisation is not available for --estimate_gain"); + + if (fn_out[fn_out.size() - 1] != '/') + fn_out += "/"; diff -Nru relion-3.1.3/debian/relion-gui.lintian-overrides relion-3.1.3/debian/relion-gui.lintian-overrides --- relion-3.1.3/debian/relion-gui.lintian-overrides 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/relion-gui.lintian-overrides 2022-09-29 11:27:08.000000000 +0000 @@ -1 +1 @@ -relion-gui: no-manual-page +no-manual-page diff -Nru relion-3.1.3/debian/relion-gui.triggers relion-3.1.3/debian/relion-gui.triggers --- relion-3.1.3/debian/relion-gui.triggers 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/relion-gui.triggers 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -activate-noawait ldconfig diff -Nru relion-3.1.3/debian/relion.lintian-overrides relion-3.1.3/debian/relion.lintian-overrides --- relion-3.1.3/debian/relion.lintian-overrides 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/relion.lintian-overrides 2022-09-29 11:27:08.000000000 +0000 @@ -1 +1 @@ -relion: no-manual-page +no-manual-page diff -Nru relion-3.1.3/debian/relion.triggers relion-3.1.3/debian/relion.triggers --- relion-3.1.3/debian/relion.triggers 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/relion.triggers 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -activate-noawait ldconfig diff -Nru relion-3.1.3/debian/rules relion-3.1.3/debian/rules --- relion-3.1.3/debian/rules 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/rules 2022-09-29 11:27:08.000000000 +0000 @@ -20,6 +20,9 @@ MPICXX := mpicxx.openmpi endif +CFLAGS += $(CPPFLAGS) +CXXFLAGS += $(CPPFLAGS) + CONFIGURE_COMMON := cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON "-GUnix Makefiles" \ -DCMAKE_VERBOSE_MAKEFILE=ON \ @@ -30,27 +33,21 @@ dh $@ override_dh_auto_configure: - -override_dh_auto_build: mkdir $(CURDIR)/build cd $(CURDIR)/build; \ - CC=gcc CXX=g++ $(CONFIGURE_COMMON) -DGUI=ON -DCUDA=OFF $(CURDIR);\ - make $(MAKE_-J); DESTDIR=$(CURDIR)/debian/tmp/cli make install + CC=gcc CXX=g++ $(CONFIGURE_COMMON) -DGUI=ON -DCUDA=OFF $(CURDIR) + +override_dh_auto_build: + $(MAKE) $(MAKE_-J) -C build + +override_dh_auto_install: + $(MAKE) -C build install DESTDIR=$(CURDIR)/debian/tmp/cli mkdir -p $(CURDIR)/debian/tmp/gui/usr/bin rm $(CURDIR)/debian/tmp/cli/usr/bin/*.csh # Useless ... - for prog in relion relion_display relion_maingui relion_manualpick; do \ + set -e; for prog in relion relion_display relion_manualpick; do \ mv $(CURDIR)/debian/tmp/cli/usr/bin/$$prog \ $(CURDIR)/debian/tmp/gui/usr/bin; done -override_dh_prep: - # We don't want debian/tmp to be removed again ... - dh_prep -X debian/tmp - -override_dh_auto_install: - -override_dh_install-arch: - dh_install -a - override_dh_clean: dh_clean -rm -rf build diff -Nru relion-3.1.3/debian/salsa-ci.yml relion-3.1.3/debian/salsa-ci.yml --- relion-3.1.3/debian/salsa-ci.yml 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/salsa-ci.yml 2022-09-29 11:27:08.000000000 +0000 @@ -2,3 +2,6 @@ include: - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml + +variables: + DEB_BUILD_OPTIONS: "noautodbgsym" diff -Nru relion-3.1.3/debian/watch relion-3.1.3/debian/watch --- relion-3.1.3/debian/watch 2021-10-19 07:16:04.000000000 +0000 +++ relion-3.1.3/debian/watch 2022-09-29 11:27:08.000000000 +0000 @@ -1,3 +1,4 @@ version=4 -https://github.com/3dem/relion/releases .*/(\d[\d.]+)@ARCHIVE_EXT@ +opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \ + https://github.com/3dem/relion/releases .*/(\d[\d.]+)@ARCHIVE_EXT@