Bug 658754

Summary: Review Request: cubrid - a very fast and reliable open source SQL database server
Product: [Fedora] Fedora Reporter: Esen Sagynov <kadishmal>
Component: Package ReviewAssignee: Peter Lemenkov <lemenkov>
Status: ASSIGNED --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: cristian.ciupitu, i, kadishmal, lemenkov, misc, pahan
Target Milestone: ---Flags: lemenkov: fedora‑review?
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:

Description Esen Sagynov 2010-12-01 02:19:39 EST
Spec URL: http://sourceforge.net/projects/cubrid/files/CUBRID%20R3.0/cubrid.spec/download
SRPM URL: http://sourceforge.net/projects/cubrid/files/CUBRID%20R3.0/CUBRID-8.3.0.0337-el5.src.rpm/download
Description: CUBRID is an open source database management system highly optimized for Web applications distributed under the GPL License version 2.0 or higher. For more information visit http://www.cubrid.org.

Hi! My name is Esen Sagynov. I am a CUBRID Project Manager. This is the first time I registered at Red Hat Bugzilla, so I need a sponsor. On behalf of the CUBRID Database Project, I plan to submit CUBRID RPM package to Fedora Repository.

CUBRID as a project distributes its database in different packages including .sh, .rpm, .srpm, and the .tar.gz. source code. Above I linked to the original CUBRID-8.3.0.0337-el5.src.rpm SRPM issues by CUBRID.org. Obviously, this package includes its own cubrid.spec which does not show any errors after rpmlint but gives about 275 warnings.

1) 272 warnings can be ignored as they indicate on comments within the .spec file. There are left for further use by CUBRID developers.
2) 3 errors say:
***************************
cubrid.spec:18: W: unversioned-explicit-provides cubrid
cubrid.spec:20: W: hardcoded-packager-tag cubrid
cubrid.spec:40: W: rpm-buildroot-usage %build CUBRID_COMMON_CONFIGURE="--prefix=%{buildroot}/opt/cubrid"
cubrid.spec:45: W: configure-without-libdir-spec
***************************
18: This http://bit.ly/hPzuCN review says "unversioned-explicit-provides" can be ignored.
20: According to this http://bit.ly/gS0DmN review, I should drop the Packager tag. This is done in the modified cubrid.spec I give below.
40: CUBRID needs to use %{buildroot} to generate the --prefix value which is later used in ./configure.
45: CUBRID does not need to indicate %{_libdir}.

If it helps, based on these I uploaded the modified version of cubrid.spec here http://sourceforge.net/projects/cubrid/files/CUBRID%20R3.0/spec-modified/cubrid.spec/download which does not include the comments and the Packager tag.

I would prefer to use the original cubrid.spec distributed together with the original SRPM by CUBRID. But let me know your opinion.
Comment 1 Michael Scherer 2012-03-25 07:29:14 EDT
It seems the url is no longer valid.
Comment 2 Esen Sagynov 2012-03-26 09:03:15 EDT
The files have been moved to the following folder:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/

The source code can be downloaded from:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/CUBRID-8.4.1.1018.src.tar.gz/download

or

http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/CUBRID-8.4.1.1018-el5.src.rpm/download

The spec file is located at:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/cubrid.spec/download

We have managed in the meantime by using the src.tar.gz file in the above link and the cubrid.spec file to create cubrid yum packages for fedora 13-16 and centos 6.0 and above. Users can install cubrid, php-cubrid and python-cubrid by running the command specified in:
http://www.cubrid.org/yum_repository

and then "yum install cubrid".

The question that remains is what do we need to do to obtain CUBRID's submission into the official yum repositories ?
Comment 3 Michael Scherer 2012-03-26 11:14:20 EDT
As i suppose you already found the documentation on https://fedoraproject.org/wiki/Join_the_package_collection_maintainers since you followed it so far, you need to find someone to sponsor you, and to produce a spec file compliant for fedora. 

I can do help to see if the spec is compliant, but I cannot sponsor you ( I am not a sponsor ), so I can only direct you to 
https://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group 

Maybe try to see on fedora-devel mailling list, or on irc ?

For the spec :
- Vendor:        %{cubrid_vendor}
- Packager:  

both should be removed from the spec, if submitted to fedora

- the %description should be improved

- there should be a systemd file

- the %postun should not remove the configuration, and in fact, there is lots of thing that should not be done in %postun or %post and that your spec do

( for example, removing the config in /etc/curbic is a big "no" as it prevent upgrade :/ )

there is lots of thing to fix, and so I would suggest to take a ook at the packaging policy, to try to understand them, etc.
Comment 4 Jason Tibbitts 2012-04-24 19:05:16 EDT
The package from comment 2 fails to build for me in rawhide:

checking for java home... configure: error: set your JAVA_HOME environment variable.

I guess it is missing some build dependency.  Here is a scratch build:
  http://koji.fedoraproject.org/koji/taskinfo?taskID=4020424

Please clear the whiteboard if proving a package which builds.
Comment 5 Esen Sagynov 2012-04-25 05:35:36 EDT
Thank you Michael and Jason for helping us.

Before looking for a sponsor, I will try to resolve all existing issues to obtain Fedora compliant spec. Then will look for a sponsor.

Regarding JAVA_HOME error, you are right. Even though CUBRID has no dependency on Java (implemented purely in C), as a part of the source code comes our CUBRID JDBC driver source code. By default, JDBC source code is also built along with the CUBRID source code. Therefore, JDK is necessary to successfully build CUBRID 8.4.1 source.

The following is the dependency list.

BuildRequires: gcc-c++
BuildRequires: elfutils-libelf-devel
BuildRequires: ncurses-devel
BuildRequires: libstdc++-devel
BuildRequires: glibc-devel
BuildRequires: java-sdk >= 0:1.5.0    -> cubrid.spec misses this right now

We will update the spec along with the comments given by Michael, and highly likely will remove JDK dependency completely.

Thank you for you assistance!
Comment 6 Esen Sagynov 2012-05-31 06:01:18 EDT
Hello Michael and Jason,

We have finalized our cubrid.spec and made big changes to how things get executed. We followed completely all the guidelines (if we missed something, please point us, we'll do our best to resolve them as well).

Here is the new spec:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/Fedora-RPM/cubrid.spec/download

Source code:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/Fedora-RPM/cubrid-8.4.1.2032.tar.gz/download

RPM for F16 x64:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/Fedora-RPM/cubrid-8.4.1.2032-2032.fc16.x86_64.rpm/download

Other files are available at:
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/Fedora-RPM/

We have made changes to remove all the errors. After running rmplint on cubrid.spec there is only 1 error left which is part of how CUBRID package works: /usr/lib path is hardcoded. We'll fix it in the coming release. Please see:
http://jira.cubrid.org/secure/attachment/12334/warnings-spec.txt

We also fixed most major warnings. Only unharmful warnings left:
- shared-lib-calls-exit (we know about this and will make changes in the coming version)
- no-documentation and no-manual-page-for-binary (we don't have man pages, yet)
- non-standard-uid, non-standard-gid, dangerous-command-in-%post and dangerous-command-in-%preun (since "cubrid" is not a standard user in Fedora, we also need chown and userdel for this purpose)
- devel-file-in-non-devel-package (some libs must be in the main package because CUBRID uses them, otherwise, CUBRID will not work; we moved all libs to devel package which were possible to move)
- dangling-symlink
- service-default-enabled

Please see:
http://jira.cubrid.org/secure/attachment/12331/warnings.txt
http://jira.cubrid.org/secure/attachment/12333/warnings-devel.txt
http://jira.cubrid.org/secure/attachment/12332/warnings-demodb.txt

Regarding Jason's JAVA_HOME related issue, we added the dependency for openkdk devel 1.6 version. So the compilation should go smoothly.

Except all these, I believe we now have Fedora-almost-likable spec. If anyone of you has chance, please review our CUBRID spec. If it does comply with Fedora guidelines and those warnings can be ignored, we will start looking for a sponsor.

Thank you in advance!

Respectfully yours,
Esen Sagynov.
Comment 7 Cristian Ciupitu 2012-06-21 02:39:24 EDT
The packaging guidelines[1] say that gcc and gcc-c++ are part of the minimum build environment which means that you should remove them from the spec, including glibc-devel (a dependency of gcc) and libstdc++-devel (a dependency of gcc-c++).

You shouldn't delete the cubrid user when the package is uninstalled. The guidelines say: "we never remove users or groups created by packages"[2].

Regarding the non-standard-uid/gid warning: why are so many files belonging to the cubrid user/group? Assign to cubrid only what's needed. There's no need to assign program files (executables, libraries) to cubrid, only data and settings.

Try moving {_bindir}/cubrid to a separate Source or in the main archive, instead of including it in the spec file.

Try replacing chkconfig and service commands from %post and %preun with the systemd equivalents.

I'm not sure about this, but you should remove the post install message in keeping with the Unix philosophy that "no news is good news".

P.S. my koji scratch build in case someone else wants to have a look at it - http://koji.fedoraproject.org/koji/taskinfo?taskID=4182512

[1] http://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2

[2] http://fedoraproject.org/wiki/Packaging:UsersAndGroups
Comment 8 Esen Sagynov 2012-06-21 02:50:15 EDT
Hello Cristian,

Thank you very much for your valuable input. We'll make the appropriate changes to the spec based on your feedback.
Comment 9 Esen Sagynov 2012-07-04 23:22:10 EDT
Hello Cristian,

We have updated the CUBRID spec based on your feedback.
http://sourceforge.net/projects/cubrid/files/CUBRID-8.4.1/Linux/Fedora-RPM/cubrid.spec/download

1) Removed gcc, gcc-c++, glibc-devel, and libstdc++-devel packages from the BuildRequires section.

2) Removed the “userdel” command, so "cubrid" user will remain after the package is uninstalled.

3) Set the root/root user/group for the executables and libraries.

4) Moved {_bindir}/cubrid inside the main source.

5) However, we did not replace "chkconfig" and service commands with "systemd" because when we did so the rpmlint gave out errors that we have files
in /etc/init.d.

I have read in http://fedoraproject.org/wiki/Packaging:SysVInitScript#Initscripts_in_addition_to_systemd_unit_files that the init.d scripts should be placed in a separate package, but without the /etc/init.d/cubrid file, the user would be limited to only start/stop/restart commands, while the full cubrid service offers many more options (such as viewing the status or creating a database, deleting a database, start/stop/restart database, compacting, etc.). Therefore, we need to keep "chkconfig".

6) Removed the message at the end to comply with Unix philosophy.

Please let us know if there is anything we can improve before looking for a sponsor.

Thank you to everyone!

Regards,
Esen Sagynov.
Comment 10 Cristian Ciupitu 2012-07-05 21:00:14 EDT
Verba volant, scripta manent, so I'll write here some of the ideas we talked about on #fedora-devel.

If the SPEC is changed, the %changelog should be updated and the release incremented, so that it's easier to determine that everybody has the right (latest) SPEC file. If the source code is changed, its URL should be changed, so that people would know if they have the right (latest) source code. And of course the version, release and Source0 fields of the SPEC need to be updated. As far as I know the release can be reset to 1, there's no need to increment it, too.

Since you're planning to support both Fedora 16 and 17 and there are differences between those systems, you can either propose two SPEC files or one SPEC file with conditionals in it. The SPEC file will ultimately be stored in a git repository with a branch for each Fedora version. In my humble opinion conditionals are recommended because there aren't many differences, but it's your choice.

The SysV scripts should be replaced with systemd units because that's the future[1]. Though you might want to keep them for EPEL (Enterprise Linux), because EL6 does not have systemd yet. If you use conditionals, you can package systemd units in Fedora>=16 and SysV scripts otherwise.

Regarding the extra functionality of your SysV script like creating a database or user, I would recommend putting it in another program, for example cubridadm. Then the user could run cubridadm createuser apache or cubridadm createdb website. If it's too much for a single program, you could split it like git into %{_libexecdir}/%{name}/cubridadm-createuser, %{_libexecdir}/%{name}/cubridadm-createdb and so on, then run these from cubridadm.

Regarding the strip commands from the SPEC, if they're really needed to prevent rpmlint warnings (or errors) add a comment specifying so.

Replace %{libdir} with the standard %{_libdir} macro [2]. Your location does not depend on the architecture (32 or 64 bit) even if you're storing there binaries.

Don't start the program after installation [3].

If possible, use a private /tmp in your systemd service unit [4].


P.S. You could inspire from PostgreSQL [5].


[1] http://fedoraproject.org/wiki/Features/SysVtoSystemd

[2] http://fedoraproject.org/wiki/Packaging:RPMMacros#Macros_mimicking_autoconf_variables

[3] http://fedoraproject.org/wiki/Packaging:Systemd#Why_don.27t_we....

[4] http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

[5] http://pkgs.fedoraproject.org/gitweb/?p=postgresql.git;a=tree;h=refs/heads/f17;hb=f17.
Comment 11 Cristian Ciupitu 2012-07-10 13:15:33 EDT
Regarding server administration, I've just noticed that MySQL has a mysqladmin [1] command which can be used to create databases among other things.

[1] http://dev.mysql.com/doc/en/mysqladmin.html
Comment 12 Esen Sagynov 2012-07-12 04:58:37 EDT
Hello Cristian,

First of all, thank you for your continuos support on IRC. You feedback was very valuable for us to improve our CUBRID spec.

Below please find our last changes we've made according to your comments.

1) Regarding macros, we've replaced %{_prefix}/share/ with %{_datarootdir} and %{_prefix}/include -> %{_includedir}

2) "Some files under /usr/include and share are owned by cubrid even if they shouldn't." /usr/include directory is not owned by cubrid user. Only share dir was. But when we tried to chown root:root, we found out that cubrid master service checks if the files are owned by the user who is running the process. When root:root, the cubrid master service fails to load saying “Current user does not match CUBRID user”. Therefore, we had to roll back and chown cubrid:cubrid the shared files. We have reported this issues in our Issue Tracker, so we will look into it in the future version.
 
4) Regarding "devel-file-in-non-devel-package", like I explained before some libs must be in the main package because CUBRID uses them, otherwise, CUBRID will not work; we moved all libs to devel package which were possible to move.

5) Regarding, "put all commands under one giant command command like git does", the "cubrid" command actually does exactly that. This is that giant command.

6) “strip --strip-unneded”: we have completely removed strip commands, which now gives us only warnings saying "W: unstripped-binary-or-object".

7) This allows us at least have the debuginfo package created and it has no errors related to "empty-debuginfo-package".

8) We now keep changelogs up to date. Also spec release number is always UP'ed and file version is updated if necessary.

9) According to your suggestion, we added conditionals to handle different Java versions for different versions of Fedora.

10) For new Fedora we use systemd now, and for old including RH distributions use "SysV scripts".

11) "Replace %{libdir} with the standard %{_libdir} macro". As I explained before, we cannot do this in this version because we have a hardcoded /usr/lib path which is used even on 64-bit system architecture. We will fix this in the CUBRID core in the future version.

12) We no longer start the program/service after installation.

13) "If possible, use a private /tmp in your systemd service unit". We didn't add "PrivateTmp=true" because "cubrid master" process failed to start if this line was set in cubrid.service.

I am glad that so far CUBRID package is being successfully built at Fedora. Please let me know if there is anything we can do more to improve the CUBRID spec.

Thank you Cristian!

Regards,
Esen Sagynov.
Comment 13 Cristian Ciupitu 2012-07-12 07:18:10 EDT
I redownloaded cubrid.spec[1] then the source files using `spectool --get-files ~/rpmbuild/SPECS/cubrid.spec`. Unfortunately `tar tzf cubrid-8.4.1.2032.3.tar.gz` says:

    gzip: stdin: unexpected end of file
    tar: Unexpected EOF in archive
    tar: Error is not recoverable: exiting now

[1] http://switch.dl.sourceforge.net/project/cubrid/CUBRID-8.4.1/Linux/Fedora-RPM/cubrid.spec
Comment 14 Michael Scherer 2012-07-12 13:59:54 EDT
The spectool --get-files command work ok for me, and the file is correct. Can you look with file if that's not some html error message ? ( and then, look at it ) ?
Comment 15 Michael Scherer 2012-07-12 14:01:18 EDT
Oups, didn't look at all output, in fact, it show the list of file and then the error message. SO i also have the same issue.
Comment 16 Esen Sagynov 2012-07-13 05:57:08 EDT
Dear Cristian and Michael,

We've just checked the archive. For some reason Sf.net didn't upload the end of file. We've uploaded the file again, and it's not ok. Please verify.
Comment 17 Esen Sagynov 2012-07-13 05:58:51 EDT
"now" ok.
Comment 19 Esen Sagynov 2012-07-19 05:02:21 EDT
Cristian, hello!

What's the next step? What should we do now?
Comment 20 Cristian Ciupitu 2012-07-22 23:34:06 EDT
Sorry for not providing feedback earlier, for some reason I was under the impression that the ball is in your court and then I got caught up.

I run rpmlint on all the packages from above and after some sorting and
deduplication, got the following:

  25 packages and 0 specfiles checked; 10 errors, 1465 warnings.

  cubrid.i686: E: shlib-with-non-pic-code /usr/lib/libcubrid.so.8.4.1
  cubrid.i686: E: shlib-with-non-pic-code /usr/lib/libcubridcs.so.8.4.1
  cubrid.i686: E: shlib-with-non-pic-code /usr/lib/libcubridsa.so.8.4.1

This migt be a blocker because it might cause issues with SELinux, but
I'm not sure.

  cubrid.i686: W: dangerous-command-in-%post chown
  cubrid.x86_64: W: dangerous-command-in-%post chown
  cubrid-demodb.i686: W: dangerous-command-in-%post chown
  cubrid-demodb.x86_64: W: dangerous-command-in-%post chown

This is needed to make sure that the cubrid database files are owned by
the cubrid user, so I don't it's a problem.

  cubrid.i686: W: dangling-symlink /usr/share/cubrid/bin /usr/bin
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/bin /usr/bin
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/compat /usr/sbin
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/compat /usr/sbin
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/databases /var/cubrid/databases
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/databases /var/cubrid/databases
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/lib /usr/lib
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/lib /usr/lib
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/log /var/cubrid/log
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/log /var/cubrid/log
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/tmp /var/cubrid/tmp
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/tmp /var/cubrid/tmp
  cubrid.i686: W: dangling-symlink /usr/share/cubrid/var /var/cubrid/var
  cubrid.x86_64: W: dangling-symlink /usr/share/cubrid/var /var/cubrid/var

Not a blocker.

  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libbrokeradmin.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libbrokeradmin.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcascci.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcascci.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcmdep.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcmdep.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcmstat.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcmstat.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcubrid.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcubrid.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcubridcs.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcubridcs.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcubridesql.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcubridesql.so
  cubrid.i686: W: devel-file-in-non-devel-package /usr/lib/libcubridsa.so
  cubrid.x86_64: W: devel-file-in-non-devel-package /usr/lib/libcubridsa.so

You said it won't work without including these files, so it's not a
blocker. After all, the author/packager knows better whats needed for
development and what not.

  cubrid.i686: W: no-documentation
  cubrid.x86_64: W: no-documentation
  cubrid-demodb.i686: W: no-documentation
  cubrid-demodb.x86_64: W: no-documentation
  cubrid-devel.i686: W: no-documentation
  cubrid-devel.x86_64: W: no-documentation
  cubrid.i686: W: no-manual-page-for-binary addvoldb
  cubrid.x86_64: W: no-manual-page-for-binary addvoldb
  cubrid.i686: W: no-manual-page-for-binary backupdb
  cubrid.x86_64: W: no-manual-page-for-binary backupdb
  cubrid.i686: W: no-manual-page-for-binary broker_changer
  cubrid.x86_64: W: no-manual-page-for-binary broker_changer
  cubrid.i686: W: no-manual-page-for-binary broker_log_converter
  cubrid.x86_64: W: no-manual-page-for-binary broker_log_converter
  cubrid.i686: W: no-manual-page-for-binary broker_log_runner
  cubrid.x86_64: W: no-manual-page-for-binary broker_log_runner
  cubrid.i686: W: no-manual-page-for-binary broker_log_top
  cubrid.x86_64: W: no-manual-page-for-binary broker_log_top
  cubrid.i686: W: no-manual-page-for-binary broker_monitor
  cubrid.x86_64: W: no-manual-page-for-binary broker_monitor
  cubrid.i686: W: no-manual-page-for-binary checkdb
  cubrid.x86_64: W: no-manual-page-for-binary checkdb
  cubrid.i686: W: no-manual-page-for-binary cm_admin
  cubrid.x86_64: W: no-manual-page-for-binary cm_admin
  cubrid.i686: W: no-manual-page-for-binary commdb
  cubrid.x86_64: W: no-manual-page-for-binary commdb
  cubrid.i686: W: no-manual-page-for-binary compactdb
  cubrid.x86_64: W: no-manual-page-for-binary compactdb
  cubrid.i686: W: no-manual-page-for-binary convert_password
  cubrid.x86_64: W: no-manual-page-for-binary convert_password
  cubrid.i686: W: no-manual-page-for-binary copydb
  cubrid.x86_64: W: no-manual-page-for-binary copydb
  cubrid.i686: W: no-manual-page-for-binary createdb
  cubrid.x86_64: W: no-manual-page-for-binary createdb
  cubrid.i686: W: no-manual-page-for-binary csql
  cubrid.x86_64: W: no-manual-page-for-binary csql
  cubrid.i686: W: no-manual-page-for-binary cub_admin
  cubrid.x86_64: W: no-manual-page-for-binary cub_admin
  cubrid.i686: W: no-manual-page-for-binary cub_auto
  cubrid.x86_64: W: no-manual-page-for-binary cub_auto
  cubrid.i686: W: no-manual-page-for-binary cub_broker
  cubrid.x86_64: W: no-manual-page-for-binary cub_broker
  cubrid.i686: W: no-manual-page-for-binary cub_cas
  cubrid.x86_64: W: no-manual-page-for-binary cub_cas
  cubrid.i686: W: no-manual-page-for-binary cub_commdb
  cubrid.x86_64: W: no-manual-page-for-binary cub_commdb
  cubrid.i686: W: no-manual-page-for-binary cub_ftproc
  cubrid.x86_64: W: no-manual-page-for-binary cub_ftproc
  cubrid.i686: W: no-manual-page-for-binary cub_job
  cubrid.x86_64: W: no-manual-page-for-binary cub_job
  cubrid.i686: W: no-manual-page-for-binary cub_jobsa
  cubrid.x86_64: W: no-manual-page-for-binary cub_jobsa
  cubrid.i686: W: no-manual-page-for-binary cub_js
  cubrid.x86_64: W: no-manual-page-for-binary cub_js
  cubrid.i686: W: no-manual-page-for-binary cub_master
  cubrid.x86_64: W: no-manual-page-for-binary cub_master
  cubrid.i686: W: no-manual-page-for-binary cub_sainfo
  cubrid.x86_64: W: no-manual-page-for-binary cub_sainfo
  cubrid.i686: W: no-manual-page-for-binary cub_server
  cubrid.x86_64: W: no-manual-page-for-binary cub_server
  cubrid.i686: W: no-manual-page-for-binary cubrid
  cubrid.x86_64: W: no-manual-page-for-binary cubrid
  cubrid.i686: W: no-manual-page-for-binary cubrid_app
  cubrid.x86_64: W: no-manual-page-for-binary cubrid_app
  cubrid.i686: W: no-manual-page-for-binary cubrid_broker
  cubrid.x86_64: W: no-manual-page-for-binary cubrid_broker
  cubrid.i686: W: no-manual-page-for-binary cubrid_esql
  cubrid.x86_64: W: no-manual-page-for-binary cubrid_esql
  cubrid.i686: W: no-manual-page-for-binary cubrid_rel
  cubrid.x86_64: W: no-manual-page-for-binary cubrid_rel
  cubrid.i686: W: no-manual-page-for-binary deletedb
  cubrid.x86_64: W: no-manual-page-for-binary deletedb
  cubrid.i686: W: no-manual-page-for-binary get_disk_compat
  cubrid.x86_64: W: no-manual-page-for-binary get_disk_compat
  cubrid.i686: W: no-manual-page-for-binary installdb
  cubrid.x86_64: W: no-manual-page-for-binary installdb
  cubrid.i686: W: no-manual-page-for-binary killtran
  cubrid.x86_64: W: no-manual-page-for-binary killtran
  cubrid.i686: W: no-manual-page-for-binary load_noopt
  cubrid.x86_64: W: no-manual-page-for-binary load_noopt
  cubrid.i686: W: no-manual-page-for-binary loaddb
  cubrid.x86_64: W: no-manual-page-for-binary loaddb
  cubrid.i686: W: no-manual-page-for-binary loadjava
  cubrid.x86_64: W: no-manual-page-for-binary loadjava
  cubrid.i686: W: no-manual-page-for-binary lockdb
  cubrid.x86_64: W: no-manual-page-for-binary lockdb
  cubrid.i686: W: no-manual-page-for-binary optimizedb
  cubrid.x86_64: W: no-manual-page-for-binary optimizedb
  cubrid.i686: W: no-manual-page-for-binary renamedb
  cubrid.x86_64: W: no-manual-page-for-binary renamedb
  cubrid.i686: W: no-manual-page-for-binary restoredb
  cubrid.x86_64: W: no-manual-page-for-binary restoredb
  cubrid.i686: W: no-manual-page-for-binary spacedb
  cubrid.x86_64: W: no-manual-page-for-binary spacedb
  cubrid.i686: W: no-manual-page-for-binary sqlx
  cubrid.x86_64: W: no-manual-page-for-binary sqlx
  cubrid.i686: W: no-manual-page-for-binary start_cubrid
  cubrid.x86_64: W: no-manual-page-for-binary start_cubrid
  cubrid.i686: W: no-manual-page-for-binary start_server
  cubrid.x86_64: W: no-manual-page-for-binary start_server
  cubrid.i686: W: no-manual-page-for-binary stop_cubrid
  cubrid.x86_64: W: no-manual-page-for-binary stop_cubrid
  cubrid.i686: W: no-manual-page-for-binary stop_server
  cubrid.x86_64: W: no-manual-page-for-binary stop_server
  cubrid.i686: W: no-manual-page-for-binary uc
  cubrid.x86_64: W: no-manual-page-for-binary uc
  cubrid.i686: W: no-manual-page-for-binary unloaddb
  cubrid.x86_64: W: no-manual-page-for-binary unloaddb

Documentation is nice, but it won't be the end of the world without it.
Though you should include the license text at least[1]. In this case, it
seems that the COPYING, CREDITS and README files should be included with
something like `%doc COPYING CREDITS README'.

  cubrid.i686: W: non-standard-gid /etc/cubrid cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cm.conf cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cm.conf cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cm.pass cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cm.pass cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cmdb.pass cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cmdb.pass cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cubrid.conf cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cubrid.conf cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cubrid.conf.large cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cubrid.conf.large cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cubrid.conf.small cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cubrid.conf.small cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cubrid_broker.conf cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cubrid_broker.conf cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/cubrid_ha.conf cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/cubrid_ha.conf cubrid
  cubrid.i686: W: non-standard-gid /etc/cubrid/diagstatustemplate.conf cubrid
  cubrid.x86_64: W: non-standard-gid /etc/cubrid/diagstatustemplate.conf cubrid

rpmls says the files are readable by anyone including the cubrid group,
so they could be owned by the root group, but this is not a blocker.

  cubrid.i686: W: non-standard-gid /usr/share/cubrid/bin cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/bin cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/compat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/compat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/conf cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/conf cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/databases cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/databases cubrid
  cubrid-demodb.i686: W: non-standard-gid /usr/share/cubrid/demo cubrid
  cubrid-demodb.x86_64: W: non-standard-gid /usr/share/cubrid/demo cubrid
  cubrid-demodb.i686: W: non-standard-gid /usr/share/cubrid/demo/demodb_objects cubrid
  cubrid-demodb.x86_64: W: non-standard-gid /usr/share/cubrid/demo/demodb_objects cubrid
  cubrid-demodb.i686: W: non-standard-gid /usr/share/cubrid/demo/demodb_schema cubrid
  cubrid-demodb.x86_64: W: non-standard-gid /usr/share/cubrid/demo/demodb_schema cubrid
  cubrid-demodb.i686: W: non-standard-gid /usr/share/cubrid/demo/make_cubrid_demo.sh cubrid
  cubrid-demodb.x86_64: W: non-standard-gid /usr/share/cubrid/demo/make_cubrid_demo.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/init.d cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/init.d cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/init.d/cubrid cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/init.d/cubrid cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/init.d/cubrid-ha cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/init.d/cubrid-ha cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/java cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/java cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/java/jspserver.jar cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/java/jspserver.jar cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/java/logging.properties cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/java/logging.properties cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/jdbc cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/jdbc cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/jdbc/JDBC-8.4.1.2032-cubrid.jar cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/jdbc/JDBC-8.4.1.2032-cubrid.jar cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/jdbc/cubrid_jdbc.jar cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/jdbc/cubrid_jdbc.jar cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/lib cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/lib cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/log cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/log cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/csql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/csql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/csql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/csql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/cubrid.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/cubrid.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/esql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/esql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/esql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/esql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/syntax.txt cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/utils.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/utils.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/en_US/utils.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/en_US/utils.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/csql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/csql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/csql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/csql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/esql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/esql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/esql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/esql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/syntax.txt cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/utils.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/utils.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/utils.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.euckr/utils.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8 cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8 cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/csql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/csql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/csql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/csql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/esql.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/esql.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/esql.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/esql.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/syntax.txt cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/utils.cat cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/utils.cat cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/utils.msg cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/msg/ko_KR.utf8/utils.msg cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/rpm cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/rpm cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.csh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.csh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.spec cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/rpm/cubrid.spec cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/check_reserved.sql cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/check_reserved.sql cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/README cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/README cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/common cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/common cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/common/common.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/common/common.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/scp_from.exp cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/scp_from.exp cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/scp_to.exp cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/scp_to.exp cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/ssh.exp cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/expect/ssh.exp cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_check_copylog.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_check_copylog.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_check_script.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_check_script.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_copylog.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_copylog.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_reset.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_reset.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_resume.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_resume.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_suspend.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_repl_suspend.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_set_apply_info.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/functions/ha_set_apply_info.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/scripts/ha/ha_make_slavedb.sh cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/scripts/ha/ha_make_slavedb.sh cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/tmp cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/tmp cubrid
  cubrid.i686: W: non-standard-gid /usr/share/cubrid/var cubrid
  cubrid.x86_64: W: non-standard-gid /usr/share/cubrid/var cubrid

I don't see a compelling reason for the files under /usr/share to be
owned by the cubrid group. Not a blocker, but it sure generates a lot of
rpmlint warnings.

  cubrid.i686: W: non-standard-uid /etc/cubrid cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cm.conf cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cm.conf cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cm.pass cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cm.pass cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cmdb.pass cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cmdb.pass cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cubrid.conf cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cubrid.conf cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cubrid.conf.large cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cubrid.conf.large cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cubrid.conf.small cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cubrid.conf.small cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cubrid_broker.conf cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cubrid_broker.conf cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/cubrid_ha.conf cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/cubrid_ha.conf cubrid
  cubrid.i686: W: non-standard-uid /etc/cubrid/diagstatustemplate.conf cubrid
  cubrid.x86_64: W: non-standard-uid /etc/cubrid/diagstatustemplate.conf cubrid

See above what I said about non-standard-gid.

  cubrid.i686: W: non-standard-uid /usr/share/cubrid/bin cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/bin cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/compat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/compat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/conf cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/conf cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/databases cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/databases cubrid
  cubrid-demodb.i686: W: non-standard-uid /usr/share/cubrid/demo cubrid
  cubrid-demodb.x86_64: W: non-standard-uid /usr/share/cubrid/demo cubrid
  cubrid-demodb.i686: W: non-standard-uid /usr/share/cubrid/demo/demodb_objects cubrid
  cubrid-demodb.x86_64: W: non-standard-uid /usr/share/cubrid/demo/demodb_objects cubrid
  cubrid-demodb.i686: W: non-standard-uid /usr/share/cubrid/demo/demodb_schema cubrid
  cubrid-demodb.x86_64: W: non-standard-uid /usr/share/cubrid/demo/demodb_schema cubrid
  cubrid-demodb.i686: W: non-standard-uid /usr/share/cubrid/demo/make_cubrid_demo.sh cubrid
  cubrid-demodb.x86_64: W: non-standard-uid /usr/share/cubrid/demo/make_cubrid_demo.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/init.d cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/init.d cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/init.d/cubrid cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/init.d/cubrid cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/init.d/cubrid-ha cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/init.d/cubrid-ha cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/java cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/java cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/java/jspserver.jar cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/java/jspserver.jar cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/java/logging.properties cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/java/logging.properties cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/jdbc cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/jdbc cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/jdbc/JDBC-8.4.1.2032-cubrid.jar cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/jdbc/JDBC-8.4.1.2032-cubrid.jar cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/jdbc/cubrid_jdbc.jar cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/jdbc/cubrid_jdbc.jar cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/lib cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/lib cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/log cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/log cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/csql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/csql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/csql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/csql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/cubrid.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/cubrid.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/esql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/esql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/esql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/esql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/syntax.txt cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/utils.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/utils.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/en_US/utils.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/en_US/utils.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/csql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/csql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/csql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/csql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/cubrid.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/esql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/esql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/esql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/esql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/syntax.txt cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/utils.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/utils.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/utils.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.euckr/utils.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8 cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8 cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/csql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/csql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/csql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/csql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/cubrid.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/esql.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/esql.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/esql.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/esql.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/syntax.txt cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/syntax.txt cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/utils.cat cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/utils.cat cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/utils.msg cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/msg/ko_KR.utf8/utils.msg cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/rpm cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/rpm cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.csh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.csh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.spec cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/rpm/cubrid.spec cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/check_reserved.sql cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/check_reserved.sql cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/README cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/README cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/common cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/common cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/common/common.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/common/common.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/scp_from.exp cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/scp_from.exp cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/scp_to.exp cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/scp_to.exp cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/ssh.exp cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/expect/ssh.exp cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_check_copylog.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_check_copylog.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_check_script.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_check_script.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_copylog.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_copylog.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_reset.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_reset.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_resume.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_resume.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_suspend.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_repl_suspend.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_set_apply_info.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/functions/ha_set_apply_info.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/scripts/ha/ha_make_slavedb.sh cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/scripts/ha/ha_make_slavedb.sh cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/tmp cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/tmp cubrid
  cubrid.i686: W: non-standard-uid /usr/share/cubrid/var cubrid
  cubrid.x86_64: W: non-standard-uid /usr/share/cubrid/var cubrid

See above what I said about non-standard-gid.

  cubrid.i686: W: shared-lib-calls-exit /usr/lib/libcubrid.so.8.4.1 _exit@GLIBC_2.0
  cubrid.x86_64: W: shared-lib-calls-exit /usr/lib/libcubrid.so.8.4.1 _exit@GLIBC_2.2.5
  cubrid.i686: W: shared-lib-calls-exit /usr/lib/libcubrid.so.8.4.1 exit@GLIBC_2.0
  cubrid.x86_64: W: shared-lib-calls-exit /usr/lib/libcubrid.so.8.4.1 exit@GLIBC_2.2.5
  cubrid.i686: W: shared-lib-calls-exit /usr/lib/libcubridesql.so.8.4.1 exit@GLIBC_2.0
  cubrid.x86_64: W: shared-lib-calls-exit /usr/lib/libcubridesql.so.8.4.1 exit@GLIBC_2.2.5

Not a packaging issue, just a quality issue.

  cubrid.src:13: E: hardcoded-library-path in %{_prefix}/lib

Because of this 64-bit libraries are packaged under /usr/lib instead of
/usr/lib64 and that's a no, no. I know it's not your fault as a
packager, but upstream needs to fix this.

  cubrid.src:90: W: configure-without-libdir-spec

I have no idea about this. Maybe you should use the %configure macro.

=====

If possible try renaming the loadjava command to something less generic.

Since you also need a sponsor (which I'm not, sorry for forgetting to
mention this), I would suggest helping with other reviews as this will
prove that you know what you're doing as a future packager. When I
started I got this comment:

 "First of all, as a sponsor I think you need to do more informal
  reviews. I see you have been already active otherwise, but that does
  not make up for review experience." [2]

[1] http://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License_Text

[2] https://bugzilla.redhat.com/show_bug.cgi?id=531544#c5
Comment 21 Christopher Meng 2013-07-02 21:29:30 EDT
Well, any news here?

My friends want to use this RDBMS on Fedora.

Hope you can go ahead.
Comment 22 Christopher Meng 2013-07-02 21:59:34 EDT
I provide some review of spec:

1. Please, do not use %define, Fedora now recommends %global instead of %define.

2. Please, don't define the Release tag like "%{release}%{?dist}", just replace it with 1%{?dist} is easy, right? You use about 30 chars space to define a macro of "1", jesus..

3. And for the Group tag, you can safely drop them.

4. I noticed that you have some systemd macros, but the judge is for f15, and please update.(I think you don't need to care about fedora 15 now. You can at least push it to f19 now.)

Ref: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Systemd

5. I can see autogen, so please double check the Requires, I guess this might not be built under mock

6. No need for rm -rf %{buildroot} in %install section

7. install should be with -p to preserve the timestamp.

8. Why %preun and %postun of -devel package have "-p /sbin/ldconfig"? Duplicated?

9. I think you don't need to remove the cubrid user when removing. mariadb and postgresql and many others don't do that.

10. As I've said before, cleanup the chkconfig and if else things.

11. No need to rm -rf %{buildroot} in %clean section.(RPM supports it since long time ago, please change your habit)

12. No need to %defattr(-,root,root,-) (RPM supports it since long time ago, please change your habit)

And:
%defattr(-,cubrid,cubrid,-)
%config(noreplace) %{_sysconfdir}/cubrid
%{cubridsharedata}/conf
%{cubridsharedata}/databases
%{cubridsharedata}/log
%{cubridsharedata}/tmp
%{cubridsharedata}/var

If you want to define your attributes, please use attr() in front of every file you want to specify.

13. No need to keep BuildRoot tag(RPM supports it since long time ago, please change your habit)

14. openjdk has 1.8 version now, please test.
Comment 23 Esen Sagynov 2013-07-02 22:56:56 EDT
Hello Christopher,

Thank you very much for your feedback. We have released a new version 9.1 of CUBRID Database where we have fixed many issues notified by Cristian and other members above.

I will take a look at each of your points and recheck our spec. Then will get back to you.
Comment 24 Michael Schwendt 2013-07-03 08:35:56 EDT
Just a drop by comment:


> 2. Please, don't define the Release tag like "%{release}%{?dist}",
> just replace it with 1%{?dist} is easy, right? You use about 30
> chars space to define a macro of "1", jesus..

The much better reason why not to complicate the Release tag is that the %{release} variable is defined by the Release tag already. You've had

  $ grep release cubrid.spec 
  %define release        4
  Release:       %{release}%{?dist}

and afterwards, %release would not be "4" anymore, but would get the value of whatever the full "Release" tag expands to, e.g. "4.fc19" depending on %dist. Similarly for variables defined by tags like Name -> %{name}, Version -> %{version}. Redefining those variables can make the spec file less clear.


> %define libdir          %{_prefix}/lib

> …
> %{libdir}/libcmstat.so
> %{libdir}/libbrokeradmin.so.%{cubrid_version}
> %{libdir}/libbrokeradmin.so.8
> …

Even if a future version will fix that indeed, till then it won't be acceptable to store arch-specific libs in /usr/lib instead of the default %{_libdir}.


> %{libdir}/libbrokeradmin.la

libtool archives ->
https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries


> %{libdir}/libcascci.so

https://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages
Comment 25 Esen Sagynov 2013-07-16 00:08:23 EDT
Hello,

We've updated the cubrid.spec considering your comments.
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid.spec/download

CUBRID Source code:
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid-9.1.0.0212.1.tar.gz/download

RPM for F19 x64:
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid-9.1.0.0212-1.fc19.i686.rpm/download

Other files are available at:
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/

Here is a summary of the changes:

1. Originally, we've created cubrid.spec to be compatible with both Fedora 13+ and CentOS. According to Christopher's comment, we've removed if/else statements for older Fedora releases and CentOS support. We will maintain a separate spec in our own YUM repository for CentOS and older versions of Fedora. Now only Fedora 17+ are supported.

2. Removed the duplicate ldconfig and the tags that are not necessary.

3. No more error messages, only warnings, except for *libcascci.so* being in the main package. We can't fix this at the moment due to how CUBRID works. It requires all .so libraries to be in the main package because they contains the actual code rather than being a symlink to versioned files. If the .so file is missing, then CUBRID will fail to start (library missing error).

Other than these we've tried to address all the issues you've commented on.

Results of rpmlint:
http://jira.cubrid.org/secure/attachment/12481/warnings.txt
http://jira.cubrid.org/secure/attachment/12482/warnings-spec.txt
http://jira.cubrid.org/secure/attachment/12479/warnings-devel.txt
http://jira.cubrid.org/secure/attachment/12478/warnings-demodb.txt

Please let me know if there is anything else we can do to improve the CUBRID spec.

Thank you Christopher and Michael!

Regards,
Esen Sagynov.
Comment 26 Christopher Meng 2013-07-16 01:02:05 EDT
Nice.

But I'm curious about these 2:

cubrid.x86_64: W: service-default-enabled /etc/init.d/cubrid
cubrid.x86_64: W: service-default-enabled /etc/init.d/cubrid

Why?
Comment 27 Esen Sagynov 2013-07-16 01:54:01 EDT
We may have missed it. We will look into it now.
Comment 28 Esen Sagynov 2013-07-16 03:26:15 EDT
Actually, the above linked warnings list file wasn't updated. Here is the latest file:
http://jira.cubrid.org/secure/attachment/15368/warnings.txt

It doesn't have the service related warning because there is no /etc/init.d/cubrid file any more on Fedora 15+. It's replaced by the cubrid.service file.

The rationale behind enabling CUBRID service on install is that no user will install CUBRID just because there is "cubrid" in the list of available packages. If they install CUBRID, they mean to use it, which means they need CUBRID Service to be started up on system boot. In fact, if I see MySQL package, they have enabled mysql service by default via /etc/rc.d/init.d/mysqld. Same goes with PostgreSQL's /etc/rc.d/init.d/postgresql.

Therefore, the cubrid.spec file contains the following two lines for adding and removing CUBRID service on install and uninstall, respectively:

// for removing it on uninstall
systemctl disable cubrid.service > /dev/null 2>&1
// for adding it on install
systemctl enable cubrid.service > /dev/null 2>&1
Comment 29 Christopher Meng 2013-07-16 04:23:29 EDT
I've seen many warnings of 

W: unstripped-binary-or-object 

Can you double check these files?

I think their permissions may be incorrect.
Comment 30 Esen Sagynov 2013-07-16 04:32:29 EDT
We've checked all the related files. They all have executable bit and yet the warning still occurs.
Comment 31 Christopher Meng 2013-07-16 04:46:25 EDT
Hmm...

I think it's the time to find a sponsor. I think cubird is something like firebird, and firebird just took about 3 months to get into Fedora, I think you should speed up :D

If you have any problems of find a sponsor, I can help. I don't want to see this review becomeing stalled.
Comment 32 Esen Sagynov 2013-07-16 05:47:26 EDT
Finally! Firebird took 3 month, we've spent 3 years. :)

We will start searching for a sponsor, but in the meantime if you can anyhow assist in this process or suggest anyone in the related topic or an idea, we would appreciate very much.
Comment 33 Michael Schwendt 2013-07-16 07:35:51 EDT
It would be an idea to follow the "Join the packagers" procedure and request fedorapeople web space for a much more convenient way to offer the src.rpm and spec file.


A couple of concerns, because the spec file is large:

* There are questionable macro definitions at the top. For example:

>  %global file_version   1

is used only once. In the Source0 URL. What's the benefit?

For an update of the software, you would need to touch three macros to construct a Source0 URL that needs to be parsed by a tool (with e.g. spectool -g) to get a download location you could use in a browser or with wget/curl. The Source0 tag currently includes a hardcoded "9.1.0", however, so the usage of macros here appears to be half-hearted.

> Version:       %{cubrid_version}.%{build_version}

This implicitly defines %{version} to get the same value. So, wherever you currently use %{cubrid_version}.%{build_version}, you could use %{version} instead. Unless the versioning scheme is very complicated, and then macros become a burden.

> %global cubrid_vendor  Search Solution Corporation

Not used anywhere.

> %global debug_package %{nil}

Why that?


> Requires:      expect
> Requires:      ncurses
> Requires:      csh
> Requires:      gc
> Requires:      lzo
> Requires:      pcre

https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires


> BuildRequires: glibc-devel

Harmless, but glibc-devel is supposed to be available in the minimum build environment as a dependency of gcc/gcc-c++.
https://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2


> %package devel 
> Requires:   %{name} = %{cubrid_version}.%{build_version}

That isn't strict enough for how Fedora does it:
https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package

Imagine you release a fix where you want the -devel package (or other subpackages) to be in sync with the base package.


> %package demodb 
> Group:      Development/Libraries

An unusual group for files stored below /usr/share. It might be an idea to not define those Group tags anymore (they are optional nowadays).

> Requires:   %{name} = %{cubrid_version}.%{build_version}

Same as with the -devel package.


> %build
> %ifarch x86_64
>     CFLAGS=" -m64 " 
>     CUBRID_COMMON_CONFIGURE="${CUBRID_COMMON_CONFIGURE} --enable-64bit"
> %endif

What about other 64-bit targets?


> ./autogen.sh
> ./configure ${CUBRID_COMMON_CONFIGURE}

autogen.sh but no %configure macro usage? See "rpm --eval %configure". If %configure cannot be used with this configure script, please add a comment in the spec file.


> %install

It's odd that this section is so long. Why is it necessary to install/adjust so many things here _after_ "make install"? Why doesn't "make install" do all that?


> find %{buildroot} -size 0 -delete

Hopefully you'll never need to include an empty file or touch one to include it as %ghost.


> %post devel -p /sbin/ldconfig

Not true. The package includes only headers. Even if it contained *.so symlinks for libs, running ldconfig would not be needed. It's a tool for the run-time linker.

> %postun devel -p /sbin/ldconfig

Same here.

> %post demodb 
> /sbin/ldconfig

It contains only files below /usr/share.

> %postun demodb 
> /sbin/ldconfig

Same here.

> %preun devel

An empty scriptlet?


The %preun section in the spec file is after "%post demodb". Sorting the scriptlets would increase readability.


The %files sections list many files with very generic file names (even headers such as %{_includedir}/dbi.h). It'll be a lot of fun to avoid conflicts with other packages.
Comment 34 Cristian Ciupitu 2013-07-16 16:18:18 EDT
I've tried to scratch build it on Fedora rawhide [1] and 19 [2][3] and
it failed on both:

	++ readlink -f /usr/bin/javac
	++ sed s:/bin/javac::
	+ export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64
	+ JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64
	+ ./autogen.sh
	** Running libtoolize
	./autogen.sh: line 9: libtoolize: command not found
	** ERROR: while running 'libtoolize --automake --copy'
	** ERROR: ./autogen.sh failed
	RPM build errors:
	error: Bad exit status from /var/tmp/rpm-tmp.6TFw7b (%build)
	    Bad exit status from /var/tmp/rpm-tmp.6TFw7b (%build)
	Child return code was: 1

What package has libtoolize?

	[ciupicri@hermes rpmbuild (cubrid *)]$ rpm -q -f `which libtoolize`
	libtool-2.4.2-7.fc18.x86_64

So you probably need to add

	BuildRequires: libtool

to `cubrid.spec`.


As a side note, I'd also suggest distributing the source code archived
with xz instead of gzip.  The gzip version has 49 MBs, while the xz one
has only 21 MBs. Even bzip2 would be nice since it has only 34 MBs.


[1] http://koji.fedoraproject.org/koji/taskinfo?taskID=5615349

[2] http://koji.fedoraproject.org/koji/taskinfo?taskID=5615419

[3] http://koji.fedoraproject.org/koji/taskinfo?taskID=5615421
Comment 35 Peter Lemenkov 2013-07-23 09:00:49 EDT
I'll review it.
Comment 36 Peter Lemenkov 2013-07-23 09:08:29 EDT
Esen, what's your FAS name?
Comment 37 Esen Sagynov 2013-07-23 23:59:02 EDT
Peter, it's "kadishmal". Cristian and Michael, we will go over your comments one by one, and update the spec.
Comment 38 Christopher Meng 2013-07-24 00:04:09 EDT
And I'll help~

Michael has prepared many problems need to be fixed :) In fact I also want to tell you about these, but I think you should find a sponsor at first.

Now let's start from comment 33
Comment 39 Esen Sagynov 2013-07-24 05:00:50 EDT
Response to Michael's comments. The spec file has been updated with the following changes.

>  %global file_version   1
> Version:       %{cubrid_version}.%{build_version}
> %global cubrid_vendor  Search Solution Corporation
> BuildRequires: glibc-devel
> Group:      Development/Libraries
> %post devel -p /sbin/ldconfig
> %postun devel -p /sbin/ldconfig
> %preun devel

Removed/updated.

> %package devel 
> Requires:   %{name} = %{cubrid_version}.%{build_version}

> That isn't strict enough for how Fedora does it:
https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package

> Imagine you release a fix where you want the -devel package (or other subpackages) to be in sync with the base package.

Updated.

> %global debug_package %{nil}

> Why that?

We had to add this line because it was gaving an RPM building error "no build id note found in" for cub_cmhttpd.

> %build
> %ifarch x86_64
> CFLAGS=" -m64 " 
> CUBRID_COMMON_CONFIGURE="${CUBRID_COMMON_CONFIGURE} --enable-64bit"
> %endif

> What about other 64-bit targets?

Which are the other 64-bit targets you are referring to?

> ./autogen.sh
> ./configure ${CUBRID_COMMON_CONFIGURE}

> autogen.sh but no %configure macro usage? See "rpm --eval %configure". If %configure cannot be used with this configure script, please add a comment in the spec file.

Added the following comment:

# %configure macro is disabled/missing because not all options are supported in CUBRID.
# For example, when passing "bindir" or "libdir" parameter will lead to an error
# (not supported feature).

> %install

> It's odd that this section is so long. Why is it necessary to install/adjust so many things here after "make install"? Why doesn't "make install" do all that?

Currently, in the original CUBRID spec "make install" installs all files in one directory. To submit to Fedora/Ubuntu we've created new specs (this spec for Fedora). In the new spec we've tried to place all files in their proper locations: (conf files in /etc/conf/cubrid, the variable files to /var/cubrid, the executables to /usr/bin, the libraries to /usr/lib or /usr/lib64 depending on architecture and so forth). This is why the install section is long.

> %post demodb 
> /sbin/ldconfig

> It contains only files below /usr/share.

> %postun demodb 
> /sbin/ldconfig

> Same here.

Updated.

> find %{buildroot} -size 0 -delete

> Hopefully you'll never need to include an empty file or touch one to include it as %ghost.

The source may have empty files (for example some optional configuration files). This was to remove warnings and possible empty files from the source.

> The %files sections list many files with very generic file names (even headers such as %{_includedir}/dbi.h). It'll be a lot of fun to avoid conflicts with other packages.

Yes, there are files which we have found to have similar names, but at this moment it's not possible to change them. If any serious conflict is found, we will put resources to fix them.

However, if you have any suggestion to avoid name conflicts, please let us know.
Comment 40 Esen Sagynov 2013-07-24 05:04:24 EDT
Cristian, we've added the libtool to the dependency list. It should work now. Please try and let us know if you encounter any issue.
Comment 41 Peter Lemenkov 2013-07-24 05:10:41 EDT
(In reply to Esen Sagynov from comment #37)
> Peter, it's "kadishmal". Cristian and Michael, we will go over your comments
> one by one, and update the spec.

Please make sure you're using the same email address for Bugzilla account and for FAS. It caused strange issues earlier. I advise you to change Bugzilla email to match FAS one.
Comment 42 Esen Sagynov 2013-07-24 05:31:23 EDT
Ok, I've just changed Bugzilla email to my FAS email.
Comment 43 Peter Lemenkov 2013-07-24 06:22:51 EDT
Unblocking FE-NEEDSPONSOR - I've just sponsored Esen.

Esen, could you please provide a successful build in Koji? That's just for starters.
Comment 44 Esen Sagynov 2013-07-24 06:26:26 EDT
Thank you Peter. I'm out of office right now. I will provide the build in Koji tomorrow morning when I get to my office. Is that ok?
Comment 45 Peter Lemenkov 2013-07-24 06:29:47 EDT
(In reply to Esen Sagynov from comment #44)
> Thank you Peter. I'm out of office right now. I will provide the build in
> Koji tomorrow morning when I get to my office. Is that ok?

Yes, sure.
Comment 46 Michael Schwendt 2013-07-24 16:10:23 EDT
> an RPM building error "no build id note found in" for cub_cmhttpd.

That ought to be explained in the spec file, at least:

  https://fedoraproject.org/wiki/Packaging:Debuginfo

Try to find out why you get that error? Does the build run "ld" instead of gcc/g++ when linking? Then try adding --build-id to the linker flags or run the compiler instead of ld.


> Which are the other 64-bit targets you are referring to?

Secondary 64-bit archs, such as ppc64, AArch64.


> The source may have empty files (for example some optional
> configuration files). This was to remove warnings and possible
> empty files from the source.

In the source or in the %buildroot? What empty "optional configuration files" get installed into the %buildroot only to delete them afterwards? It would be safer to delete them explicitly.


> if you have any suggestion to avoid name conflicts, please let us know.

On rather simple way is to put headers into a subdirectory of %includedir.
Comment 47 Esen Sagynov 2013-07-25 02:49:12 EDT
Peter, here is the build result on rawhide. Successful on both x86 and x64.
http://koji.fedoraproject.org/koji/taskinfo?taskID=5654320

I will now build locally on earlier versions starting from f19.
Comment 48 Esen Sagynov 2013-07-25 03:30:14 EDT
f19: http://koji.fedoraproject.org/koji/taskinfo?taskID=5654387.
Comment 49 Christopher Meng 2013-07-25 04:27:21 EDT
Can you tell us the latest SPEC/SRPM location?

Thanks.
Comment 52 Peter Lemenkov 2013-07-25 06:19:03 EDT
(In reply to Christopher Meng from comment #49)
> Can you tell us the latest SPEC/SRPM location?
> 
> Thanks.

http://kojipkgs.fedoraproject.org//work/tasks/4321/5654321/cubrid-9.1.0.0212-1.fc20.src.rpm
Comment 53 Esen Sagynov 2013-07-29 21:37:00 EDT
What's the next step?
Comment 54 Peter Lemenkov 2013-08-01 13:46:46 EDT
Ok, this package is rather big so i definitely missed something else. Here are the issues I found so far:

* First of all you must use %configure instead of ./configure. It sets all necessary variables (libdir, etc). if you'e insisting on using ./configure then please explain this.

* rpmling throws a lot of warnings about unstripped-binary-or-object. I advise you to fix ./configure usage as mentioned above and repeat building in Koji.

* Requires(post): systemd, Requires(preun): systemd, Requires(postun): systemd - these should be dropped. The only viable target w/o systemd is EPEL 6 (I personally don't recommend adding new packages into EPEL 5).

* "Requires: %{name}%{?_isa} = %{cubrid_version}.%{build_version}" is not enough. You should require %{release} as well. E.g. proper form is

"Requires: %{name}%{?_isa} = %{cubrid_version}.%{build_version}-%{release}"

I think I've got your idea here, however sometimes cubrill will be rebuilt by the robots, and they will blindly increase %{release} number.

* demodb has "%defattr(-,cubrid,cubrid,-)". Is it really necessary - to lock out demo (e.g. samples, publicly available in Internet) from a user which has shell access to the computer? I suppose this is a leftover and should be simply removed. Otherwise please explain this.

* Regarding "%defattr(-,cubrid,cubrid,-)" in the main %files section. I suppose it should be "%defattr(-,%{cubrid_user},%{cubrid_user},-)". Just for better consistency with other places where you setting permissions.
Comment 55 Michael Schwendt 2013-08-02 07:28:56 EDT
> E.g. proper form is
> 
> "Requires: %{name}%{?_isa} = %{cubrid_version}.%{build_version}-%{release}"

Why not simply

  Requires: %{name}%{?_isa} = %{version}-%{release}

?

Once a sane "Version" tag value has been constructed, there is a sane %{version} macro, too.
Comment 56 Esen Sagynov 2013-08-07 05:18:35 EDT
Hi,

> * First of all you must use %configure instead of ./configure. It sets all necessary variables (libdir, etc). if you'e insisting on using ./configure then please explain this.

Explained in the spec file.

# We cannot use (%)configure instead of (./)configure because
# (%)configure sets everything including `libdir`, `bindir`, etc.
# If `libdir` is set, CUBRID installation will fail because at this
# moment CUBRID does not support this option. In fact, there are
# other options which are also not supported. CUBRID requires
# most of its libraries to exist under the same directory where
# it is installed. Thus, because we insist on using `./configure`,
# `rpmlint` generates the following warning mesage:
# `W: configure-without-libdir-spec`. This is expected.

> * rpmling throws a lot of warnings about unstripped-binary-or-object. I advise you to fix ./configure usage as mentioned above and repeat building in Koji.

Yes, we know about these warnings, but for some reason they don't get resolved even if we strictly check all binaries and make them executable. We tried to strip everything and yet the warning still occurs.

> * Requires(post): systemd, Requires(preun): systemd, Requires(postun): systemd - these should be dropped. The only viable target w/o systemd is EPEL 6 (I personally don't recommend adding new packages into EPEL 5).

All dropped.

> * "Requires: %{name}%{?_isa} = %{cubrid_version}.%{build_version}" is not enough. You should require %{release} as well.

Replaced with "Requires: %{name}%{?_isa} = %{version}-%{release}".

> * demodb has "%defattr(-,cubrid,cubrid,-)". Is it really necessary - to lock out demo (e.g. samples, publicly available in Internet) from a user which has shell access to the computer? I suppose this is a leftover and should be simply removed. Otherwise please explain this.

Added comments to explain this.


# `demodb` demo database is not a sample database publicly
# available on the Internet. It is just a demo database
# distributed together with CUBRID binaries. `demodb`
# database can be installed only by cubrid user, and
# since the related files are stored in
# `/usr/share/cubrid/demo`, it is logical that they are
# owned by the same cubrid user.

> * Regarding "%defattr(-,cubrid,cubrid,-)" in the main %files section. I suppose it should be "%defattr(-,%{cubrid_user},%{cubrid_user},-)". Just for better consistency with other places where you setting permissions.

Fixed.

Latest spec is at http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid.spec/download.

F19 koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=5788595
RPM: http://kojipkgs.fedoraproject.org//work/tasks/8596/5788596/cubrid-9.1.0.0212-2.fc19.x86_64.rpm

F18 koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=5788647
http://kojipkgs.fedoraproject.org//work/tasks/8648/5788648/cubrid-9.1.0.0212-2.fc18.x86_64.rpm

rawhide build fails at this moment http://koji.fedoraproject.org/koji/taskinfo?taskID=5788704 because, as I've noticed, armv7hl architecture was added which is not supported by CUBRID.
Comment 57 Michael Schwendt 2013-08-07 06:18:53 EDT
> rawhide build fails
> armv7hl architecture was added which is not supported by CUBRID.

Follow:
https://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Build_Failures


> %global debug_package %{nil}

Please, during the package review process don't disable the -debuginfo package.
Comment 58 Esen Sagynov 2013-08-07 06:21:48 EDT
Ok, we will make the appropriate changes.
Comment 59 Michael Schwendt 2013-08-07 06:24:44 EDT
> We tried to strip everything and yet the warning still occurs.

You are not supposed to strip anything, since that is done during -debuginfo extraction by rpmbuild.

Stripping manually seems to work, though (just for testing):

$ file cm_admin 
cm_admin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x526ce58d29207bb44fda19c7ad91e43471e1afbe, not stripped
$ strip cm_admin
$ file cm_admin 
cm_admin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x526ce58d29207bb44fda19c7ad91e43471e1afbe, stripped
$
Comment 60 Esen Sagynov 2013-08-09 06:53:01 EDT
Hello Michael,

We don't strip anything now, and enabled debuginfo. No more "unstripped-binary-or-object" warning.

ARM architecture is excluded.

We have also added many comments to spec to explain every warning message which are generated by rpmlint on SRPM/RPM files. All covered and expected.

The new spec is at
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid.spec/download.

Related CUBRID source archive
http://sourceforge.net/projects/cubrid/files/CUBRID-9.1.0/Linux/Fedora-RPM/cubrid-9.1.0.0212.3.tar.gz/download.

F19 success:
http://koji.fedoraproject.org/koji/taskinfo?taskID=5797523

Rawhide success:
http://koji.fedoraproject.org/koji/taskinfo?taskID=5797582.
Comment 61 Esen Sagynov 2013-08-27 23:53:15 EDT
Hello Peter,

How do we proceed with CUBRID packaging? Is there anything else we should do to prepare CUBRID for packaging?
Comment 62 Peter Lemenkov 2013-08-27 23:58:55 EDT
(In reply to Esen Sagynov from comment #61)
> Hello Peter,
> 
> How do we proceed with CUBRID packaging? Is there anything else we should do
> to prepare CUBRID for packaging?

Hello Esen! Sorry for the delay - I was busy a bit. Will be back shortly.
Comment 63 Michael Schwendt 2013-08-30 17:39:59 EDT
A few more comments:


* The Explicit Requires from comment 33 should be reviewed and dropped in favour of the automatic dependencies on library names. At least for ncurses, gc, lzo, and pcre I see corresponding -devel BuildRequires and assume they result in automatic libname deps:  https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

Where there are no automatic deps, add comments as explained in the guidelines, and also re-review the BuildRequires.

For example, "PCRE library is disabled" appears in the build output.


* Several libs are bundled. Configure output says the "builtin" lib will be used -> https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries


* Have you tried running the "fedora-review" tool for this package yet?


> BuildRequires: systemd-units

Prefer "BuildRequires: systemd" which is the package that contains the RPM macros.


> build.log

It's huge. In many places Fedora's compiler flags aren't used.
https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags

In some places the build output is not verbose. Hence one cannot verify whether the compiler flags. I haven't checked how to make it more verbose. Sometimes one can configure with --disable-silent-rules, in other cases running "V=1 make …" works.
Comment 64 Esen Sagynov 2013-09-01 22:41:57 EDT
Michael, thank you for your comment. We're on it.
Comment 65 Christopher Meng 2013-11-08 08:45:01 EST
ping after 2 months.