Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backward compatibility with 0.6.0-rc2 #78

Closed
cdunn2001 opened this issue Nov 17, 2014 · 4 comments
Closed

Backward compatibility with 0.6.0-rc2 #78

cdunn2001 opened this issue Nov 17, 2014 · 4 comments
Assignees

Comments

@cdunn2001
Copy link
Contributor

I need help with this right away. Anybody? ~cd

Hi Christopher,

I have tried to package 0.7.0 using the current tip and it seems that it
could be a backward-compatibility problem. The following log is what
symbols where defined in 0.6.0~rc2 and what are now defined. Basically,
take a look at MISSING tags:

@@ -72,7 +72,7 @@
  (c++)"Json::Value::CZString::index() const@Base" 0.6.0~rc2
  (c++)"Json::Value::CZString::isStaticString() const@Base" 0.6.0~rc2
  (c++)"Json::Value::CZString::operator<(Json::Value::CZString const&)
const@Base" 0.6.0~rc2
- (c++)"Json::Value::CZString::operator=(Json::Value::CZString
const&)@Base" 0.6.0~rc2
+#MISSING: 0.7.0~git20141116-1#
(c++)"Json::Value::CZString::operator=(Json::Value::CZString
const&)@Base" 0.6.0~rc2
  (c++)"Json::Value::CZString::operator==(Json::Value::CZString const&)
const@Base" 0.6.0~rc2
  (c++)"Json::Value::CZString::swap(Json::Value::CZString&)@Base" 0.6.0~rc2
  (c++)"Json::Value::CZString::~CZString()@Base" 0.6.0~rc2
@@ -141,7 +141,7 @@
  (c++)"Json::Value::operator!=(Json::Value const&) const@Base" 0.6.0~rc2
  (c++)"Json::Value::operator<(Json::Value const&) const@Base" 0.6.0~rc2
  (c++)"Json::Value::operator<=(Json::Value const&) const@Base" 0.6.0~rc2
- (c++)"Json::Value::operator=(Json::Value const&)@Base" 0.6.0~rc2
+#MISSING: 0.7.0~git20141116-1# (c++)"Json::Value::operator=(Json::Value
const&)@Base" 0.6.0~rc2
  (c++)"Json::Value::operator==(Json::Value const&) const@Base" 0.6.0~rc2
  (c++)"Json::Value::operator>(Json::Value const&) const@Base" 0.6.0~rc2
  (c++)"Json::Value::operator>=(Json::Value const&) const@Base" 0.6.0~rc2

Are you removed those method definition for any reason?. If those
changes could affect to an user I think I have to increase the SONAME in
Debian version, in order to avoid conflicts. What do you think?

@cdunn2001
Copy link
Contributor Author

% git diff -w svn-release-0.6.0-rc2 32009b1 -- include/json/value.h
...
-         CZString &operator =( const CZString &other );
+    CZString &operator=(CZString other);
...
-      Value &operator=( const Value &other );
+  Value &operator=(Value other);

Yes, those 2 signatures have changed. Not good. (I am comparing tag svn-release-0.6.0-rc2 with commit 32009b17e4d35a812575cfcf6bae9ec49fc67446, which preceded our Clang reformatting.)

Let me see if I can add those back and delegate to the others. I'm not sure whether that would actually compile...

@cdunn2001
Copy link
Contributor Author

Billy, 45cd949 broke binary compatibility. I don't want Debian to bump the .so version. So we have to consider some choices:

A. Revert this on the pre-C++11 branch.
B. Keep it, but add the old signatures too, and let those delegate to the new ones. Will that compile?
C. Keep it as is. Maybe it's not a real problem. (But I don't think we can convince Debian folks of that.)

I'm going with A for now. What do you think?

cdunn2001 added a commit that referenced this issue Nov 17, 2014
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
@BillyDonahue
Copy link
Contributor

I would go with A as well. Revert on the branch Debian is pulling.
Or bump the patchlevel on the .so.

I didn't realize Debian would be pulling from a trunk branch and expecting
binary compatibility.
That seems like a pretty fragile setup!

On Mon, Nov 17, 2014 at 12:57 AM, Christopher Dunn <notifications@github.com

wrote:

Billy, 45cd949
45cd949
broke binary compatibility. I don't want Debian to bump the .so version. So
we have to consider some choices:

A. Revert this on the pre-C++11 branch.
B. Keep it, but add the old signatures too, and let those delegate to the
new ones. Will that compile?
C. Keep it as is. Maybe it's not a real problem. (But I don't think we can
convince Debian folks of that.)

I'm going with A for now. What do you think?


Reply to this email directly or view it on GitHub
#78 (comment)
.

@cdunn2001
Copy link
Contributor Author

Yes, I think worrying about binary compatibility unwise. But in our case, it was easy. I'll tag that as 0.6.0.

I'm about to tag the tip as 0.7.0. Then I'll bump to 1.0.0 on master and call it officially C++11 only.

cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Feb 9, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Feb 10, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Feb 11, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Feb 11, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Feb 11, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Feb 15, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Feb 18, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 3, 2015
This reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Mar 3, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 3, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 5, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 5, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 6, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 7, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 8, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 9, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 12, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 15, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 15, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Mar 31, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit that referenced this issue Apr 11, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  #78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Apr 19, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
cdunn2001 added a commit to cdunn2001/jsoncpp that referenced this issue Jun 19, 2015
This partially reverts commit 45cd949.

Ignored ValueInternal* changes, since those did not produce symbols for
Debian build. (They must not have used the INTERNAL stuff.)

Ignored CZString changes since those are private (and sizeof struct did
not change).

  open-source-parsers#78

Conflicts:
	include/json/value.h
	src/lib_json/json_internalarray.inl
	src/lib_json/json_internalmap.inl
	src/lib_json/json_value.cpp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants